[Mesa-dev] [PATCH v2 09/12] mesa: Add an option so driver can opt out of varying packing.

Paul Berry stereotype441 at gmail.com
Thu Dec 13 13:58:19 PST 2012

On hardware that supports a limited number of texture indirections,
varying packing will comsume an extra texture indirection, since ALU
operations are needed in the fragment shader to unpack the varyings
before any texturing can be done.

This patch introduces a new driver option,
ctx->Const.DisableVaryingPacking, which can be used by a driver to opt
out of varying packing if the extra texture indirection is costly
enough to outweigh the advantages of packing varyings.

Cc: Marek Olšák <maraeo at gmail.com>
 src/mesa/main/mtypes.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 11a8322..b59498f 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2928,6 +2928,17 @@ struct gl_constants
    /** GL_ARB_map_buffer_alignment */
    GLuint MinMapBufferAlignment;
+   /**
+    * Disable varying packing.  This is out of spec, but potentially useful
+    * for older platforms that supports a limited number of texture
+    * indirections--on these platforms, unpacking the varyings in the fragment
+    * shader increases the number of texture indirections by 1, which might
+    * make some shaders not executable at all.
+    *
+    * Drivers that support transform feedback must set this value to GL_FALSE.
+    */
+   GLboolean DisableVaryingPacking;

More information about the mesa-dev mailing list