OSDN Git Service

radv: bitcast 16-bit outputs to integers
authorRhys Perry <pendingchaos02@gmail.com>
Thu, 6 Dec 2018 12:10:41 +0000 (12:10 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 6 Mar 2019 11:46:36 +0000 (11:46 +0000)
16-bit outputs are stored as 16-bit floats in the outputs array, so they
have to be bitcast.

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 64065aa504c4872a15f7b0894b6037a6b2bcae65)

src/amd/vulkan/radv_nir_to_llvm.c

index 58da610..f5ded40 100644 (file)
@@ -2411,7 +2411,7 @@ si_llvm_init_export_args(struct radv_shader_context *ctx,
                        if (is_16bit) {
                                for (unsigned chan = 0; chan < 4; chan++)
                                        values[chan] = LLVMBuildZExt(ctx->ac.builder,
-                                                                     values[chan],
+                                                                     ac_to_integer(&ctx->ac, values[chan]),
                                                                      ctx->ac.i32, "");
                        }
                        break;
@@ -2422,7 +2422,7 @@ si_llvm_init_export_args(struct radv_shader_context *ctx,
                        if (is_16bit) {
                                for (unsigned chan = 0; chan < 4; chan++)
                                        values[chan] = LLVMBuildSExt(ctx->ac.builder,
-                                                                     values[chan],
+                                                                     ac_to_integer(&ctx->ac, values[chan]),
                                                                      ctx->ac.i32, "");
                        }
                        break;