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@ijw.co.nz> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
1cb57ea493
commit
f6a3fda25d
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue