From 6df922f4384b05f259bc836fc6d626e5c8fe6468 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Thu, 25 Oct 2018 16:40:13 +0200 Subject: [PATCH] mesa/glsl: add support for EXT_shader_implicit_conversions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit EXT_shader_implicit_conversions adds support for implicit conversions for GLES 3.1 and above. This is essentially a subset of ARB_gpu_shader5, and augments OES_gpu_shader5. Signed-off-by: Erik Faye-Lund Reviewed-by: Tapani Pälli --- src/compiler/glsl/glsl_parser_extras.cpp | 1 + src/compiler/glsl/glsl_parser_extras.h | 5 ++++- src/compiler/glsl/ir_function.cpp | 3 ++- src/mesa/main/extensions_table.h | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index 1bdd7c4bf17..2a58908c226 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -718,6 +718,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(EXT_separate_shader_objects), EXT(EXT_shader_framebuffer_fetch), EXT(EXT_shader_framebuffer_fetch_non_coherent), + EXT(EXT_shader_implicit_conversions), EXT(EXT_shader_integer_mix), EXT_AEP(EXT_shader_io_blocks), EXT(EXT_shader_samples_identical), diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h index e1144a19c15..985200ecab5 100644 --- a/src/compiler/glsl/glsl_parser_extras.h +++ b/src/compiler/glsl/glsl_parser_extras.h @@ -346,13 +346,14 @@ struct _mesa_glsl_parse_state { bool has_implicit_conversions() const { - return is_version(120, 0); + return EXT_shader_implicit_conversions_enable || is_version(120, 0); } bool has_implicit_uint_to_int_conversion() const { return ARB_gpu_shader5_enable || MESA_shader_integer_functions_enable || + EXT_shader_implicit_conversions_enable || is_version(400, 0); } @@ -806,6 +807,8 @@ struct _mesa_glsl_parse_state { bool EXT_shader_framebuffer_fetch_warn; bool EXT_shader_framebuffer_fetch_non_coherent_enable; bool EXT_shader_framebuffer_fetch_non_coherent_warn; + bool EXT_shader_implicit_conversions_enable; + bool EXT_shader_implicit_conversions_warn; bool EXT_shader_integer_mix_enable; bool EXT_shader_integer_mix_warn; bool EXT_shader_io_blocks_enable; diff --git a/src/compiler/glsl/ir_function.cpp b/src/compiler/glsl/ir_function.cpp index 3ee0d170fb2..97262f0f4b9 100644 --- a/src/compiler/glsl/ir_function.cpp +++ b/src/compiler/glsl/ir_function.cpp @@ -274,7 +274,8 @@ choose_best_inexact_overload(_mesa_glsl_parse_state *state, * assume everything supported in any GLSL version is available. */ if (!state || state->is_version(400, 0) || state->ARB_gpu_shader5_enable || - state->MESA_shader_integer_functions_enable) { + state->MESA_shader_integer_functions_enable || + state->EXT_shader_implicit_conversions_enable) { for (ir_function_signature **sig = matches; sig < matches + num_matches; sig++) { if (is_best_inexact_overload(actual_parameters, matches, num_matches, *sig)) return *sig; diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 47db1583135..e3bf7c9fcee 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -261,6 +261,7 @@ EXT(EXT_separate_shader_objects , dummy_true EXT(EXT_separate_specular_color , dummy_true , GLL, x , x , x , 1997) EXT(EXT_shader_framebuffer_fetch , EXT_shader_framebuffer_fetch , GLL, GLC, x , ES2, 2013) EXT(EXT_shader_framebuffer_fetch_non_coherent, EXT_shader_framebuffer_fetch_non_coherent, GLL, GLC, x, ES2, 2018) +EXT(EXT_shader_implicit_conversions , dummy_true , x , x , x , 31, 2013) EXT(EXT_shader_integer_mix , EXT_shader_integer_mix , GLL, GLC, x , 30, 2013) EXT(EXT_shader_io_blocks , dummy_true , x , x , x , 31, 2014) EXT(EXT_shader_samples_identical , EXT_shader_samples_identical , GLL, GLC, x , 31, 2015) -- 2.30.2