diff options
author | Paul Berry <[email protected]> | 2012-12-05 10:47:55 -0800 |
---|---|---|
committer | Paul Berry <[email protected]> | 2012-12-14 10:48:52 -0800 |
commit | 3e81c666db6940675eca623044e5b372dc6b7756 (patch) | |
tree | ba0d5e4cbf1f967d5ac0b600a471f21f52340905 /src/glsl/ir.h | |
parent | 3c9c17db4a02ab5b1b2f60b9655c20319d9a9093 (diff) |
glsl: Create a field to store fractional varying locations.
Currently, the location of each varying is recorded in ir_variable as
a multiple of the size of a vec4. In order to pack varyings, we need
to be able to record, e.g. that a vec2 is stored in the second half of
a varying slot rather than the first half.
This patch introduces a field ir_variable::location_frac, which
represents the offset within a vec4 where a varying's value is stored.
Varyings that are not subject to packing will always have a
location_frac value of zero.
Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r-- | src/glsl/ir.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h index e2ecb3d9dfd..85fc5ce95da 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -446,6 +446,15 @@ public: unsigned is_unmatched_generic_inout:1; /** + * If non-zero, then this variable may be packed along with other variables + * into a single varying slot, so this offset should be applied when + * accessing components. For example, an offset of 1 means that the x + * component of this variable is actually stored in component y of the + * location specified by \c location. + */ + unsigned location_frac:2; + + /** * \brief Layout qualifier for gl_FragDepth. * * This is not equal to \c ir_depth_layout_none if and only if this |