summaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan/radv_device.c
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2017-07-15 02:08:00 +0200
committerJason Ekstrand <[email protected]>2017-07-15 08:59:38 -0700
commit6ddc64b93ea462b9755f5f9abfc7c72aa014a5e0 (patch)
tree7b4dcaee81e7aa0ab354e3e855b579b17411a42a /src/amd/vulkan/radv_device.c
parent97931f02975b600cbcc6362ac2fcb6e3f426fe7e (diff)
radv: Add support for VK_KHR_dedicated_allocation.
Signed-off-by: Bas Nieuwenhuizen <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Acked-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_device.c')
-rw-r--r--src/amd/vulkan/radv_device.c36
1 files changed, 34 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(