[Mesa-dev] [PATCH 6/7] mesa: add a GLES3.2 enums section, and expose new MS line width params

Ilia Mirkin imirkin at alum.mit.edu
Mon Aug 29 02:10:27 UTC 2016


This also exposes them for ARB_ES3_2_compatibility.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
 src/mesa/main/context.h             | 10 ++++++++++
 src/mesa/main/get.c                 | 26 ++++++++++++++++++++------
 src/mesa/main/get_hash_generator.py | 12 ++++++++----
 src/mesa/main/get_hash_params.py    |  5 +++++
 4 files changed, 43 insertions(+), 10 deletions(-)

diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
index 4cd149d..520b3bb 100644
--- a/src/mesa/main/context.h
+++ b/src/mesa/main/context.h
@@ -318,6 +318,16 @@ _mesa_is_gles31(const struct gl_context *ctx)
 
 
 /**
+ * Checks if the context is for GLES 3.2 or later
+ */
+static inline bool
+_mesa_is_gles32(const struct gl_context *ctx)
+{
+   return ctx->API == API_OPENGLES2 && ctx->Version >= 32;
+}
+
+
+/**
  * Checks if the context supports geometry shaders.
  */
 static inline bool
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 810ccb9..3cabb2b 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -142,6 +142,7 @@ enum value_extra {
    EXTRA_API_ES2,
    EXTRA_API_ES3,
    EXTRA_API_ES31,
+   EXTRA_API_ES32,
    EXTRA_NEW_BUFFERS, 
    EXTRA_NEW_FRAG_CLAMP,
    EXTRA_VALID_DRAW_BUFFER,
@@ -416,6 +417,12 @@ static const int extra_ARB_gpu_shader5_or_OES_sample_variables[] = {
    EXTRA_END
 };
 
+static const int extra_ES32[] = {
+   EXT(ARB_ES3_2_compatibility),
+   EXTRA_API_ES32,
+   EXTRA_END
+};
+
 EXTRA_EXT(ARB_texture_cube_map);
 EXTRA_EXT(EXT_texture_array);
 EXTRA_EXT(NV_fog_distance);
@@ -1164,6 +1171,11 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
          if (_mesa_is_gles31(ctx))
             api_found = GL_TRUE;
 	 break;
+      case EXTRA_API_ES32:
+         api_check = GL_TRUE;
+         if (_mesa_is_gles32(ctx))
+            api_found = GL_TRUE;
+	 break;
       case EXTRA_API_GL:
          api_check = GL_TRUE;
          if (_mesa_is_desktop_gl(ctx))
@@ -1312,12 +1324,14 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
     * value since it's compatible with GLES2 its entry in table_set[] is at the
     * end.
     */
-   STATIC_ASSERT(ARRAY_SIZE(table_set) == API_OPENGL_LAST + 3);
-   if (_mesa_is_gles3(ctx)) {
-      api = API_OPENGL_LAST + 1;
-   }
-   if (_mesa_is_gles31(ctx)) {
-      api = API_OPENGL_LAST + 2;
+   STATIC_ASSERT(ARRAY_SIZE(table_set) == API_OPENGL_LAST + 4);
+   if (ctx->API == API_OPENGLES2) {
+      if (ctx->Version >= 32)
+         api = API_OPENGL_LAST + 3;
+      else if (ctx->Version >= 31)
+         api = API_OPENGL_LAST + 2;
+      else if (ctx->Version >= 30)
+         api = API_OPENGL_LAST + 1;
    }
    mask = ARRAY_SIZE(table(api)) - 1;
    hash = (pname * prime_factor);
diff --git a/src/mesa/main/get_hash_generator.py b/src/mesa/main/get_hash_generator.py
index c777b78..a8b4647 100644
--- a/src/mesa/main/get_hash_generator.py
+++ b/src/mesa/main/get_hash_generator.py
@@ -44,7 +44,7 @@ prime_factor = 89
 prime_step = 281
 hash_table_size = 1024
 
-gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3", "GLES31"])
+gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3", "GLES31", "GLES32"])
 
 def print_header():
    print "typedef const unsigned short table_t[%d];\n" % (hash_table_size)
@@ -69,6 +69,7 @@ api_enum = [
    'GL_CORE',
    'GLES3', # Not in gl_api enum in mtypes.h
    'GLES31', # Not in gl_api enum in mtypes.h
+   'GLES32', # Not in gl_api enum in mtypes.h
 ]
 
 def api_index(api):
@@ -168,13 +169,15 @@ def generate_hash_tables(enum_list, enabled_apis, param_descriptors):
 
          for api in valid_apis:
             add_to_hash_table(tables[api], hash_val, len(params))
-            # Also add GLES2 items to the GLES3 and GLES31 hash table
+            # Also add GLES2 items to the GLES3+ hash tables
             if api == "GLES2":
                add_to_hash_table(tables["GLES3"], hash_val, len(params))
                add_to_hash_table(tables["GLES31"], hash_val, len(params))
-            # Also add GLES3 items to the GLES31 hash table
+               add_to_hash_table(tables["GLES32"], hash_val, len(params))
+            # Also add GLES3 items to the GLES31+ hash tables
             if api == "GLES3":
                add_to_hash_table(tables["GLES31"], hash_val, len(params))
+               add_to_hash_table(tables["GLES32"], hash_val, len(params))
          params.append(["GL_" + enum_name, param[1]])
 
    sorted_tables={}
@@ -210,7 +213,8 @@ if __name__ == '__main__':
       die("missing descriptor file (-f)\n")
 
    # generate the code for all APIs
-   enabled_apis = set(["GLES", "GLES2", "GLES3", "GLES31", "GL", "GL_CORE"])
+   enabled_apis = set(["GLES", "GLES2", "GLES3", "GLES31", "GLES32",
+                       "GL", "GL_CORE"])
 
    try:
       api_desc = gl_XML.parse_GL_API(api_desc_file)
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index a206c85..0ff2af9 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -612,6 +612,11 @@ descriptor=[
   [ "PRIMITIVE_BOUNDING_BOX_ARB", "CONTEXT_FLOAT8(PrimitiveBoundingBox), extra_OES_primitive_bounding_box" ],
 ]},
 
+{ "apis": ["GL_CORE", "GLES32"], "params": [
+  [ "MULTISAMPLE_LINE_WIDTH_RANGE_ARB", "CONTEXT_FLOAT2(Const.MinLineWidthMS), extra_ES32" ],
+  [ "MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB", "CONTEXT_FLOAT(Const.LineWidthGranularityMS), extra_ES32" ],
+]},
+
 # Remaining enums are only in OpenGL
 { "apis": ["GL", "GL_CORE"], "params": [
   [ "ACCUM_RED_BITS", "BUFFER_INT(Visual.accumRedBits), NO_EXTRA" ],
-- 
2.7.3



More information about the mesa-dev mailing list