pan/midgard: Use lower_tex_without_implicit_lod

Just a bit of cleanup. lower_tex can do this lowering for us, which
should also eliminate some special cases (one less thing to fix if we
ever need texturing in tess/geom/etc, perhaps?)

Closes #2133

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-11-21 13:40:00 -05:00
parent 47c7c4263c
commit 4c43b354c3

View file

@ -499,7 +499,9 @@ optimise_nir(nir_shader *nir, unsigned quirks)
nir_lower_tex_options lower_tex_options = {
.lower_txs_lod = true,
.lower_txp = ~0
.lower_txp = ~0,
.lower_tex_without_implicit_lod =
(quirks & MIDGARD_EXPLICIT_LOD),
};
NIR_PASS(progress, nir, nir_lower_tex, &lower_tex_options);
@ -1829,15 +1831,6 @@ emit_texop_native(compiler_context *ctx, nir_tex_instr *instr,
static void
emit_tex(compiler_context *ctx, nir_tex_instr *instr)
{
/* Fixup op, since only textureLod is permitted in VS on later Midgard
* but NIR can give generic tex in some cases (which confuses the
* hardware). Interestingly, early Midgard lines up with NIR */
bool is_vertex = ctx->stage == MESA_SHADER_VERTEX;
if (is_vertex && instr->op == nir_texop_tex && ctx->quirks & MIDGARD_EXPLICIT_LOD)
instr->op = nir_texop_txl;
switch (instr->op) {
case nir_texop_tex:
case nir_texop_txb: