diff options
author | Kenneth Graunke <[email protected]> | 2011-01-08 23:49:23 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2011-01-31 11:10:59 -0800 |
commit | c5a27b5939427bdc95c926b450ed3de1ff4baafb (patch) | |
tree | ed0518338cbec7badc6a699a94167dbec5248429 /src/glsl/ir.h | |
parent | 60c8e91c795dc604c08977d5773f96a4de8e402b (diff) |
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.
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r-- | src/glsl/ir.h | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 1fce272756e..878c1779d85 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -1190,21 +1190,21 @@ enum ir_texture_opcode { * selected from \c ir_texture_opcodes. In the printed IR, these will * appear as: * - * Texel offset - * | Projection divisor - * | | Shadow comparitor - * | | | - * v v v - * (tex (sampler) (coordinate) (0 0 0) (1) ( )) - * (txb (sampler) (coordinate) (0 0 0) (1) ( ) (bias)) - * (txl (sampler) (coordinate) (0 0 0) (1) ( ) (lod)) - * (txd (sampler) (coordinate) (0 0 0) (1) ( ) (dPdx dPdy)) - * (txf (sampler) (coordinate) (0 0 0) (lod)) + * Texel offset (0 or an expression) + * | Projection divisor + * | | Shadow comparitor + * | | | + * v v v + * (tex <sampler> <coordinate> 0 1 ( )) + * (txb <sampler> <coordinate> 0 1 ( ) <bias>) + * (txl <sampler> <coordinate> 0 1 ( ) <lod>) + * (txd <sampler> <coordinate> 0 1 ( ) (dPdx dPdy)) + * (txf <sampler> <coordinate> 0 <lod>) */ class ir_texture : public ir_rvalue { public: ir_texture(enum ir_texture_opcode op) - : op(op), projector(NULL), shadow_comparitor(NULL) + : op(op), projector(NULL), shadow_comparitor(NULL), offset(NULL) { this->ir_type = ir_type_texture; } @@ -1258,8 +1258,8 @@ public: */ ir_rvalue *shadow_comparitor; - /** Explicit texel offsets. */ - signed char offsets[3]; + /** Texel offset. */ + ir_rvalue *offset; union { ir_rvalue *lod; /**< Floating point LOD */ |