summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2016-10-13 16:40:11 +0200
committerNicolai Hähnle <[email protected]>2016-10-17 19:09:45 +0200
commitc3ce0d22b4cf95992cf402a70beca3f2877bcf98 (patch)
tree9158e2eff350b2c95b4ae21e87f585bbc3a87cc8
parent1dd99a15a4e0ffeabe0d50cbb402045e8e34d875 (diff)
st/glsl_to_tgsi: fix [ui]vec[34] conversion to double
The corresponding opcodes for integers need to be treated the same as F2D. Fixes GL45-CTS.gpu_shader_fp64.conversions. Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mesa/state_tracker/st_glsl_to_tgsi.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 682c0347ddf..f49a8734312 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -869,8 +869,9 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
} else {
/* some opcodes are special case in what they use as sources
- - F2D is a float src0, DLDEXP is integer src1 */
- if (op == TGSI_OPCODE_F2D ||
+ - [FUI]2D/[UI]2I64 is a float/[u]int src0, DLDEXP is integer src1 */
+ if (op == TGSI_OPCODE_F2D || op == TGSI_OPCODE_U2D || op == TGSI_OPCODE_I2D ||
+ op == TGSI_OPCODE_I2I64 || op == TGSI_OPCODE_U2I64 ||
op == TGSI_OPCODE_DLDEXP ||
(op == TGSI_OPCODE_UCMP && dst_is_64bit[0])) {
dinst->src[j].swizzle = MAKE_SWIZZLE4(swz, swz, swz, swz);