From 90537e1a0e97737c123742fb88fce7efd2284c04 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 21 Jun 2016 10:26:34 -0700 Subject: [PATCH] MESA_shader_integer_functions: Allow implicit int->uint conversions Signed-off-by: Ian Romanick Reviewed-by: Matt Turner --- src/compiler/glsl/ast_to_hir.cpp | 3 ++- src/compiler/glsl_types.cpp | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 1b882900081..3b00b69e3fd 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -244,7 +244,8 @@ get_implicit_conversion_operation(const glsl_type *to, const glsl_type *from, } case GLSL_TYPE_UINT: - if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable) + if (!state->is_version(400, 0) && !state->ARB_gpu_shader5_enable + && !state->MESA_shader_integer_functions_enable) return (ir_expression_operation)0; switch (from->base_type) { case GLSL_TYPE_INT: return ir_unop_i2u; diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp index e9b58dde43a..8a0669538e0 100644 --- a/src/compiler/glsl_types.cpp +++ b/src/compiler/glsl_types.cpp @@ -1403,11 +1403,14 @@ glsl_type::can_implicitly_convert_to(const glsl_type *desired, if (desired->is_float() && this->is_integer()) return true; - /* With GLSL 4.0 / ARB_gpu_shader5, int can be converted to uint. - * Note that state may be NULL here, when resolving function calls in the - * linker. By this time, all the state-dependent checks have already - * happened though, so allow anything that's allowed in any shader version. */ - if ((!state || state->is_version(400, 0) || state->ARB_gpu_shader5_enable) && + /* With GLSL 4.0, ARB_gpu_shader5, or MESA_shader_integer_functions, int + * can be converted to uint. Note that state may be NULL here, when + * resolving function calls in the linker. By this time, all the + * state-dependent checks have already happened though, so allow anything + * that's allowed in any shader version. + */ + if ((!state || state->is_version(400, 0) || state->ARB_gpu_shader5_enable || + state->MESA_shader_integer_functions_enable) && desired->base_type == GLSL_TYPE_UINT && this->base_type == GLSL_TYPE_INT) return true; -- 2.30.2