Skip to content
  • Paul Berry's avatar
    mesa: Fix transform feedback of unsubscripted arrays. · 33fe0211
    Paul Berry authored
    
    
    It is not explicitly stated in the GL 3.0 spec that transform feedback
    can be performed on a whole varying array (without supplying a
    subscript).  However, it seems clear from context that this was the
    intent.  Section 2.15 (TransformFeedback) says this:
    
        When writing varying variables that are arrays, individual array
        elements are written in order.
    
    And section 2.20.3 (Shader Variables), says this, in the description
    of GetTransformFeedbackVarying:
    
        For the selected varying variable, its type is returned into
        type. The size of the varying is returned into size. The value in
        size is in units of the type returned in type.
    
    If it were not possible to perform transform feedback on an
    unsubscripted array, the returned size would always be 1.
    
    This patch fixes the linker so that transform feedback on an
    unsubscripted array is supported.
    
    Fixes piglit tests "EXT_transform_feedback/builtin-varyings
    gl_ClipDistance[{4,8}]-no-subscript" and
    "EXT_transform_feedback/output_type *[2]-no-subscript".
    
    Note: on back-ends that set
    gl_shader_compiler_options::LowerClipDistance (for example i965),
    tests "EXT_transform_feedback/builtin-varyings
    gl_ClipDistance[{1,2,3,5,6,7}]" still fail.  I hope to address this in
    a later patch.
    
    Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    33fe0211