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:
committed by
Marge Bot
parent
7399b2241f
commit
1329fec352
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user