--- src/amd/vulkan/radv_device.c | 2 ++ src/amd/vulkan/radv_image.c | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 722c768..58a4604 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2159,6 +2159,8 @@ VkResult radv_alloc_memory(VkDevice _device, if (dedicate_info) { mem->image = radv_image_from_handle(dedicate_info->image); mem->buffer = radv_buffer_from_handle(dedicate_info->buffer); + if (mem->image->surface.flags & RADEON_SURF_SCANOUT) + flags |= RADEON_FLAG_IMPLICIT_SYNC; } else { mem->image = NULL; mem->buffer = NULL; diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 163d35d..b4abec3 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -1113,11 +1113,22 @@ radv_CreateImage(VkDevice device, const VkAllocationCallbacks *pAllocator, VkImage *pImage) { + bool scanout = false; + vk_foreach_struct_const(s, pCreateInfo->pNext) { + switch (s->sType) { + case WSI_STRUCTURE_TYPE_IMAGE_CREATE_INFO: + scanout = true; + break; + default: + break; + } + } + return radv_image_create(device, &(struct radv_image_create_info) { .vk_info = pCreateInfo, - .scanout = false, - }, + .scanout = scanout, + }, pAllocator, pImage); } -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev