From cac9ee7685078bf494dd524dfb943cfc19b9ec28 Mon Sep 17 00:00:00 2001 From: Pavel <68122101+red-prig@users.noreply.github.com> Date: Fri, 2 Dec 2022 11:39:14 +0300 Subject: [PATCH] + --- vulkan/vDevice.pas | 6 ++++++ vulkan/vMemory.pas | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/vulkan/vDevice.pas b/vulkan/vDevice.pas index 422fc0d6..dbc613a8 100644 --- a/vulkan/vDevice.pas +++ b/vulkan/vDevice.pas @@ -226,6 +226,7 @@ function storageBuffer16Bit:Boolean; function uniformBuffer16Bit:Boolean; function storageInputOutput16:Boolean; function sparseBinding:Boolean; +function sparseResidencyAliased:Boolean; var limits:record @@ -340,6 +341,11 @@ begin Result:=Boolean(VulkanApp.FDeviceFeature.sparseBinding); end; +function sparseResidencyAliased:Boolean; +begin + Result:=Boolean(VulkanApp.FDeviceFeature.sparseResidencyAliased); +end; + procedure FillDeviceProperties(physicalDevice:TVkPhysicalDevice); var prop:TVkPhysicalDeviceProperties2; diff --git a/vulkan/vMemory.pas b/vulkan/vMemory.pas index 325e4725..997fb560 100644 --- a/vulkan/vMemory.pas +++ b/vulkan/vMemory.pas @@ -142,7 +142,7 @@ begin cinfo:=Default(TVkBufferCreateInfo); cinfo.sType :=VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; - cinfo.size :=4*1024; + cinfo.size :=64*1024; cinfo.usage :=ord(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) or ord(VK_BUFFER_USAGE_TRANSFER_SRC_BIT); cinfo.sharingMode:=VK_SHARING_MODE_EXCLUSIVE; cinfo.pNext :=@buf_ext; @@ -163,12 +163,14 @@ var FHandle:TVkBuffer; begin Result:=0; + if not sparseBinding then Exit; + mr:=Default(TVkMemoryRequirements); cinfo:=Default(TVkBufferCreateInfo); cinfo.sType :=VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; - cinfo.flags :=ord(VK_BUFFER_CREATE_SPARSE_BINDING_BIT) or ord(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) or ord(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT); - cinfo.size :=4*1024; + cinfo.flags :=ord(VK_BUFFER_CREATE_SPARSE_BINDING_BIT); + cinfo.size :=64*1024; cinfo.usage :=ord(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) or ord(VK_BUFFER_USAGE_TRANSFER_SRC_BIT); cinfo.sharingMode:=VK_SHARING_MODE_EXCLUSIVE; cinfo.pNext :=@buf_ext;