summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2018-03-01 15:21:52 +1100
committerTimothy Arceri <[email protected]>2018-03-06 11:44:06 +1100
commit71b3d681d88435b7397ad3fe896eb1fe7621b86a (patch)
tree0db26676c8f1f1b8c1729ca270406e04e1029990 /src/gallium/drivers/radeonsi
parent20bd0f6a2bd631aec06d5bdbcf72fa562ec8a9a2 (diff)
radeonsi/nir: fix handling of doubles for gs inputs
Fixes piglit test: tests/spec/arb_gpu_shader_fp64/execution/explicit-location-gs-fs-vs.shader_test Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index f3a37d71a0a..2ae2544e3f7 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1693,10 +1693,14 @@ static LLVMValueRef si_nir_load_input_gs(struct ac_shader_abi *abi,
{
struct si_shader_context *ctx = si_shader_context_from_abi(abi);
- LLVMValueRef value[8];
+ LLVMValueRef value[4];
for (unsigned i = component; i < num_components + component; i++) {
+ unsigned offset = i;
+ if (llvm_type_is_64bit(ctx, type))
+ offset *= 2;
+
value[i] = si_llvm_load_input_gs(&ctx->abi, driver_location / 4,
- vertex_index, type, i);
+ vertex_index, type, offset);
}
return ac_build_varying_gather_values(&ctx->ac, value, num_components, component);