gallium: Add 'name' field to Win32 semaphore import

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17446>
This commit is contained in:
Jesse Natalie 2022-07-09 19:44:28 -07:00 committed by Marge Bot
parent 51408dfec4
commit 7c4fa79bfa
6 changed files with 13 additions and 7 deletions

View File

@ -619,9 +619,10 @@ static bool noop_check_resource_capability(struct pipe_screen *screen,
static void noop_create_fence_win32(struct pipe_screen *screen,
struct pipe_fence_handle **fence,
void *handle,
const void *name,
enum pipe_fd_type type)
{
screen->create_fence_win32(screen, fence, handle, type);
screen->create_fence_win32(screen, fence, handle, name, type);
}
static void noop_set_max_shader_compiler_threads(struct pipe_screen *screen,

View File

@ -987,6 +987,7 @@ static void
trace_screen_create_fence_win32(struct pipe_screen *_screen,
struct pipe_fence_handle **fence,
void *handle,
const void *name,
enum pipe_fd_type type)
{
struct trace_screen *tr_scr = trace_screen(_screen);
@ -998,11 +999,12 @@ trace_screen_create_fence_win32(struct pipe_screen *_screen,
if (fence)
trace_dump_arg(ptr, *fence);
trace_dump_arg(ptr, handle);
trace_dump_arg(ptr, name);
trace_dump_arg_enum(type, tr_util_pipe_fd_type_name(type));
trace_dump_call_end();
screen->create_fence_win32(screen, fence, handle, type);
screen->create_fence_win32(screen, fence, handle, name, type);
}

View File

@ -266,7 +266,7 @@ fail:
#ifdef _WIN32
void
zink_create_fence_win32(struct pipe_screen *pscreen, struct pipe_fence_handle **pfence, void *handle, enum pipe_fd_type type)
zink_create_fence_win32(struct pipe_screen *pscreen, struct pipe_fence_handle **pfence, void *handle, const void *name, enum pipe_fd_type type)
{
struct zink_screen *screen = zink_screen(pscreen);
VkResult ret = VK_ERROR_UNKNOWN;
@ -294,6 +294,7 @@ zink_create_fence_win32(struct pipe_screen *pscreen, struct pipe_fence_handle **
sdi.semaphore = mfence->sem;
sdi.handleType = flags[type];
sdi.handle = handle;
sdi.name = (LPCWSTR)name;
ret = VKSCR(ImportSemaphoreWin32HandleKHR)(screen->dev, &sdi);
if (!zink_screen_handle_vkresult(screen, ret))

View File

@ -82,7 +82,7 @@ void
zink_create_fence_fd(struct pipe_context *pctx, struct pipe_fence_handle **pfence, int fd, enum pipe_fd_type type);
#if defined(_WIN32)
void
zink_create_fence_win32(struct pipe_screen *screen, struct pipe_fence_handle **pfence, void *handle, enum pipe_fd_type type);
zink_create_fence_win32(struct pipe_screen *screen, struct pipe_fence_handle **pfence, void *handle, const void *name, enum pipe_fd_type type);
#endif
void
zink_fence_server_signal(struct pipe_context *pctx, struct pipe_fence_handle *pfence);

View File

@ -416,6 +416,7 @@ struct pipe_screen {
void (*create_fence_win32)(struct pipe_screen *screen,
struct pipe_fence_handle **fence,
void *handle,
const void *name,
enum pipe_fd_type type);
/**

View File

@ -645,11 +645,12 @@ import_semaphoreobj_fd(struct gl_context *ctx,
static void
import_semaphoreobj_win32(struct gl_context *ctx,
struct gl_semaphore_object *semObj,
void *handle)
void *handle,
const void *name)
{
struct pipe_context *pipe = ctx->pipe;
pipe->screen->create_fence_win32(pipe->screen, &semObj->fence, handle, PIPE_FD_TYPE_SYNCOBJ);
pipe->screen->create_fence_win32(pipe->screen, &semObj->fence, handle, name, PIPE_FD_TYPE_SYNCOBJ);
}
static void
@ -1162,7 +1163,7 @@ _mesa_ImportSemaphoreWin32HandleEXT(GLuint semaphore,
_mesa_HashInsert(ctx->Shared->SemaphoreObjects, semaphore, semObj, true);
}
import_semaphoreobj_win32(ctx, semObj, handle);
import_semaphoreobj_win32(ctx, semObj, handle, NULL);
}
void GLAPIENTRY