[Mesa-dev] [PATCH 2/5] mesa/es3.1: Enable ES 3.1 API and shading language version

Ian Romanick idr at freedesktop.org
Wed May 27 11:18:13 PDT 2015


On 05/27/2015 10:36 AM, Tapani wrote:
> On 05/26/2015 10:37 PM, Ian Romanick wrote:
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> This is a bit of a hack for now.  Several of the extensions required for
>> OpenGL ES 3.1 have no support, at all, in Mesa.  However, with this
>> patch and a patch to allow MESA_GL_VERSION_OVERRIDE to work with ES
>> contexts, people can begin testing the ES "version" of the functionality
>> that is supported.
>>
>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>> ---
>>   src/mesa/main/getstring.c | 16 ++++++++++++----
>>   src/mesa/main/version.c   | 18 +++++++++++++++++-
>>   2 files changed, 29 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
>> index 1b2c7f0..72d99ca 100644
>> --- a/src/mesa/main/getstring.c
>> +++ b/src/mesa/main/getstring.c
>> @@ -72,10 +72,18 @@ shading_language_version(struct gl_context *ctx)
>>         break;
>>        case API_OPENGLES2:
>> -      return (ctx->Version < 30)
>> -         ? (const GLubyte *) "OpenGL ES GLSL ES 1.0.16"
>> -         : (const GLubyte *) "OpenGL ES GLSL ES 3.00";
>> -
>> +      switch (ctx->Version) {
>> +      case 20:
>> +         return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16";
> 
> There's revision 17 (1.0.17) out there, should we have it here or rather
> just 1.0?

We could bump it or leave it.  I don't think it matters much either way.
 Section 6.1.5 (String Queries) of the OpenGL ES 2.0.25 spec says:

    "The SHADING_LANGUAGE_VERSION string is laid out as follows:

        "OpenGL ES GLSL ES N.M vendor-specific information"

    The version number is either of the form major_number.minor_number
    or major_number.minor_number.release_number, where the numbers all
    have one or more digits. The release number and vendor specific
    information are optional.  However, if present, then they pertain
    to the server and their format and contents are implementation-
    dependent."

>> +      case 30:
>> +         return (const GLubyte *) "OpenGL ES GLSL ES 3.00";
>> +      case 31:
>> +         return (const GLubyte *) "OpenGL ES GLSL ES 3.10";
>> +      default:
>> +         _mesa_problem(ctx,
>> +                       "Invalid OpenGL ES version in
>> shading_language_version()");
>> +         return (const GLubyte *) 0;
>> +      }
>>      case API_OPENGLES:
>>         /* fall-through */
>>   diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
>> index 699a0de..e817e2d 100644
>> --- a/src/mesa/main/version.c
>> +++ b/src/mesa/main/version.c
>> @@ -433,7 +433,23 @@ compute_version_es2(const struct gl_extensions
>> *extensions)
>>                            extensions->EXT_texture_snorm &&
>>                            extensions->NV_primitive_restart &&
>>                            extensions->OES_depth_texture_cube_map);
>> -   if (ver_3_0) {
>> +   const bool ver_3_1 = (ver_3_0 &&
>> +                         extensions->ARB_arrays_of_arrays &&
>> +                         extensions->ARB_compute_shader &&
>> +                         extensions->ARB_draw_indirect &&
>> +                         false
>> /*extensions->ARB_framebuffer_no_attachments*/ &&
>> +                         extensions->ARB_shader_atomic_counters &&
>> +                         extensions->ARB_shader_image_load_store &&
>> +                         false /*extensions->ARB_shader_image_size*/ &&
>> +                         false
>> /*extensions->ARB_shader_storage_buffer_object*/ &&
>> +                         extensions->ARB_shading_language_packing &&
>> +                         extensions->ARB_stencil_texturing &&
>> +                         extensions->ARB_gpu_shader5 &&
>> +                         extensions->EXT_shader_integer_mix);
>> +
>> +   if (ver_3_1) {
>> +      return 31;
>> +   } else if (ver_3_0) {
>>         return 30;
>>      } else if (ver_2_0) {
>>         return 20;
> 



More information about the mesa-dev mailing list