i965: fs: Add fixup for textureSize on Gen6/7
V2: Moved up into emit(ir_texture *) to avoid duplication and fix ordering for Gen7; Gen6 math quirks moved into previous patches. Tested on Gen6 only; passes all the cube_map_array piglits. V3: Fixed weird whitespace V4: Use sampler->type; otherwise broken on arrays of samplers. v5: Minor style fixes (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:
committed by
Eric Anholt
parent
6e34723ac9
commit
d2dbba8755
@@ -1371,6 +1371,17 @@ fs_visitor::visit(ir_texture *ir)
|
||||
if (ir->shadow_comparitor)
|
||||
inst->shadow_compare = true;
|
||||
|
||||
/* fixup #layers for cube map arrays */
|
||||
if (ir->op == ir_txs) {
|
||||
glsl_type const *type = ir->sampler->type;
|
||||
if (type->sampler_dimensionality == GLSL_SAMPLER_DIM_CUBE &&
|
||||
type->sampler_array) {
|
||||
fs_reg depth = dst;
|
||||
depth.reg_offset = 2;
|
||||
emit_math(SHADER_OPCODE_INT_QUOTIENT, depth, depth, fs_reg(6));
|
||||
}
|
||||
}
|
||||
|
||||
swizzle_result(ir, dst, sampler);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user