[Mesa-dev] [PATCH] mesa: add GL_OES_gpu_shader5 and GL_EXT_gpu_shader5 support
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Fri Feb 26 11:55:02 UTC 2016
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 <imirkin at alum.mit.edu>
> ---
> 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 <siglesias at igalia.com>
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
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160226/e8d87c0b/attachment-0001.sig>
More information about the mesa-dev
mailing list