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

Ian Romanick idr at freedesktop.org
Thu Sep 1 02:20:52 UTC 2016


On 08/29/2016 11:24 AM, Ilia Mirkin wrote:
> On Sun, Aug 28, 2016 at 10:10 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> 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))
> 
> This is missing:
> 
> +            if api == "GLES31":
> +               add_to_hash_table(tables["GLES32"], hash_val, len(params))
> 
> Oops.

With this change, this patch is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

>>           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
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 



More information about the mesa-dev mailing list