diff options
author | Eric Anholt <[email protected]> | 2016-04-27 19:17:03 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2016-05-02 11:06:29 -0700 |
commit | 4b326341f3efc2d5e534ddb755d23a35806bf8f6 (patch) | |
tree | 90393b218b838cad5cc8ed6816a0916fe1f1e819 | |
parent | 2f98bc100d471b0ec7ea50bc3ab05ca118accbec (diff) |
vc4: Just use NIR lowering for texture projection.
This means doing Newton-Raphson on the RCP, but it's probably actually a
good thing to be accurate on.
-rw-r--r-- | src/gallium/drivers/vc4/vc4_program.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c index 692d9d6d7d9..3c17676e439 100644 --- a/src/gallium/drivers/vc4/vc4_program.c +++ b/src/gallium/drivers/vc4/vc4_program.c @@ -336,8 +336,8 @@ ntq_emit_txf(struct vc4_compile *c, nir_tex_instr *instr) static void ntq_emit_tex(struct vc4_compile *c, nir_tex_instr *instr) { - struct qreg s, t, r, lod, proj, compare; - bool is_txb = false, is_txl = false, has_proj = false; + struct qreg s, t, r, lod, compare; + bool is_txb = false, is_txl = false; unsigned unit = instr->texture_index; if (instr->op == nir_texop_txf) { @@ -367,12 +367,6 @@ ntq_emit_tex(struct vc4_compile *c, nir_tex_instr *instr) case nir_tex_src_comparitor: compare = ntq_get_src(c, instr->src[i].src, 0); break; - case nir_tex_src_projector: - proj = qir_RCP(c, ntq_get_src(c, instr->src[i].src, 0)); - s = qir_FMUL(c, s, proj); - t = qir_FMUL(c, t, proj); - has_proj = true; - break; default: unreachable("unknown texture source"); } @@ -440,9 +434,6 @@ ntq_emit_tex(struct vc4_compile *c, nir_tex_instr *instr) struct qreg u0 = qir_uniform_f(c, 0.0f); struct qreg u1 = qir_uniform_f(c, 1.0f); if (c->key->tex[unit].compare_mode) { - if (has_proj) - compare = qir_FMUL(c, compare, proj); - switch (c->key->tex[unit].compare_func) { case PIPE_FUNC_NEVER: depth_output = qir_uniform_f(c, 0.0f); @@ -1846,10 +1837,7 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage, */ .lower_rect = false, - /* We want to use this, but we don't want to newton-raphson - * its rcp. - */ - .lower_txp = false, + .lower_txp = ~0, /* Apply swizzles to all samplers. */ .swizzle_result = ~0, |