summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-04-27 19:09:01 -0700
committerEric Anholt <[email protected]>2016-05-02 11:06:29 -0700
commite138716d8d96a8bd53d9403635777e33698bfd2c (patch)
treedca1b9fec190c0ce0f2d413c2aeccd58e21624ef /src/gallium
parent3bee7581e68fd1ce5833b9287ee2d03f79c3d3e3 (diff)
vc4: Use the NIR cubemap normalization instead of our own.
This is one of two uses of the current QIR CSE pass according to shader-db. The NIR pass means that we'll end up doing Newton-Raphson on our RCP, which we weren't doing before, but that's probably actually a good thing.
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index b1c8b009ffc..a1646d7369e 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -403,12 +403,6 @@ ntq_emit_tex(struct vc4_compile *c, nir_tex_instr *instr)
}
if (instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE) {
- struct qreg ma = qir_FMAXABS(c, qir_FMAXABS(c, s, t), r);
- struct qreg rcp_ma = qir_RCP(c, ma);
- s = qir_FMUL(c, s, rcp_ma);
- t = qir_FMUL(c, t, rcp_ma);
- r = qir_FMUL(c, r, rcp_ma);
-
qir_TEX_R(c, r, texture_u[next_texture_u++]);
} else if (c->key->tex[unit].wrap_s == PIPE_TEX_WRAP_CLAMP_TO_BORDER ||
c->key->tex[unit].wrap_s == PIPE_TEX_WRAP_CLAMP ||
@@ -1893,6 +1887,7 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
}
}
+ NIR_PASS_V(c->s, nir_normalize_cubemap_coords);
NIR_PASS_V(c->s, nir_lower_tex, &tex_options);
if (c->fs_key && c->fs_key->light_twoside)