Commit 6df922f4 authored by Erik Faye-Lund 's avatar Erik Faye-Lund

mesa/glsl: add support for EXT_shader_implicit_conversions

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 's avatarErik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Tapani Pälli's avatarTapani Pälli <tapani.palli@intel.com>
parent ecab2d6f
...@@ -718,6 +718,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { ...@@ -718,6 +718,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(EXT_separate_shader_objects), EXT(EXT_separate_shader_objects),
EXT(EXT_shader_framebuffer_fetch), EXT(EXT_shader_framebuffer_fetch),
EXT(EXT_shader_framebuffer_fetch_non_coherent), EXT(EXT_shader_framebuffer_fetch_non_coherent),
EXT(EXT_shader_implicit_conversions),
EXT(EXT_shader_integer_mix), EXT(EXT_shader_integer_mix),
EXT_AEP(EXT_shader_io_blocks), EXT_AEP(EXT_shader_io_blocks),
EXT(EXT_shader_samples_identical), EXT(EXT_shader_samples_identical),
......
...@@ -346,13 +346,14 @@ struct _mesa_glsl_parse_state { ...@@ -346,13 +346,14 @@ struct _mesa_glsl_parse_state {
bool has_implicit_conversions() const 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 bool has_implicit_uint_to_int_conversion() const
{ {
return ARB_gpu_shader5_enable || return ARB_gpu_shader5_enable ||
MESA_shader_integer_functions_enable || MESA_shader_integer_functions_enable ||
EXT_shader_implicit_conversions_enable ||
is_version(400, 0); is_version(400, 0);
} }
...@@ -806,6 +807,8 @@ struct _mesa_glsl_parse_state { ...@@ -806,6 +807,8 @@ struct _mesa_glsl_parse_state {
bool EXT_shader_framebuffer_fetch_warn; bool EXT_shader_framebuffer_fetch_warn;
bool EXT_shader_framebuffer_fetch_non_coherent_enable; bool EXT_shader_framebuffer_fetch_non_coherent_enable;
bool EXT_shader_framebuffer_fetch_non_coherent_warn; 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_enable;
bool EXT_shader_integer_mix_warn; bool EXT_shader_integer_mix_warn;
bool EXT_shader_io_blocks_enable; bool EXT_shader_io_blocks_enable;
......
...@@ -274,7 +274,8 @@ choose_best_inexact_overload(_mesa_glsl_parse_state *state, ...@@ -274,7 +274,8 @@ choose_best_inexact_overload(_mesa_glsl_parse_state *state,
* assume everything supported in any GLSL version is available. * assume everything supported in any GLSL version is available.
*/ */
if (!state || state->is_version(400, 0) || state->ARB_gpu_shader5_enable || 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++) { for (ir_function_signature **sig = matches; sig < matches + num_matches; sig++) {
if (is_best_inexact_overload(actual_parameters, matches, num_matches, *sig)) if (is_best_inexact_overload(actual_parameters, matches, num_matches, *sig))
return *sig; return *sig;
......
...@@ -261,6 +261,7 @@ EXT(EXT_separate_shader_objects , dummy_true ...@@ -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_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 , 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_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_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_io_blocks , dummy_true , x , x , x , 31, 2014)
EXT(EXT_shader_samples_identical , EXT_shader_samples_identical , GLL, GLC, x , 31, 2015) EXT(EXT_shader_samples_identical , EXT_shader_samples_identical , GLL, GLC, x , 31, 2015)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment