OSDN Git Service

radv: ensure export arguments are always float
authorRhys Perry <pendingchaos02@gmail.com>
Thu, 6 Dec 2018 12:11:00 +0000 (12:11 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 6 Mar 2019 11:46:45 +0000 (11:46 +0000)
So that the signature is correct and consistent, the inputs to a export
intrinsic should always be 32-bit floats.

This and the previous commit fixes a large amount crashes from
dEQP-VK.spirv_assembly.instruction.graphics.16bit_storage.input_output_int_*
tests

Fixes: b722b29f10d ('radv: add support for 16bit input/output')
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
(cherry picked from commit 0ca550e01ac55c67c2deef50f5cb750a0181352b)

src/amd/vulkan/radv_nir_to_llvm.c

index f5ded40..f11dfa4 100644 (file)
@@ -2475,12 +2475,8 @@ si_llvm_init_export_args(struct radv_shader_context *ctx,
        } else
                memcpy(&args->out[0], values, sizeof(values[0]) * 4);
 
-       for (unsigned i = 0; i < 4; ++i) {
-               if (!(args->enabled_channels & (1 << i)))
-                       continue;
-
+       for (unsigned i = 0; i < 4; ++i)
                args->out[i] = ac_to_float(&ctx->ac, args->out[i]);
-       }
 }
 
 static void