On Tue, Apr 4, 2017 at 3:38 PM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > We already provide a default LOD for textureQueryLevels and texture() on > non-fragment stages. However, there are more cases where one is needed > such as textureSize(gsampler2DMS*) in SPIR-V. Instead of trying to list > out all of the cases one at a time, just provide the default for all TXS > and TXL operations. This fixes a shader validation error in the new > Sascha deferredmultisampling demo which uses textureSize(gsampler2DMS). > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100391 > Cc: Lionel Landwerlin <lionel.g.landwer...@intel.com> > Cc: "13.0 17.0" <mesa-sta...@lists.freedesktop.org> > --- > src/intel/compiler/brw_fs_nir.cpp | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/src/intel/compiler/brw_fs_nir.cpp > b/src/intel/compiler/brw_fs_nir.cpp > index bc1ccfb..23cd4b7 100644 > --- a/src/intel/compiler/brw_fs_nir.cpp > +++ b/src/intel/compiler/brw_fs_nir.cpp > @@ -4380,15 +4380,6 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, > nir_tex_instr *instr) > srcs[TEX_LOGICAL_SRC_COORD_COMPONENTS] = > brw_imm_d(instr->coord_components); > srcs[TEX_LOGICAL_SRC_GRAD_COMPONENTS] = brw_imm_d(lod_components); > > - if (instr->op == nir_texop_query_levels || > - (instr->op == nir_texop_tex && stage != MESA_SHADER_FRAGMENT)) { > - /* textureQueryLevels() and texture() are implemented in terms of TXS > - * and TXL respectively, so we need to pass a valid LOD argument. > - */ > - assert(srcs[TEX_LOGICAL_SRC_LOD].file == BAD_FILE); > - srcs[TEX_LOGICAL_SRC_LOD] = brw_imm_ud(0u); > - } > - > enum opcode opcode; > switch (instr->op) { > case nir_texop_tex: > @@ -4455,6 +4446,15 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, > nir_tex_instr *instr) > unreachable("unknown texture opcode"); > } > > + /* TXS and TXL require a LOD but not everything we implement using those > + * two opcodes provides one. Provide a default LOD of 0. > + */ > + if ((opcode == SHADER_OPCODE_TXS_LOGICAL || > + opcode == SHADER_OPCODE_TXL_LOGICAL) && > + srcs[TEX_LOGICAL_SRC_LOD].file == BAD_FILE) { > + srcs[TEX_LOGICAL_SRC_LOD] = brw_imm_ud(0u); > + } > + > if (instr->op == nir_texop_tg4) { > if (instr->component == 1 && > key_tex->gather_channel_quirk_mask & (1 << texture)) { > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-stable mailing list > mesa-sta...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-stable
Looks fine to me. Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev