diff options
author | Dave Airlie <airlied@redhat.com> | 2017-11-01 23:54:56 +0000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2017-11-02 01:01:29 +0000 |
commit | 799ef80059d65f9074b814993b02c37d971e3ae5 (patch) | |
tree | a8265f707d291fa9c49bef204ca95eb9fbf290e4 | |
parent | 6594213cfa332be88551596bf56cf01538339f37 (diff) |
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 <andresx7@gmail.com>
Reviewed-by: Andres Rodriguez <andresx7@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/amd/vulkan/radv_device.c | 7 | ||||
-rw-r--r-- | 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 0c2f6fa631..fce0bff849 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 1b1fa93ee3..8d96bb4323 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; }; |