From 664041f20460f0d5e196e4c7bdfe5f9f35f2349d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 25 Jul 2024 07:53:53 +1000 Subject: [PATCH] gallivm/sample: fix sampling indirect from vertex shaders When doing indirect sampling, we just fetch one value per lane, but type.length == 1 caused num_quads to be 0 which caused things to crash. Fixes dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex.sampler2d Cc: mesa-stable Reviewed-by: Konstantin Seurer Reviewed-by: Roland Scheidegger Part-of: (cherry picked from commit 3e01422a16a16028e74bbb11ec9c7bf99a1d81d0) --- .pick_status.json | 2 +- src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 55021fa1c42..6cef2836a84 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1234,7 +1234,7 @@ "description": "gallivm/sample: fix sampling indirect from vertex shaders", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 4887a58cda2..bc70ce1c42a 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -3379,7 +3379,7 @@ lp_build_sample_soa_code(struct gallivm_state *gallivm, const enum pipe_texture_target target = static_texture_state->target; const unsigned dims = texture_dims(target); - const unsigned num_quads = type.length / 4; + const unsigned num_quads = type.length == 1 ? 1 : type.length / 4; struct lp_build_sample_context bld; struct lp_static_sampler_state derived_sampler_state = *static_sampler_state; LLVMTypeRef i32t = LLVMInt32TypeInContext(gallivm->context);