Mesa (master): i965: vs: Add fixup for textureSize with cube array samplers
Eric Anholt
anholt at kemper.freedesktop.org
Fri Dec 14 23:37:13 UTC 2012
Module: Mesa
Branch: master
Commit: f6a3fda25d2d9cf825c38e3e46f7cf44bd7c99e1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f6a3fda25d2d9cf825c38e3e46f7cf44bd7c99e1
Author: Chris Forbes <chrisf at ijw.co.nz>
Date: Thu Nov 22 21:32:08 2012 +1300
i965: vs: Add fixup for textureSize with cube array samplers
V3: Fixed weird whitespace
V4: Use sampler's type rather than variable's type; otherwise broken
with arrays of samplers. (Thanks Eric)
v5: Fix a couple more style nits (by anholt)
Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 97593d0..104057c 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2117,6 +2117,19 @@ vec4_visitor::visit(ir_texture *ir)
emit(inst);
+ /* fixup num layers (z) for cube arrays: hardware returns faces * layers;
+ * spec requires layers.
+ */
+ if (ir->op == ir_txs) {
+ glsl_type const *type = ir->sampler->type;
+ if (type->sampler_dimensionality == GLSL_SAMPLER_DIM_CUBE &&
+ type->sampler_array) {
+ emit_math(SHADER_OPCODE_INT_QUOTIENT,
+ with_writemask(inst->dst, WRITEMASK_Z),
+ src_reg(inst->dst), src_reg(6));
+ }
+ }
+
swizzle_result(ir, src_reg(inst->dst), sampler);
}
More information about the mesa-commit
mailing list