glsl: Change texel offsets to a single vector rvalue.

Having these as actual integer values makes it difficult to implement
the texture*Offset built-in functions, since the offset is actually a
function parameter (which doesn't have a constant value).

The original rationale was that some hardware needs these offset baked
into the instruction opcode.  However, at least i965 should be able to
support non-constant offsets.  Others should be able to rely on inlining
and constant propagation.
This commit is contained in:
Kenneth Graunke
2011-01-08 23:49:23 -08:00
parent 60c8e91c79
commit c5a27b5939
8 changed files with 42 additions and 29 deletions

View File

@@ -192,7 +192,15 @@ void ir_print_visitor::visit(ir_texture *ir)
ir->coordinate->accept(this);
printf(" (%d %d %d) ", ir->offsets[0], ir->offsets[1], ir->offsets[2]);
printf(" ");
if (ir->offset != NULL) {
ir->offset->accept(this);
} else {
printf("0");
}
printf(" ");
if (ir->op != ir_txf) {
if (ir->projector)