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:
@@ -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);
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user