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>
This commit is contained in:
Mike Blumenkrantz
2023-01-12 14:49:26 -05:00
committed by Marge Bot
parent 7399b2241f
commit 1329fec352
2 changed files with 8 additions and 31 deletions
+3 -16
View File
@@ -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;
+5 -15
View File
@@ -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 {