st/glsl_to_tgsi: fix [ui]vec[34] conversion to double
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 13 Oct 2016 14:40:11 +0000 (16:40 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Mon, 17 Oct 2016 17:09:45 +0000 (19:09 +0200)
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 <marek.olsak@amd.com>
src/mesa/state_tracker/st_glsl_to_tgsi.cpp

index 682c0347ddf72f79c4b6760bf55e8a1a1d40cddd..f49a87343129b809badbdbaa2b5ed7caf9e51308 100644 (file)
@@ -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);