spirv_extensions: add spirv_supported_extensions on gl_constants
authorAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 13 Oct 2017 18:43:01 +0000 (20:43 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Wed, 17 Jul 2019 08:45:58 +0000 (10:45 +0200)
We can use it to get real values for ARB_spirv_extensions methods.

Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Signed-off-by: Arcady Goldmints-Orlov <agoldmints@igalia.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/mesa/main/mtypes.h
src/mesa/main/spirv_extensions.c

index 745b243254a09a2d5617077691f82a143d6d77f6..1313ea2a57943296916710d832542f43dbba4d54 100644 (file)
@@ -4128,6 +4128,9 @@ struct gl_constants
 
    /** GL_ARB_gl_spirv */
    struct spirv_supported_capabilities SpirVCapabilities;
+
+   /** GL_ARB_spirv_extensions */
+   struct spirv_supported_extensions *SpirVExtensions;
 };
 
 
index 99af4db2ba07aee50057ee8c10f971295d70be27..4dd637b6607cc3ed6f4911f175e2475304b4fa01 100644 (file)
 GLuint
 _mesa_get_spirv_extension_count(struct gl_context *ctx)
 {
-   return 0;
+   if (ctx->Const.SpirVExtensions == NULL)
+      return 0;
+
+   return ctx->Const.SpirVExtensions->count;
 }
 
 const GLubyte *
 _mesa_get_enabled_spirv_extension(struct gl_context *ctx,
                                   GLuint index)
 {
+   unsigned int n = 0;
+
+   if (ctx->Const.SpirVExtensions == NULL)
+      return (const GLubyte *) 0;
+
+   for (unsigned int i = 0; i < SPV_EXTENSIONS_COUNT; i++) {
+      if (ctx->Const.SpirVExtensions->supported[i]) {
+         if (n == index)
+            return (const GLubyte *) _mesa_spirv_extensions_to_string(i);
+         else
+            n++;
+      }
+   }
+
    return (const GLubyte *) 0;
 }