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