Skip to content
  • Paul Berry's avatar
    Modify EXT_transform_feedback tests to test GL 3.0 core. · 9016314b
    Paul Berry authored
    
    
    Nearly all of the functionality of the EXT_transform_feedback
    extension is available in core OpenGL as of version 3.0 (only one
    function was not promoted to OpenGL 3.0, the BindBufferOffsetEXT
    function).  Therefore, it's possible for an implementation to support
    transform feedback via core OpenGL 3.0 features, without advertising
    support for the EXT_transform_feedback extension.  One such
    implementation, surprisingly, is the nVidia proprietary Linux driver I
    use as my reference platform.
    
    To allow the transform feedback tests to run on these implementations,
    I've created a function piglit_require_transform_feedback(), and the
    following function pointers:
    
    - piglit_BeginTransformFeedback
    - piglit_BindBufferBase
    - piglit_BindBufferRange
    - piglit_EndTransformFeedback
    - piglit_GetBooleani_v
    - piglit_GetIntegeri_v
    - piglit_GetTransformFeedbackVarying
    - piglit_TransformFeedbackVaryings
    
    piglit_require_transform_feedback() checks whether transform feedback
    is provided via EXT_transform_feedback or via core GL 3.0, and sets up
    the function pointers appropriately.  If transform feedback isn't
    provided through either mechanism, then it causes the test to be
    skipped.
    
    This is similar to what we do with piglit_require_GLSL() (see
    tests/util/piglit-shader-gl.c).
    
    I've updated all of the EXT_transform_feedback tests to use these
    function pointers.  This makes it possible to test transform feedback
    on an implementation that supports GL 3.0 but not
    EXT_transform_feedback.
    
    Acked-by: default avatarMarek Olšák <maraeo@gmail.com>
    Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    9016314b