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 <erik.faye-lund@collabora.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
@@ -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),
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user