Yes, I'm OK with pushing this. Marek
On Thu, May 31, 2018 at 3:53 AM, Alex Smith <asm...@feralinteractive.com> wrote: > Hmm, the crash I was seeing is in RenderDoc from one of its own shaders. > Maybe it's missing some support checks? I'll look into it. > > If you're happy with this though, I'll push it. > > Thanks, > Alex > > On 30 May 2018 at 21:17, Marek Olšák <mar...@gmail.com> wrote: > >> 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_di >>> m(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