Signed-off-by: Chris Forbes <chr...@ijw.co.nz>
---
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp 
b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index f243699..9859992 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2112,6 +2112,17 @@ 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->variable_referenced()->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);
 }
 
-- 
1.8.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to