-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 09/05/2011 02:44 PM, Marek Olšák wrote: > The depth should be in W. > --- > src/mesa/program/ir_to_mesa.cpp | 15 ++++++++++++--- > 1 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp > index 9813c4a..f705dc7 100644 > --- a/src/mesa/program/ir_to_mesa.cpp > +++ b/src/mesa/program/ir_to_mesa.cpp > @@ -2156,6 +2156,8 @@ ir_to_mesa_visitor::visit(ir_texture *ir) > break; > } > > + const glsl_type *sampler_type = ir->sampler->type; > + > if (ir->projector) { > if (opcode == OPCODE_TEX) { > /* Slot the projector in as the last component of the coord. */ > @@ -2187,6 +2189,10 @@ ir_to_mesa_visitor::visit(ir_texture *ir) > tmp_src = get_temp(glsl_type::vec4_type); > dst_reg tmp_dst = dst_reg(tmp_src); > > + /* Projective division not allowed for shadow2DArray. */ > + assert(sampler_type->sampler_dimensionality != GLSL_SAMPLER_DIM_2D > || > + !sampler_type->sampler_array); > +
It's not allowed for 1D array textures or cube map array textures (in GL_ARB_texture_cube_map_array) either. The assertion should probably be assert(!sampler_type->sampler_array); > tmp_dst.writemask = WRITEMASK_Z; > emit(ir, OPCODE_MOV, tmp_dst, this->result); > > @@ -2211,7 +2217,12 @@ ir_to_mesa_visitor::visit(ir_texture *ir) > * coord. > */ > ir->shadow_comparitor->accept(this); > - coord_dst.writemask = WRITEMASK_Z; > + if (sampler_type->sampler_dimensionality == GLSL_SAMPLER_DIM_2D && > + sampler_type->sampler_array) { > + coord_dst.writemask = WRITEMASK_W; > + } else { > + coord_dst.writemask = WRITEMASK_Z; > + } It's probably worth adding a note here and in glsl_to_tgsi that this will need updates for cube map array textures. > emit(ir, OPCODE_MOV, coord_dst, this->result); > coord_dst.writemask = WRITEMASK_XYZW; > } > @@ -2235,8 +2246,6 @@ ir_to_mesa_visitor::visit(ir_texture *ir) > this->shader_program, > this->prog); > > - const glsl_type *sampler_type = ir->sampler->type; > - > switch (sampler_type->sampler_dimensionality) { > case GLSL_SAMPLER_DIM_1D: > inst->tex_target = (sampler_type->sampler_array) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk5lS4EACgkQX1gOwKyEAw8akgCfcYdEPnblPkMP8qlPJtAXnzGW dWcAn1EbxKDzxwnwz2U0znPYvaM4VDpn =Q5LC -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev