Reviewed-by: Marek Olšák <marek.ol...@amd.com> Note that radeonsi doesn't support MSAA images.
Marek On Wed, May 30, 2018 at 4:48 AM, Alex Smith <asm...@feralinteractive.com> wrote: > 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 <asm...@feralinteractive.com> > Cc: "18.1" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c > b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c > index 1c244fa3c0..d0dd4e7cab 100644 > --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c > +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c > @@ -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); > -- > 2.14.3 > > _______________________________________________ > mesa-stable mailing list > mesa-sta...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-stable >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev