Mesa (main): mesa: implement GL_DEVICE_LUID_EXT and GL_DEVICE_NODE_MASK_EXT getters
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sun May 15 20:23:01 UTC 2022
Module: Mesa
Branch: main
Commit: 5e8702f79629f931debb3f43c2530d28c3f98292
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e8702f79629f931debb3f43c2530d28c3f98292
Author: Sidney Just <justsid at x-plane.com>
Date: Fri Apr 29 12:09:00 2022 -0700
mesa: implement GL_DEVICE_LUID_EXT and GL_DEVICE_NODE_MASK_EXT getters
Acked-by: Marek Olšák <marek.olsak at amd.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15504>
---
src/mesa/main/get.c | 20 ++++++++++++++++++++
src/mesa/main/get_hash_params.py | 4 ++++
src/mesa/main/version.c | 9 +++++++++
src/mesa/main/version.h | 3 +++
4 files changed, 36 insertions(+)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 20258101e74..1efab608967 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -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:
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 0a629ad6ace..63adcd9b8eb 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -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
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 5d18efc4b23..74220657b4e 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -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.
diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
index 4469509c08e..535c6a864f3 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -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,
More information about the mesa-commit
mailing list