mesa: implement GL_DEVICE_LUID_EXT and GL_DEVICE_NODE_MASK_EXT getters

Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15504>
This commit is contained in:
Sidney Just 2022-04-29 12:09:00 -07:00 committed by Marge Bot
parent 8917235d12
commit 5e8702f796
4 changed files with 36 additions and 0 deletions

View File

@ -230,6 +230,7 @@ union value {
GLdouble value_double_2[2];
GLmatrix *value_matrix;
GLint value_int;
GLint value_int_2[2];
GLint value_int_4[4];
GLint64 value_int64;
GLenum value_enum;
@ -979,6 +980,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
_mesa_get_device_uuid(ctx, v->value_int_4);
break;
/* GL_EXT_memory_object_win32 */
case GL_DEVICE_LUID_EXT:
_mesa_get_device_luid(ctx, v->value_int_2);
break;
case GL_DEVICE_NODE_MASK_EXT:
v->value_int = ctx->pipe->screen->get_device_node_mask(ctx->pipe->screen);
break;
/* GL_EXT_packed_float */
case GL_RGBA_SIGNED_COMPONENTS_EXT:
{
@ -2872,6 +2881,17 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
goto invalid_value;
_mesa_get_device_uuid(ctx, v->value_int_4);
return TYPE_INT_4;
/* GL_EXT_memory_object_win32 */
case GL_DEVICE_LUID_EXT:
if (index >= 1)
goto invalid_value;
_mesa_get_device_luid(ctx, v->value_int_2);
return TYPE_INT_2;
case GL_DEVICE_NODE_MASK_EXT:
if (index >= 1)
goto invalid_value;
v->value_int = ctx->pipe->screen->get_device_node_mask(ctx->pipe->screen);
return TYPE_INT;
/* GL_EXT_direct_state_access */
case GL_TEXTURE_1D:
case GL_TEXTURE_2D:

View File

@ -143,6 +143,10 @@ descriptor=[
[ "NUM_DEVICE_UUIDS_EXT", "LOC_CUSTOM, TYPE_INT, NO_OFFSET, NO_EXTRA" ],
[ "DRIVER_UUID_EXT", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, NO_EXTRA" ],
[ "DEVICE_UUID_EXT", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, NO_EXTRA" ],
# GL_EXT_memory_object_win32
[ "DEVICE_LUID_EXT", "LOC_CUSTOM, TYPE_INT_2, NO_OFFSET, NO_EXTRA" ],
[ "DEVICE_NODE_MASK_EXT", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, NO_EXTRA" ],
]},
# Enums in OpenGL and GLES1

View File

@ -704,6 +704,15 @@ _mesa_get_device_uuid(struct gl_context *ctx, GLint *uuid)
screen->get_device_uuid(screen, (char *)uuid);
}
void
_mesa_get_device_luid(struct gl_context *ctx, GLint *luid)
{
struct pipe_screen *screen = ctx->pipe->screen;
assert(GL_LUID_SIZE_EXT >= PIPE_LUID_SIZE);
memset(luid, 0, GL_UUID_SIZE_EXT);
screen->get_device_luid(screen, (char *)luid);
}
/**
* Get the i-th GLSL version string. If index=0, return the most recent
* supported version.

View File

@ -58,6 +58,9 @@ _mesa_get_driver_uuid(struct gl_context *ctx, GLint *uuid);
extern void
_mesa_get_device_uuid(struct gl_context *ctx, GLint *uuid);
extern void
_mesa_get_device_luid(struct gl_context *ctx, GLint *luid);
extern int
_mesa_get_shading_language_version(const struct gl_context *ctx,
int index,