[Mesa-dev] [PATCH 2/3] radv: Add support for VK_KHR_dedicated_allocation.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Sat Jul 15 00:08:00 UTC 2017


Signed-off-by: Bas Nieuwenhuizen <basni at google.com>
---
 src/amd/vulkan/radv_device.c           | 36 ++++++++++++++++++++++++++++++++--
 src/amd/vulkan/radv_entrypoints_gen.py |  1 +
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index c5d66b8bc6d..59c4ea8448e 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -141,6 +141,10 @@ static const VkExtensionProperties common_device_extensions[] = {
 		.extensionName = VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
 		.specVersion = 1,
 	},
+	{
+		.extensionName = VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
+		.specVersion = 1,
+	},
 };
 
 static VkResult
@@ -2072,8 +2076,8 @@ VkResult radv_AllocateMemory(
 		*pMem = VK_NULL_HANDLE;
 		return VK_SUCCESS;
 	}
-	const VkDedicatedAllocationMemoryAllocateInfoNV *dedicate_info =
-		vk_find_struct_const(pAllocateInfo->pNext, DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV);
+	const VkMemoryDedicatedAllocateInfoKHR *dedicate_info =
+		vk_find_struct_const(pAllocateInfo->pNext, MEMORY_DEDICATED_ALLOCATE_INFO_KHR);
 
 	mem = vk_alloc2(&device->alloc, pAllocator, sizeof(*mem), 8,
 			  VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
@@ -2217,6 +2221,20 @@ void radv_GetBufferMemoryRequirements2KHR(
 {
 	radv_GetBufferMemoryRequirements(device, pInfo->buffer,
                                         &pMemoryRequirements->memoryRequirements);
+
+	vk_foreach_struct(ext, pMemoryRequirements->pNext) {
+		switch (ext->sType) {
+		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR: {
+			VkMemoryDedicatedRequirementsKHR *req =
+			               (VkMemoryDedicatedRequirementsKHR *) ext;
+			req->requiresDedicatedAllocation = false;
+			req->prefersDedicatedAllocation = req->requiresDedicatedAllocation;
+			break;
+		}
+		default:
+			break;
+		}
+	}
 }
 
 void radv_GetImageMemoryRequirements(
@@ -2239,6 +2257,20 @@ void radv_GetImageMemoryRequirements2KHR(
 {
 	radv_GetImageMemoryRequirements(device, pInfo->image,
                                         &pMemoryRequirements->memoryRequirements);
+
+	vk_foreach_struct(ext, pMemoryRequirements->pNext) {
+		switch (ext->sType) {
+		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR: {
+			VkMemoryDedicatedRequirementsKHR *req =
+			               (VkMemoryDedicatedRequirementsKHR *) ext;
+			req->requiresDedicatedAllocation = false;
+			req->prefersDedicatedAllocation = req->requiresDedicatedAllocation;
+			break;
+		}
+		default:
+			break;
+		}
+	}
 }
 
 void radv_GetImageSparseMemoryRequirements(
diff --git a/src/amd/vulkan/radv_entrypoints_gen.py b/src/amd/vulkan/radv_entrypoints_gen.py
index d47a7011197..d305a07e7d7 100644
--- a/src/amd/vulkan/radv_entrypoints_gen.py
+++ b/src/amd/vulkan/radv_entrypoints_gen.py
@@ -43,6 +43,7 @@ supported_extensions = [
    'VK_KHR_xcb_surface',
    'VK_KHR_xlib_surface',
    'VK_KHR_get_memory_requirements2',
+   'VK_KHR_dedicated_allocation',
 ]
 
 # We generate a static hash table for entry point lookup
-- 
2.13.2



More information about the mesa-dev mailing list