summaryrefslogtreecommitdiff
path: root/src/glsl/ir_function.cpp
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2015-06-17 15:07:14 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2015-06-18 13:21:44 -0400
commitc40e7ee7c47cb24264fd77ef37fab99dea4c299a (patch)
treee8cb50d3eedb2b010bd42eb3565e674131e19e83 /src/glsl/ir_function.cpp
parent6b0378e483ba53359545ac8b774dbdd81c2fab3f (diff)
glsl: handle conversions to double when comparing param matches
This allows mod(int, int) to become selected as float mod when doubles are supported. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/glsl/ir_function.cpp')
-rw-r--r--src/glsl/ir_function.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/glsl/ir_function.cpp b/src/glsl/ir_function.cpp
index 2b2643c64a..1319443900 100644
--- a/src/glsl/ir_function.cpp
+++ b/src/glsl/ir_function.cpp
@@ -148,9 +148,11 @@ get_parameter_match_type(const ir_variable *param,
if (from_type == to_type)
return PARAMETER_EXACT_MATCH;
- /* XXX: When ARB_gpu_shader_fp64 support is added, check for float->double,
- * and int/uint->double conversions
- */
+ if (to_type->base_type == GLSL_TYPE_DOUBLE) {
+ if (from_type->base_type == GLSL_TYPE_FLOAT)
+ return PARAMETER_FLOAT_TO_DOUBLE;
+ return PARAMETER_INT_TO_DOUBLE;
+ }
if (to_type->base_type == GLSL_TYPE_FLOAT)
return PARAMETER_INT_TO_FLOAT;