Module: Mesa Branch: main Commit: 1329fec3529522fe7aa7f080bced76e613927443 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1329fec3529522fe7aa7f080bced76e613927443
Author: Mike Blumenkrantz <[email protected]> Date: Thu Jan 12 14:49:26 2023 -0500 zink: consolidate semaphore creation where possible all cacheable semaphores should now be using the cache Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20681> --- src/gallium/drivers/zink/zink_bo.c | 19 +++---------------- src/gallium/drivers/zink/zink_kopper.c | 20 +++++--------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c index 552887f50cf..d5152ce5ef8 100644 --- a/src/gallium/drivers/zink/zink_bo.c +++ b/src/gallium/drivers/zink/zink_bo.c @@ -721,23 +721,10 @@ zink_bo_unmap(struct zink_screen *screen, struct zink_bo *bo) } } -static VkSemaphore -get_semaphore(struct zink_screen *screen) -{ - VkSemaphoreCreateInfo sci = { - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, - NULL, - 0 - }; - VkSemaphore sem; - VkResult ret = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &sem); - return ret == VK_SUCCESS ? sem : VK_NULL_HANDLE; -} - static VkSemaphore buffer_commit_single(struct zink_screen *screen, struct zink_resource *res, struct zink_bo *bo, uint32_t bo_offset, uint32_t offset, uint32_t size, bool commit, VkSemaphore wait) { - VkSemaphore sem = get_semaphore(screen); + VkSemaphore sem = zink_create_semaphore(screen); VkBindSparseInfo sparse = {0}; sparse.sType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO; sparse.bufferBindCount = res->obj->storage_buffer ? 2 : 1; @@ -886,7 +873,7 @@ out: static VkSemaphore texture_commit_single(struct zink_screen *screen, struct zink_resource *res, VkSparseImageMemoryBind *ibind, unsigned num_binds, bool commit, VkSemaphore wait) { - VkSemaphore sem = get_semaphore(screen); + VkSemaphore sem = zink_create_semaphore(screen); VkBindSparseInfo sparse = {0}; sparse.sType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO; sparse.imageBindCount = 1; @@ -911,7 +898,7 @@ texture_commit_single(struct zink_screen *screen, struct zink_resource *res, VkS static VkSemaphore texture_commit_miptail(struct zink_screen *screen, struct zink_resource *res, struct zink_bo *bo, uint32_t bo_offset, uint32_t offset, bool commit, VkSemaphore wait) { - VkSemaphore sem = get_semaphore(screen); + VkSemaphore sem = zink_create_semaphore(screen); VkBindSparseInfo sparse = {0}; sparse.sType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO; sparse.imageOpaqueBindCount = 1; diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c index 24584a4ac21..a80993b45c2 100644 --- a/src/gallium/drivers/zink/zink_kopper.c +++ b/src/gallium/drivers/zink/zink_kopper.c @@ -511,17 +511,12 @@ kopper_acquire(struct zink_screen *screen, struct zink_resource *res, uint64_t t p_atomic_read_relaxed(&cdt->swapchain->num_acquires) > cdt->swapchain->max_acquires) { util_queue_fence_wait(&cdt->present_fence); } - VkSemaphoreCreateInfo sci = { - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, - NULL, - 0 - }; VkResult ret; if (!acquire) { - ret = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &acquire); + acquire = zink_create_semaphore(screen); assert(acquire); - if (ret != VK_SUCCESS) - return ret; + if (!acquire) + return VK_ERROR_OUT_OF_HOST_MEMORY; } ret = VKSCR(AcquireNextImageKHR)(screen->dev, cdt->swapchain->swapchain, timeout, acquire, VK_NULL_HANDLE, &res->obj->dt_idx); if (ret != VK_SUCCESS && ret != VK_SUBOPTIMAL_KHR) { @@ -629,14 +624,9 @@ zink_kopper_present(struct zink_screen *screen, struct zink_resource *res) { assert(res->obj->dt); assert(!res->obj->present); - VkSemaphoreCreateInfo sci = { - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, - NULL, - 0 - }; assert(zink_kopper_acquired(res->obj->dt, res->obj->dt_idx)); - VkResult ret = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &res->obj->present); - return zink_screen_handle_vkresult(screen, ret) ? res->obj->present : VK_NULL_HANDLE; + res->obj->present = zink_create_semaphore(screen); + return res->obj->present; } struct kopper_present_info {
