mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-30 23:28:06 +02:00
zink: factor out fence creation function
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36007>
This commit is contained in:
parent
64fb3c81af
commit
129f22140c
1 changed files with 32 additions and 22 deletions
|
|
@ -275,6 +275,35 @@ zink_fence_server_sync(struct pipe_context *pctx, struct pipe_fence_handle *pfen
|
|||
util_dynarray_append(&ctx->bs->fences, struct zink_tc_fence*, mfence);
|
||||
}
|
||||
|
||||
static struct zink_tc_fence*
|
||||
zink_semaphore_fence_create(struct pipe_screen *pscreen, VkSemaphoreType sema_type)
|
||||
{
|
||||
struct zink_screen *screen = zink_screen(pscreen);
|
||||
VkResult result;
|
||||
|
||||
struct zink_tc_fence *mfence = zink_create_tc_fence();
|
||||
if (!mfence)
|
||||
return NULL;
|
||||
|
||||
const VkSemaphoreTypeCreateInfo tci = {
|
||||
VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
|
||||
NULL,
|
||||
sema_type,
|
||||
};
|
||||
const VkSemaphoreCreateInfo sci = {
|
||||
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
|
||||
&tci
|
||||
};
|
||||
result = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &mfence->sem);
|
||||
if (result != VK_SUCCESS) {
|
||||
mesa_loge("ZINK: vkCreateSemaphore failed (%s)", vk_Result_to_str(result));
|
||||
FREE(mfence);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return mfence;
|
||||
}
|
||||
|
||||
void
|
||||
zink_create_fence_fd(struct pipe_context *pctx, struct pipe_fence_handle **pfence, int fd, enum pipe_fd_type type)
|
||||
{
|
||||
|
|
@ -287,26 +316,11 @@ zink_create_fence_fd(struct pipe_context *pctx, struct pipe_fence_handle **pfenc
|
|||
};
|
||||
|
||||
assert(fd >= 0);
|
||||
*pfence = NULL;
|
||||
|
||||
struct zink_tc_fence *mfence = zink_create_tc_fence();
|
||||
struct zink_tc_fence *mfence = zink_semaphore_fence_create(pctx->screen, semtype[type]);
|
||||
if (!mfence)
|
||||
goto fail_tc_fence_create;
|
||||
|
||||
const VkSemaphoreTypeCreateInfo tci = {
|
||||
VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
|
||||
NULL,
|
||||
semtype[type],
|
||||
};
|
||||
const VkSemaphoreCreateInfo sci = {
|
||||
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
|
||||
&tci
|
||||
};
|
||||
|
||||
result = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &mfence->sem);
|
||||
if (result != VK_SUCCESS) {
|
||||
mesa_loge("ZINK: vkCreateSemaphore failed (%s)", vk_Result_to_str(result));
|
||||
goto fail_sem_create;
|
||||
}
|
||||
return;
|
||||
|
||||
int dup_fd = os_dupfd_cloexec(fd);
|
||||
if (dup_fd < 0)
|
||||
|
|
@ -346,10 +360,6 @@ fail_sem_import:
|
|||
close(dup_fd);
|
||||
fail_fd_dup:
|
||||
VKSCR(DestroySemaphore)(screen->dev, mfence->sem, NULL);
|
||||
fail_sem_create:
|
||||
FREE(mfence);
|
||||
fail_tc_fence_create:
|
||||
*pfence = NULL;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue