On Tue, May 31, 2016 at 1:28 AM, Chris Forbes <chr...@ijw.co.nz> wrote: > Signed-off-by: Chris Forbes <chrisfor...@google.com> > --- > src/compiler/glsl/builtin_functions.cpp | 12 ++++++++---- > src/compiler/glsl/builtin_types.cpp | 23 ++++++++++++++++------- > src/compiler/glsl/glsl_lexer.ll | 14 +++++++------- > 3 files changed, 31 insertions(+), 18 deletions(-) > > diff --git a/src/compiler/glsl/builtin_functions.cpp > b/src/compiler/glsl/builtin_functions.cpp > index edd02bb..46c8150 100644 > --- a/src/compiler/glsl/builtin_functions.cpp > +++ b/src/compiler/glsl/builtin_functions.cpp > @@ -327,15 +327,19 @@ static bool > fs_texture_cube_map_array(const _mesa_glsl_parse_state *state) > { > return state->stage == MESA_SHADER_FRAGMENT && > - (state->is_version(400, 0) || > - state->ARB_texture_cube_map_array_enable); > + (state->is_version(400, 320) || > + state->ARB_texture_cube_map_array_enable || > + state->EXT_texture_cube_map_array_enable || > + state->OES_texture_cube_map_array_enable); > } > > static bool > texture_cube_map_array(const _mesa_glsl_parse_state *state) > { > - return state->is_version(400, 0) || > - state->ARB_texture_cube_map_array_enable; > + return state->is_version(400, 320) || > + state->ARB_texture_cube_map_array_enable || > + state->EXT_texture_cube_map_array_enable || > + state->OES_texture_cube_map_array_enable; > }
My personal preference would be to flip the order of these two functions and have the fs one be return fs && texture_cube_map_array(state) But your way is correct too. > > static bool > diff --git a/src/compiler/glsl/builtin_types.cpp > b/src/compiler/glsl/builtin_types.cpp > index 5f208f8..2d1dc03 100644 > --- a/src/compiler/glsl/builtin_types.cpp > +++ b/src/compiler/glsl/builtin_types.cpp > @@ -189,7 +189,7 @@ static const struct builtin_type_versions { > T(isamplerCube, 130, 300) > T(isampler1DArray, 130, 999) > T(isampler2DArray, 130, 300) > - T(isamplerCubeArray, 400, 999) > + T(isamplerCubeArray, 400, 320) > T(isampler2DRect, 140, 999) > T(isamplerBuffer, 140, 320) > T(isampler2DMS, 150, 310) > @@ -201,7 +201,7 @@ static const struct builtin_type_versions { > T(usamplerCube, 130, 300) > T(usampler1DArray, 130, 999) > T(usampler2DArray, 130, 300) > - T(usamplerCubeArray, 400, 999) > + T(usamplerCubeArray, 400, 320) > T(usampler2DRect, 140, 999) > T(usamplerBuffer, 140, 320) > T(usampler2DMS, 150, 310) > @@ -212,7 +212,7 @@ static const struct builtin_type_versions { > T(samplerCubeShadow, 130, 300) > T(sampler1DArrayShadow, 130, 999) > T(sampler2DArrayShadow, 130, 300) > - T(samplerCubeArrayShadow, 400, 999) > + T(samplerCubeArrayShadow, 400, 320) > T(sampler2DRectShadow, 140, 999) > > T(struct_gl_DepthRangeParameters, 110, 100) > @@ -225,7 +225,7 @@ static const struct builtin_type_versions { > T(imageBuffer, 420, 320) > T(image1DArray, 420, 999) > T(image2DArray, 420, 310) > - T(imageCubeArray, 420, 999) > + T(imageCubeArray, 420, 320) > T(image2DMS, 420, 999) > T(image2DMSArray, 420, 999) > T(iimage1D, 420, 999) > @@ -236,7 +236,7 @@ static const struct builtin_type_versions { > T(iimageBuffer, 420, 320) > T(iimage1DArray, 420, 999) > T(iimage2DArray, 420, 310) > - T(iimageCubeArray, 420, 999) > + T(iimageCubeArray, 420, 320) > T(iimage2DMS, 420, 999) > T(iimage2DMSArray, 420, 999) > T(uimage1D, 420, 999) > @@ -247,7 +247,7 @@ static const struct builtin_type_versions { > T(uimageBuffer, 420, 320) > T(uimage1DArray, 420, 999) > T(uimage2DArray, 420, 310) > - T(uimageCubeArray, 420, 999) > + T(uimageCubeArray, 420, 320) > T(uimage2DMS, 420, 999) > T(uimage2DMSArray, 420, 999) > > @@ -298,13 +298,22 @@ _mesa_glsl_initialize_types(struct > _mesa_glsl_parse_state *state) > * by the version-based loop, but attempting to add them a second time > * is harmless. > */ > - if (state->ARB_texture_cube_map_array_enable) { > + if (state->ARB_texture_cube_map_array_enable || > + state->EXT_texture_cube_map_array_enable || > + state->OES_texture_cube_map_array_enable) { > add_type(symbols, glsl_type::samplerCubeArray_type); > add_type(symbols, glsl_type::samplerCubeArrayShadow_type); > add_type(symbols, glsl_type::isamplerCubeArray_type); > add_type(symbols, glsl_type::usamplerCubeArray_type); > } > > + if (state->EXT_texture_cube_map_array_enable || > + state->OES_texture_cube_map_array_enable) { > + add_type(symbols, glsl_type::imageCubeArray_type); > + add_type(symbols, glsl_type::iimageCubeArray_type); > + add_type(symbols, glsl_type::uimageCubeArray_type); > + } > + > if (state->ARB_texture_multisample_enable) { > add_type(symbols, glsl_type::sampler2DMS_type); > add_type(symbols, glsl_type::isampler2DMS_type); > diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll > index 11711ee..a97bc1f 100644 > --- a/src/compiler/glsl/glsl_lexer.ll > +++ b/src/compiler/glsl/glsl_lexer.ll > @@ -348,10 +348,10 @@ isampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 320, > yyextra->ARB_texture_mul > usampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 320, > yyextra->ARB_texture_multisample_enable || > yyextra->OES_texture_storage_multisample_2d_array_enable, USAMPLER2DMSARRAY); > > /* keywords available with ARB_texture_cube_map_array_enable extension on > desktop GLSL */ > -samplerCubeArray KEYWORD_WITH_ALT(400, 0, 400, 0, > yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAY); > -isamplerCubeArray KEYWORD_WITH_ALT(400, 0, 400, 0, > yyextra->ARB_texture_cube_map_array_enable, ISAMPLERCUBEARRAY); > -usamplerCubeArray KEYWORD_WITH_ALT(400, 0, 400, 0, > yyextra->ARB_texture_cube_map_array_enable, USAMPLERCUBEARRAY); > -samplerCubeArrayShadow KEYWORD_WITH_ALT(400, 0, 400, 0, > yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAYSHADOW); > +samplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, > yyextra->ARB_texture_cube_map_array_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, SAMPLERCUBEARRAY); > +isamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, > yyextra->ARB_texture_cube_map_array_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, ISAMPLERCUBEARRAY); > +usamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, > yyextra->ARB_texture_cube_map_array_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, USAMPLERCUBEARRAY); > +samplerCubeArrayShadow KEYWORD_WITH_ALT(400, 310, 400, 320, > yyextra->ARB_texture_cube_map_array_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, SAMPLERCUBEARRAYSHADOW); > > samplerExternalOES { > if (yyextra->OES_EGL_image_external_enable) > @@ -372,7 +372,7 @@ imageCube KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_l > imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, > IMAGEBUFFER); > image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); > image2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); > -imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); > +imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, IMAGECUBEARRAY); > image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); > image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); > iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); > @@ -383,7 +383,7 @@ iimageCube KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_l > iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, > IIMAGEBUFFER); > iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); > iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); > -iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); > +iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, IIMAGECUBEARRAY); > iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); > iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); > uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); > @@ -394,7 +394,7 @@ uimageCube KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_l > uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, > UIMAGEBUFFER); > uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); > uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, > yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); > -uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); > +uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, > yyextra->ARB_shader_image_load_store_enable || > yyextra->OES_texture_cube_map_array_enable || > yyextra->EXT_texture_cube_map_array_enable, UIMAGECUBEARRAY); > uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); > uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); > image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); > -- > 2.8.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev