From 799ef80059d65f9074b814993b02c37d971e3ae5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 1 Nov 2017 23:54:56 +0000 Subject: [PATCH] radv: make sure we set buffers as shareable properly. This should make sure we don't treat exports buffers as local bos. Fixes: a639d40f13 (radv: add support for local bos. (v3)) Tested-by: Andres Rodriguez Reviewed-by: Andres Rodriguez Signed-off-by: Dave Airlie --- src/amd/vulkan/radv_device.c | 7 +++++-- src/amd/vulkan/radv_private.h | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 0c2f6fa..fce0bff 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2255,13 +2255,13 @@ void radv_GetBufferMemoryRequirements2KHR( { radv_GetBufferMemoryRequirements(device, pInfo->buffer, &pMemoryRequirements->memoryRequirements); - + RADV_FROM_HANDLE(radv_buffer, buffer, pInfo->buffer); 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->requiresDedicatedAllocation = buffer->shareable; req->prefersDedicatedAllocation = req->requiresDedicatedAllocation; break; } @@ -2775,6 +2775,9 @@ VkResult radv_CreateBuffer( buffer->offset = 0; buffer->flags = pCreateInfo->flags; + buffer->shareable = vk_find_struct_const(pCreateInfo->pNext, + EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR) != NULL; + if (pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) { buffer->bo = device->ws->buffer_create(device->ws, align64(buffer->size, 4096), diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 1b1fa93..8d96bb4 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -673,6 +673,8 @@ struct radv_buffer { /* Set when bound */ struct radeon_winsys_bo * bo; VkDeviceSize offset; + + bool shareable; }; -- 2.7.4