[Mesa-dev] [PATCH] mesa: add OES_EGL_image_external_essl3 support

Ilia Mirkin imirkin at alum.mit.edu
Mon Mar 23 04:43:00 PDT 2015


On Mon, Mar 23, 2015 at 3:20 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
>
>
> On 03/22/2015 12:07 AM, Ilia Mirkin wrote:
>>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>>
>> Not sure what kind of testing is needed here... thought I'd just send
>> this out though, as the extension is simple enough. Wasn't sure
>> whether mesa already handles the requirements re marking the texture
>> as incomplete if the sampler has funny settings.
>
>
> Looks good to me, one thing that might need additional work or maybe just
> comments for now is the interaction with image load store for compute
> shaders, judging from the format checks in shaderimage.c, external textures
> would not work at the moment for BindImageTexture, I'm not sure if this
> extension is expected to work without compute shaders but just using
> GL_ARB_image_load_store (?)

This extension is written against ESSL3 which doesn't have either of
those. In ESSL3.1, both of those would be available. See issue 10 --
they're accessed using image2D. I don't really see anything in the
current shader image logic that would prevent that from working.

>
>
> 2 little things below
>
>>   src/glsl/builtin_functions.cpp  | 17 +++++++++++++++++
>>   src/glsl/builtin_types.cpp      |  3 ++-
>>   src/glsl/glsl_lexer.ll          |  2 +-
>>   src/glsl/glsl_parser_extras.cpp |  1 +
>>   src/glsl/glsl_parser_extras.h   |  2 ++
>>   src/mesa/main/extensions.c      |  1 +
>>   6 files changed, 24 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/glsl/builtin_functions.cpp
>> b/src/glsl/builtin_functions.cpp
>> index 84bbdc2..24fd4d6 100644
>> --- a/src/glsl/builtin_functions.cpp
>> +++ b/src/glsl/builtin_functions.cpp
>> @@ -147,6 +147,14 @@ texture_external(const _mesa_glsl_parse_state *state)
>>      return state->OES_EGL_image_external_enable;
>>   }
>>
>> +static bool
>> +texture_external_es3(const _mesa_glsl_parse_state *state)
>> +{
>> +   return state->OES_EGL_image_external_essl3_enable &&
>> +      state->es_shader &&
>> +      state->is_version(0, 300);
>
>
> is_version fits in to previous line

With a few exceptions, this is the style used for the checks in this
file -- 1 per line. I can move it up though.

>
>
>> +}
>> +
>>   /** True if texturing functions with explicit LOD are allowed. */
>>   static bool
>>   lod_exists_in_stage(const _mesa_glsl_parse_state *state)
>> @@ -1387,6 +1395,8 @@ builtin_builder::create_builtins()
>>
>>                   _texture(ir_tex, v130, glsl_type::float_type,
>> glsl_type::sampler2DRectShadow_type, glsl_type::vec3_type),
>>
>> +                _texture(ir_tex, texture_external_es3,
>> glsl_type::vec4_type,  glsl_type::samplerExternalOES_type,
>> glsl_type::vec2_type),
>> +
>>                   _texture(ir_txb, v130_fs_only, glsl_type::vec4_type,
>> glsl_type::sampler1D_type,  glsl_type::float_type),
>>                   _texture(ir_txb, v130_fs_only, glsl_type::ivec4_type,
>> glsl_type::isampler1D_type, glsl_type::float_type),
>>                   _texture(ir_txb, v130_fs_only, glsl_type::uvec4_type,
>> glsl_type::usampler1D_type, glsl_type::float_type),
>> @@ -1546,6 +1556,9 @@ builtin_builder::create_builtins()
>>
>>                   _texture(ir_tex, v130, glsl_type::float_type,
>> glsl_type::sampler2DRectShadow_type, glsl_type::vec4_type, TEX_PROJECT),
>>
>> +                _texture(ir_tex, texture_external_es3,
>> glsl_type::vec4_type,  glsl_type::samplerExternalOES_type,
>> glsl_type::vec3_type, TEX_PROJECT),
>> +                _texture(ir_tex, texture_external_es3,
>> glsl_type::vec4_type,  glsl_type::samplerExternalOES_type,
>> glsl_type::vec4_type, TEX_PROJECT),
>> +
>>                   _texture(ir_txb, v130, glsl_type::vec4_type,
>> glsl_type::sampler1D_type,  glsl_type::vec2_type, TEX_PROJECT),
>>                   _texture(ir_txb, v130, glsl_type::ivec4_type,
>> glsl_type::isampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
>>                   _texture(ir_txb, v130, glsl_type::uvec4_type,
>> glsl_type::usampler1D_type, glsl_type::vec2_type, TEX_PROJECT),
>> @@ -1604,8 +1617,12 @@ builtin_builder::create_builtins()
>>                   _texelFetch(texture_multisample, glsl_type::vec4_type,
>> glsl_type::sampler2DMSArray_type,  glsl_type::ivec3_type),
>>                   _texelFetch(texture_multisample, glsl_type::ivec4_type,
>> glsl_type::isampler2DMSArray_type, glsl_type::ivec3_type),
>>                   _texelFetch(texture_multisample, glsl_type::uvec4_type,
>> glsl_type::usampler2DMSArray_type, glsl_type::ivec3_type),
>> +
>> +                _texelFetch(texture_external_es3, glsl_type::vec4_type,
>> glsl_type::samplerExternalOES_type, glsl_type::ivec2_type),
>> +
>>                   NULL);
>>
>> +
>
>
> remove extra line

Will do.

  -ilia


More information about the mesa-dev mailing list