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:
parent
51408dfec4
commit
7c4fa79bfa
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue