Here is try #2 at support for GLSL 1.30 interpolation qualifiers for i965 Gen6+.
Based on comments from Brian Paul, I got rid of the bitfields InterpOverridesFlat, InterpOverridesSmooth, and InterpOverridesNoperspective, and replaced them with an array, InterpQualifier, that specifies the interpolation qualifier for each fragment shader input. This simplifies the core mesa code a lot (at the expense of complicating i965 code only slightly), and it carries the added bonuses that (a) there's no danger of the bitfields falling out of sync and resulting in nonsensical combinations, and (b) the code won't break if we ever increase the number of fragment shader inputs beyond 64. The most substantial differences from v1 are in patch 1/8 (which creates the InterpQualifier array) and patch 8/8 (which took on a bit of added complexity in brw_compute_barycentric_interp_modes() due to not having access to interpolation mode bitfields). [PATCH v2 1/8] mesa: Expose GLSL interpolation qualifiers in gl_fragment_program. [PATCH v2 2/8] glsl: Distinguish between no interpolation qualifier and 'smooth' [PATCH v2 3/8] glsl: add ir_variable::determine_interpolation_mode() function. [PATCH v2 4/8] i965/fs: Fix split_virtual_grfs() when delta_xy not in a virtual register. [PATCH v2 5/8] i965/gen6+: Parameterize barycentric interpolation modes. [PATCH v2 6/8] i965/fs: use determine_interpolation_mode(). [PATCH v2 7/8] i965/gen6+: Rename GEN6_CLIP_BARYCENTRIC_ENABLE. [PATCH v2 8/8] i965/gen6+: Add support for noperspective interpolation. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev