From: Iago Toral Quiroga Date: Fri, 13 Feb 2015 07:29:32 +0000 (+0100) Subject: i965: Fix a crash in the texture gradient lowering pass with cube samplers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0a811e1d1e5b23ecefda3f4569f68198e2612f3f;p=mesa.git 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 --- 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 9679d284207..0424003ffd5 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,