mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
vulkan/wsi: Add callback to set ownership of buffer.
For radv BO list pruning. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4306>
This commit is contained in:
parent
42b1696ef6
commit
9a61f2a8a9
2 changed files with 26 additions and 0 deletions
|
|
@ -1098,6 +1098,11 @@ wsi_common_acquire_next_image2(const struct wsi_device *wsi,
|
|||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
if (wsi->set_memory_ownership) {
|
||||
VkDeviceMemory mem = swapchain->get_wsi_image(swapchain, *pImageIndex)->memory;
|
||||
wsi->set_memory_ownership(swapchain->device, mem, true);
|
||||
}
|
||||
|
||||
if (pAcquireInfo->semaphore != VK_NULL_HANDLE &&
|
||||
wsi->signal_semaphore_for_memory != NULL) {
|
||||
struct wsi_image *image =
|
||||
|
|
@ -1219,6 +1224,11 @@ wsi_common_queue_present(const struct wsi_device *wsi,
|
|||
if (result != VK_SUCCESS)
|
||||
goto fail_present;
|
||||
|
||||
if (wsi->set_memory_ownership) {
|
||||
VkDeviceMemory mem = swapchain->get_wsi_image(swapchain, image_index)->memory;
|
||||
wsi->set_memory_ownership(swapchain->device, mem, false);
|
||||
}
|
||||
|
||||
fail_present:
|
||||
if (pPresentInfo->pResults != NULL)
|
||||
pPresentInfo->pResults[i] = result;
|
||||
|
|
|
|||
|
|
@ -127,6 +127,22 @@ struct wsi_device {
|
|||
VkFence fence,
|
||||
VkDeviceMemory memory);
|
||||
|
||||
/*
|
||||
* This sets the ownership for a WSI memory object:
|
||||
*
|
||||
* The ownership is true if and only if the application is allowed to submit
|
||||
* command buffers that reference the buffer.
|
||||
*
|
||||
* This can be used to prune BO lists without too many adverse affects on
|
||||
* implicit sync.
|
||||
*
|
||||
* Side note: care needs to be taken for internally delayed submissions wrt
|
||||
* timeline semaphores.
|
||||
*/
|
||||
void (*set_memory_ownership)(VkDevice device,
|
||||
VkDeviceMemory memory,
|
||||
VkBool32 ownership);
|
||||
|
||||
#define WSI_CB(cb) PFN_vk##cb cb
|
||||
WSI_CB(AllocateMemory);
|
||||
WSI_CB(AllocateCommandBuffers);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue