mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 06:00:10 +01:00
radeonsi: Fix crash on shaders using MSAA image load/store
The value returned by tgsi_util_get_texture_coord_dim() does not account for the sample index. This means image_fetch_coords() will not fetch it, leading to a null deref in ac_build_image_opcode() which expects it to be present (the return value of ac_num_coords() *does* include the sample index). Signed-off-by: Alex Smith <asmith@feralinteractive.com> Cc: "18.1" <mesa-stable@lists.freedesktop.org> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
dfff9fb6f8
commit
01a2414045
1 changed files with 7 additions and 1 deletions
|
|
@ -276,10 +276,16 @@ static void image_fetch_coords(
|
|||
struct si_shader_context *ctx = si_shader_context(bld_base);
|
||||
LLVMBuilderRef builder = ctx->ac.builder;
|
||||
unsigned target = inst->Memory.Texture;
|
||||
const unsigned num_coords = tgsi_util_get_texture_coord_dim(target);
|
||||
unsigned num_coords = tgsi_util_get_texture_coord_dim(target);
|
||||
LLVMValueRef tmp;
|
||||
int chan;
|
||||
|
||||
if (target == TGSI_TEXTURE_2D_MSAA ||
|
||||
target == TGSI_TEXTURE_2D_ARRAY_MSAA) {
|
||||
/* Need the sample index as well. */
|
||||
num_coords++;
|
||||
}
|
||||
|
||||
for (chan = 0; chan < num_coords; ++chan) {
|
||||
tmp = lp_build_emit_fetch(bld_base, inst, src, chan);
|
||||
tmp = ac_to_integer(&ctx->ac, tmp);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue