[Mesa-dev] [PATCH] glsl/es31:Allow GL_ARB_TEXTURE_MULTISAMPLE in GLSL ES 3.10
Ilia Mirkin
imirkin at alum.mit.edu
Tue May 12 08:00:21 PDT 2015
On Tue, May 12, 2015 at 10:53 AM, Marta Lofstedt
<marta.lofstedt at linux.intel.com> wrote:
> From: Marta Lofstedt <marta.lofstedt at intel.com>
>
> Signed-off-by: Marta Lofstedt <marta.lofstedt at intel.com>
> ---
> src/glsl/builtin_functions.cpp | 3 +--
> src/glsl/builtin_types.cpp | 2 +-
> src/glsl/glsl_lexer.ll | 13 +++++++------
> src/glsl/glsl_parser_extras.h | 5 +++++
> 4 files changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
> index 1df6956..76aff14 100644
> --- a/src/glsl/builtin_functions.cpp
> +++ b/src/glsl/builtin_functions.cpp
> @@ -270,8 +270,7 @@ texture_array(const _mesa_glsl_parse_state *state)
> static bool
> texture_multisample(const _mesa_glsl_parse_state *state)
> {
> - return state->is_version(150, 0) ||
> - state->ARB_texture_multisample_enable;
> + return state->has_texture_multisample();
> }
>
> static bool
> diff --git a/src/glsl/builtin_types.cpp b/src/glsl/builtin_types.cpp
> index d92e2eb..9968f7c 100644
> --- a/src/glsl/builtin_types.cpp
> +++ b/src/glsl/builtin_types.cpp
> @@ -307,7 +307,7 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
> add_type(symbols, glsl_type::usamplerCubeArray_type);
> }
>
> - if (state->ARB_texture_multisample_enable) {
> + if (state->has_texture_multisample()) {
Oooh, nice catch! This was previously going to not auto-add the types
for GLSL 1.50!
> add_type(symbols, glsl_type::sampler2DMS_type);
> add_type(symbols, glsl_type::isampler2DMS_type);
> add_type(symbols, glsl_type::usampler2DMS_type);
> diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
> index 10db5b8..3597435 100644
> --- a/src/glsl/glsl_lexer.ll
> +++ b/src/glsl/glsl_lexer.ll
> @@ -341,12 +341,13 @@ usampler2DArray KEYWORD(130, 300, 130, 300, USAMPLER2DARRAY);
>
> /* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */
> /* these are reserved but not defined in GLSL 3.00 */
> -sampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, SAMPLER2DMS);
> -isampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMS);
> -usampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, USAMPLER2DMS);
> -sampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, SAMPLER2DMSARRAY);
> -isampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMSARRAY);
> -usampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 0, yyextra->ARB_texture_multisample_enable, USAMPLER2DMSARRAY);
> + /* these are needed for GLES 3.1 */
> +sampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, SAMPLER2DMS);
> +isampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMS);
> +usampler2DMS KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, USAMPLER2DMS);
> +sampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, SAMPLER2DMSARRAY);
> +isampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, ISAMPLER2DMSARRAY);
> +usampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_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);
> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
> index 4612071..ce78622 100644
> --- a/src/glsl/glsl_parser_extras.h
> +++ b/src/glsl/glsl_parser_extras.h
> @@ -221,6 +221,11 @@ struct _mesa_glsl_parse_state {
> || EXT_separate_shader_objects_enable;
> }
>
> + bool has_texture_multisample() const
> + {
> + return ARB_texture_multisample_enable || is_version(410, 310);
This should certainly be is_version(150, 310) right?
> + }
> +
> bool has_double() const
> {
> return ARB_gpu_shader_fp64_enable || is_version(400, 0);
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list