On Fri, Feb 19, 2016 at 07:10:24PM -0500, Ilia Mirkin wrote: > The two extensions are identical, and are largely taking bits of already > existing desktop functionality. We continue to do a poor job of > supporting the 'precise' keyword, just like we do on desktop. > > This passes the relevant dEQP tests that I could find. > > Signed-off-by: Ilia Mirkin <[email protected]> > --- > docs/GL3.txt | 2 +- > src/compiler/glsl/ast_array_index.cpp | 20 +++++-- > src/compiler/glsl/builtin_functions.cpp | 99 > +++++++++++++++++++------------- > src/compiler/glsl/glcpp/glcpp-parse.y | 4 ++ > src/compiler/glsl/glsl_lexer.ll | 2 +- > src/compiler/glsl/glsl_parser_extras.cpp | 2 + > src/compiler/glsl/glsl_parser_extras.h | 4 ++ > src/mesa/main/extensions_table.h | 2 + > 8 files changed, 88 insertions(+), 47 deletions(-) > > diff --git a/docs/GL3.txt b/docs/GL3.txt > index 2e528d4..e7d40de 100644 > --- a/docs/GL3.txt > +++ b/docs/GL3.txt > @@ -245,7 +245,7 @@ GLES3.2, GLSL ES 3.2 > GL_OES_draw_buffers_indexed not started > GL_OES_draw_elements_base_vertex DONE (all drivers) > GL_OES_geometry_shader started (Marta) > - GL_OES_gpu_shader5 not started (based on > parts of GL_ARB_gpu_shader5, which is done for some drivers) > + GL_OES_gpu_shader5 DONE (all drivers > that support GL_ARB_gpu_shader5) > GL_OES_primitive_bounding box not started > GL_OES_sample_shading DONE (nvc0, r600, > radeonsi) > GL_OES_sample_variables DONE (nvc0, r600, > radeonsi) > diff --git a/src/compiler/glsl/ast_array_index.cpp > b/src/compiler/glsl/ast_array_index.cpp > index f5baeb9..af5e89e 100644 > --- a/src/compiler/glsl/ast_array_index.cpp > +++ b/src/compiler/glsl/ast_array_index.cpp > @@ -236,13 +236,22 @@ _mesa_ast_array_index_to_hir(void *mem_ctx, > _mesa_glsl_error(&loc, state, "unsized array index must be > constant"); > } > } else if (array->type->without_array()->is_interface() > - && (array->variable_referenced()->data.mode == > ir_var_uniform || > - array->variable_referenced()->data.mode == > ir_var_shader_storage) > - && !state->is_version(400, 0) && > !state->ARB_gpu_shader5_enable) { > + && ((array->variable_referenced()->data.mode == > ir_var_uniform > + && !state->is_version(400, 320) > + && !state->ARB_gpu_shader5_enable > + && !state->EXT_gpu_shader5_enable > + && !state->OES_gpu_shader5_enable) || > + (array->variable_referenced()->data.mode == > ir_var_shader_storage > + && !state->is_version(400, 0) > + && !state->ARB_gpu_shader5_enable))) { > /* Page 50 in section 4.3.9 of the OpenGL ES 3.10 spec says: > * > * "All indices used to index a uniform or shader storage block > * array must be constant integral expressions." > + * > + * But OES_gpu_shader5 (and ESSL 3.20) relax this to allow indexing > + * on uniform blocks but not shader storage blocks. > + *
Indention here. Other than that, Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Sam > */ > _mesa_glsl_error(&loc, state, "%s block array index must be constant", > array->variable_referenced()->data.mode > @@ -279,7 +288,10 @@ _mesa_ast_array_index_to_hir(void *mem_ctx, > * dynamically uniform expression is undefined. > */ > if (array->type->without_array()->is_sampler()) { > - if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable) { > + if (!state->is_version(400, 320) && > + !state->ARB_gpu_shader5_enable && > + !state->EXT_gpu_shader5_enable && > + !state->OES_gpu_shader5_enable) { > if (state->is_version(130, 300)) > _mesa_glsl_error(&loc, state, > "sampler arrays indexed with non-constant " > diff --git a/src/compiler/glsl/builtin_functions.cpp > b/src/compiler/glsl/builtin_functions.cpp > index 6576650..b862da0 100644 > --- a/src/compiler/glsl/builtin_functions.cpp > +++ b/src/compiler/glsl/builtin_functions.cpp > @@ -240,6 +240,21 @@ gpu_shader5(const _mesa_glsl_parse_state *state) > } > > static bool > +gpu_shader5_es(const _mesa_glsl_parse_state *state) > +{ > + return state->is_version(400, 320) || > + state->ARB_gpu_shader5_enable || > + state->EXT_gpu_shader5_enable || > + state->OES_gpu_shader5_enable; > +} > + > +static bool > +es31_not_gs5(const _mesa_glsl_parse_state *state) > +{ > + return state->is_version(0, 310) && !gpu_shader5_es(state); > +} > + > +static bool > gpu_shader5_or_es31(const _mesa_glsl_parse_state *state) > { > return state->is_version(400, 310) || state->ARB_gpu_shader5_enable; > @@ -361,8 +376,10 @@ texture_gather_or_es31(const _mesa_glsl_parse_state > *state) > static bool > texture_gather_only_or_es31(const _mesa_glsl_parse_state *state) > { > - return !state->is_version(400, 0) && > + return !state->is_version(400, 320) && > !state->ARB_gpu_shader5_enable && > + !state->EXT_gpu_shader5_enable && > + !state->OES_gpu_shader5_enable && > (state->ARB_texture_gather_enable || > state->is_version(0, 310)); > } > @@ -1079,10 +1096,10 @@ builtin_builder::create_builtins() > > #define FDGS5(NAME) \ > add_function(#NAME, \ > - _##NAME(gpu_shader5, glsl_type::float_type), \ > - _##NAME(gpu_shader5, glsl_type::vec2_type), \ > - _##NAME(gpu_shader5, glsl_type::vec3_type), > \ > - _##NAME(gpu_shader5, glsl_type::vec4_type), \ > + _##NAME(gpu_shader5_es, glsl_type::float_type), \ > + _##NAME(gpu_shader5_es, glsl_type::vec2_type), \ > + _##NAME(gpu_shader5_es, glsl_type::vec3_type), > \ > + _##NAME(gpu_shader5_es, glsl_type::vec4_type), \ > _##NAME(fp64, glsl_type::double_type), \ > _##NAME(fp64, glsl_type::dvec2_type), \ > _##NAME(fp64, glsl_type::dvec3_type), \ > @@ -2543,62 +2560,62 @@ builtin_builder::create_builtins() > _texture(ir_tg4, texture_gather_only_or_es31, > glsl_type::ivec4_type, glsl_type::isampler2DArray_type, glsl_type::vec3_type, > TEX_OFFSET), > _texture(ir_tg4, texture_gather_only_or_es31, > glsl_type::uvec4_type, glsl_type::usampler2DArray_type, glsl_type::vec3_type, > TEX_OFFSET), > > - _texture(ir_tg4, es31, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > - _texture(ir_tg4, es31, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > - _texture(ir_tg4, es31, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET | TEX_COMPONENT), > > - _texture(ir_tg4, es31, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > - _texture(ir_tg4, es31, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > - _texture(ir_tg4, es31, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > + _texture(ir_tg4, es31_not_gs5, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET | > TEX_COMPONENT), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST), > > _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > > _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST | > TEX_COMPONENT), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, > TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_NONCONST), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, > TEX_OFFSET_NONCONST), > _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, > TEX_OFFSET_NONCONST), > > - _texture(ir_tg4, es31, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET), > - _texture(ir_tg4, es31, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET), > + _texture(ir_tg4, es31_not_gs5, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET), > + _texture(ir_tg4, es31_not_gs5, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET), > NULL); > > add_function("textureGatherOffsets", > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2D_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::ivec4_type, > glsl_type::isampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::uvec4_type, > glsl_type::usampler2DArray_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > > _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > @@ -2608,8 +2625,8 @@ builtin_builder::create_builtins() > _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, > glsl_type::isampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, > glsl_type::usampler2DRect_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY | > TEX_COMPONENT), > > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > + _texture(ir_tg4, gpu_shader5_es, glsl_type::vec4_type, > glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type, TEX_OFFSET_ARRAY), > _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, > glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type, TEX_OFFSET_ARRAY), > NULL); > > diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y > b/src/compiler/glsl/glcpp/glcpp-parse.y > index 22e7a9b..fe55782 100644 > --- a/src/compiler/glsl/glcpp/glcpp-parse.y > +++ b/src/compiler/glsl/glcpp/glcpp-parse.y > @@ -2397,6 +2397,10 @@ > _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t > versio > add_builtin_define(parser, "GL_OES_geometry_point_size", > 1); > add_builtin_define(parser, "GL_OES_geometry_shader", 1); > } > + if (extensions->ARB_gpu_shader5) { > + add_builtin_define(parser, "GL_EXT_gpu_shader5", 1); > + add_builtin_define(parser, "GL_OES_gpu_shader5", 1); > + } > } > } > } else { > diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll > index 9704fc7..1f12265 100644 > --- a/src/compiler/glsl/glsl_lexer.ll > +++ b/src/compiler/glsl/glsl_lexer.ll > @@ -361,7 +361,7 @@ samplerExternalOES { > } > > /* keywords available with ARB_gpu_shader5 */ > -precise KEYWORD_WITH_ALT(400, 0, 400, 0, > yyextra->ARB_gpu_shader5_enable, PRECISE); > +precise KEYWORD_WITH_ALT(400, 310, 400, 320, > yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || > yyextra->OES_gpu_shader5_enable, PRECISE); > > /* keywords available with ARB_shader_image_load_store */ > image1D KEYWORD_WITH_ALT(130, 300, 420, 0, > yyextra->ARB_shader_image_load_store_enable, IMAGE1D); > diff --git a/src/compiler/glsl/glsl_parser_extras.cpp > b/src/compiler/glsl/glsl_parser_extras.cpp > index 0dbc211..a6c2221 100644 > --- a/src/compiler/glsl/glsl_parser_extras.cpp > +++ b/src/compiler/glsl/glsl_parser_extras.cpp > @@ -610,6 +610,7 @@ static const _mesa_glsl_extension > _mesa_glsl_supported_extensions[] = { > EXT(OES_EGL_image_external, false, true, > OES_EGL_image_external), > EXT(OES_geometry_point_size, false, true, > OES_geometry_shader), > EXT(OES_geometry_shader, false, true, > OES_geometry_shader), > + EXT(OES_gpu_shader5, false, true, ARB_gpu_shader5), > EXT(OES_sample_variables, false, true, > OES_sample_variables), > EXT(OES_standard_derivatives, false, true, > OES_standard_derivatives), > EXT(OES_texture_3D, false, true, dummy_true), > @@ -624,6 +625,7 @@ static const _mesa_glsl_extension > _mesa_glsl_supported_extensions[] = { > EXT(AMD_vertex_shader_viewport_index, true, false, > AMD_vertex_shader_viewport_index), > EXT(EXT_blend_func_extended, false, true, > ARB_blend_func_extended), > EXT(EXT_draw_buffers, false, true, dummy_true), > + EXT(EXT_gpu_shader5, false, true, ARB_gpu_shader5), > EXT(EXT_separate_shader_objects, false, true, dummy_true), > EXT(EXT_shader_integer_mix, true, true, > EXT_shader_integer_mix), > EXT(EXT_shader_samples_identical, true, true, > EXT_shader_samples_identical), > diff --git a/src/compiler/glsl/glsl_parser_extras.h > b/src/compiler/glsl/glsl_parser_extras.h > index 0653ffb..f7c753c 100644 > --- a/src/compiler/glsl/glsl_parser_extras.h > +++ b/src/compiler/glsl/glsl_parser_extras.h > @@ -598,6 +598,8 @@ struct _mesa_glsl_parse_state { > bool OES_geometry_point_size_warn; > bool OES_geometry_shader_enable; > bool OES_geometry_shader_warn; > + bool OES_gpu_shader5_enable; > + bool OES_gpu_shader5_warn; > bool OES_sample_variables_enable; > bool OES_sample_variables_warn; > bool OES_standard_derivatives_enable; > @@ -623,6 +625,8 @@ struct _mesa_glsl_parse_state { > bool EXT_blend_func_extended_warn; > bool EXT_draw_buffers_enable; > bool EXT_draw_buffers_warn; > + bool EXT_gpu_shader5_enable; > + bool EXT_gpu_shader5_warn; > bool EXT_separate_shader_objects_enable; > bool EXT_separate_shader_objects_warn; > bool EXT_shader_integer_mix_enable; > diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > index 2bef73a..30dd2f4 100644 > --- a/src/mesa/main/extensions_table.h > +++ b/src/mesa/main/extensions_table.h > @@ -202,6 +202,7 @@ EXT(EXT_framebuffer_object , dummy_true > EXT(EXT_framebuffer_sRGB , EXT_framebuffer_sRGB > , GLL, GLC, x , x , 1998) > EXT(EXT_gpu_program_parameters , EXT_gpu_program_parameters > , GLL, x , x , x , 2006) > EXT(EXT_gpu_shader4 , EXT_gpu_shader4 > , GLL, GLC, x , x , 2006) > +EXT(EXT_gpu_shader5 , ARB_gpu_shader5 > , x , x , x , 31, 2014) > EXT(EXT_map_buffer_range , ARB_map_buffer_range > , x , x , ES1, ES2, 2012) > EXT(EXT_multi_draw_arrays , dummy_true > , GLL, x , ES1, ES2, 1999) > EXT(EXT_packed_depth_stencil , dummy_true > , GLL, GLC, x , x , 2005) > @@ -322,6 +323,7 @@ EXT(OES_framebuffer_object , dummy_true > EXT(OES_geometry_point_size , OES_geometry_shader > , x , x , x , 31, 2015) > EXT(OES_geometry_shader , OES_geometry_shader > , x , x , x , 31, 2015) > EXT(OES_get_program_binary , dummy_true > , x , x , x , ES2, 2008) > +EXT(OES_gpu_shader5 , ARB_gpu_shader5 > , x , x , x , 31, 2014) > EXT(OES_mapbuffer , dummy_true > , x , x , ES1, ES2, 2005) > EXT(OES_packed_depth_stencil , dummy_true > , x , x , ES1, ES2, 2007) > EXT(OES_point_size_array , dummy_true > , x , x , ES1, x , 2004) > -- > 2.4.10 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
