Mesa (master): i965: Fix a crash in the texture gradient lowering pass with cube samplers

Iago Toral Quiroga itoral at kemper.freedesktop.org
Mon Feb 16 10:15:13 UTC 2015


Module: Mesa
Branch: master
Commit: 0a811e1d1e5b23ecefda3f4569f68198e2612f3f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a811e1d1e5b23ecefda3f4569f68198e2612f3f

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Feb 13 08:29:32 2015 +0100

i965: Fix a crash in the texture gradient lowering pass with cube samplers

We need to swizzle the rhs to match the number of components in the writemask,
otherwise we'll hit an assertion in ir_assignment.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp b/src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp
index 9679d28..0424003 100644
--- a/src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp
+++ b/src/mesa/drivers/dri/i965/brw_lower_texture_gradients.cpp
@@ -124,7 +124,9 @@ lower_texture_grad_visitor::visit_leave(ir_texture *ir)
       new(mem_ctx) ir_variable(grad_type, "size", ir_var_temporary);
    if (ir->sampler->type->sampler_dimensionality == GLSL_SAMPLER_DIM_CUBE) {
       base_ir->insert_before(size);
-      base_ir->insert_before(assign(size, expr(ir_unop_i2f, txs), WRITEMASK_XY));
+      base_ir->insert_before(assign(size,
+                                    swizzle_for_size(expr(ir_unop_i2f, txs), 2),
+                                    WRITEMASK_XY));
       base_ir->insert_before(assign(size, new(mem_ctx) ir_constant(1.0f), WRITEMASK_Z));
    } else {
       emit(size, expr(ir_unop_i2f,




More information about the mesa-commit mailing list