radv/image: Implement the wsi "extension"

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
Jason Ekstrand
2017-11-16 08:27:01 -08:00
parent 3dabb4011f
commit a50f93ecfb
2 changed files with 12 additions and 2 deletions

View File

@@ -2151,11 +2151,17 @@ VkResult radv_alloc_memory(VkDevice _device,
const VkMemoryDedicatedAllocateInfoKHR *dedicate_info = const VkMemoryDedicatedAllocateInfoKHR *dedicate_info =
vk_find_struct_const(pAllocateInfo->pNext, MEMORY_DEDICATED_ALLOCATE_INFO_KHR); vk_find_struct_const(pAllocateInfo->pNext, MEMORY_DEDICATED_ALLOCATE_INFO_KHR);
const struct wsi_memory_allocate_info *wsi_info =
vk_find_struct_const(pAllocateInfo->pNext, WSI_MEMORY_ALLOCATE_INFO_MESA);
mem = vk_alloc2(&device->alloc, pAllocator, sizeof(*mem), 8, mem = vk_alloc2(&device->alloc, pAllocator, sizeof(*mem), 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (mem == NULL) if (mem == NULL)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
if (wsi_info && wsi_info->implicit_sync)
flags |= RADEON_FLAG_IMPLICIT_SYNC;
if (dedicate_info) { if (dedicate_info) {
mem->image = radv_image_from_handle(dedicate_info->image); mem->image = radv_image_from_handle(dedicate_info->image);
mem->buffer = radv_buffer_from_handle(dedicate_info->buffer); mem->buffer = radv_buffer_from_handle(dedicate_info->buffer);

View File

@@ -1121,11 +1121,15 @@ radv_CreateImage(VkDevice device,
const VkAllocationCallbacks *pAllocator, const VkAllocationCallbacks *pAllocator,
VkImage *pImage) VkImage *pImage)
{ {
const struct wsi_image_create_info *wsi_info =
vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA);
bool scanout = wsi_info && wsi_info->scanout;
return radv_image_create(device, return radv_image_create(device,
&(struct radv_image_create_info) { &(struct radv_image_create_info) {
.vk_info = pCreateInfo, .vk_info = pCreateInfo,
.scanout = false, .scanout = scanout,
}, },
pAllocator, pAllocator,
pImage); pImage);
} }