summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2020-08-13 22:12:12 -0400
committerMarek Olšák <marek.olsak@amd.com>2020-09-02 22:45:38 -0400
commit0464ee7f9d9383175c31192500ee9e6d9f01fe60 (patch)
tree7608947f8d7d358a1dee0b8fdca1fd0e0165f71e
parentbf23ff83e69a76424ea083c6641b952868e4b87c (diff)
radeonsi: don't crash if input_usage_mask is 0 for a VS input
This will start happening with the lowered IO intrinstics and new scanning code. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6445>
-rw-r--r--src/gallium/drivers/radeonsi/si_shader_llvm_vs.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_vs.c b/src/gallium/drivers/radeonsi/si_shader_llvm_vs.c
index 62ec43cd195..f0c93ac3264 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm_vs.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm_vs.c
@@ -132,8 +132,14 @@ static void load_input_vs(struct si_shader_context *ctx, unsigned input_index, L
return;
}
- /* Do multiple loads for special formats. */
unsigned required_channels = util_last_bit(info->input_usage_mask[input_index]);
+ if (required_channels == 0) {
+ for (unsigned i = 0; i < 4; ++i)
+ out[i] = LLVMGetUndef(ctx->ac.f32);
+ return;
+ }
+
+ /* Do multiple loads for special formats. */
LLVMValueRef fetches[4];
unsigned num_fetches;
unsigned fetch_stride;