1. 01 Dec, 2014 1 commit
    • Dylan Baker's avatar
      gen_interpolation_tests.py: Use mako to generate tests · 2b71816c
      Dylan Baker authored
      
      
      This patch converts gen_interpolation_tests from concatenating a ton of
      strings to generating it's output with a mako template. There are
      cosmetic changes to the output file.
      
      Using mako is possibly a little faster, but mainly has the benefit of
      being much more readable than a long series of string concatenations,
      even at the cost of a little more code.
      Signed-off-by: default avatarDylan Baker <dylanx.c.baker@intel.com>
      2b71816c
  2. 29 Jul, 2013 1 commit
  3. 15 Feb, 2013 1 commit
  4. 27 Oct, 2011 1 commit
    • Paul Berry's avatar
      Add tests of interpolation qualifier behavior. · f36a14a2
      Paul Berry authored
      
      
      This patch adds 160 generated tests to verify correct behavior of the
      GLSL 1.30 interpolation qualifiers under all combinations of the
      following circumstances:
      
      - When the interpolation qualifier is 'flat', 'noperspective',
        'smooth', or not specified.
      
      - When the variable in question is 'gl_FrontColor', 'gl_BackColor',
        'gl_FrontSecondaryColor', 'gl_BackSecondaryColor', or a non-built-in
        vertex shader output.
      
      - When the GL shade model (set with the glShadeModel command) is
        'GL_SMOOTH' or 'GL_FLAT'.
      
      - When the triangle is clipped using gl_ClipDistance, using
        gl_ClipVertex, using fixed clip planes, or not clipped at all.
      
      Note: in a perfect world, we wouldn't need to test all 160
      combinations of these possibilities (e.g. the GL shade model should
      only have an effect when no interpolation qualifier is specified, and
      clipping should have no effect whatsoever on interpolation).  However,
      based on what I know about how interpolation currently works in Mesa's
      i965 driver, it seems prudent to err on the side of caution and test
      all 160 possible combinations.
      
      The tests all operate by painting a triangle on the screen using a
      frustum projection, where the three vertices are colored red, green,
      and blue, and each vertex has a different Z coordinate (so that we can
      test proper perspective interpolation).  Then they use "relative probe
      rgba" on various points in the interior of the triangle to verify that
      the colors have been interpolated correctly.
      
      I've validated the tests using nVidia's proprietary Linux driver, and
      they all pass except for the tests that attempt to override the
      default interpolation behavior of one of the built-in gl_Color
      variables.  In those cases, the nVidia driver favors the interpolation
      mode that is set in GL state.  GLSL 1.30 section 4.3.7
      ("Interpolation") explicitly states that the interpolation behavior of
      these variables may be overridden, and that "When an interpolation
      qualifier is used, it overrides settings established through the
      OpenGL API."  So this seems pretty clearly to be due to a bug in the
      nVidia driver.
      
      As an aid in review, here is an example of one of the tests created by
      the test generator script.  This one is called
      "interpolation-noperspective-gl_FrontColor-flat-fixed.shader_test":
      
      [require]
      GLSL >= 1.30
      
      [vertex shader]
      in vec4 vertex;
      in vec4 input_data;
      noperspective out vec4 gl_FrontColor;
      void main()
      {
        gl_Position = gl_ModelViewProjectionMatrix * vertex;
        gl_FrontColor = input_data;
      }
      
      [fragment shader]
      noperspective in vec4 gl_Color;
      void main()
      {
        gl_FragColor = gl_Color;
      }
      
      [vertex data]
      vertex/float/3  input_data/float/4
       0.0  2.0 -2.0  0.0 1.0 0.0 1.0
      -1.0 -1.0 -1.0  1.0 0.0 0.0 1.0
       3.0 -3.0 -3.0  0.0 0.0 1.0 1.0
      
      [test]
      frustum -1.75 1.75 -1.75 1.75 1.75 3.0
      clear color 0.0 0.0 0.0 0.0
      clear
      enable GL_VERTEX_PROGRAM_TWO_SIDE
      shade model flat
      draw arrays GL_TRIANGLES 0 3
      relative probe rgba (0.444444444444, 0.222222222222) (0.0, 0.0, 0.0, 0.0)
      relative probe rgba (0.636363636364, 0.181818181818) (0.272727272727, 0.181818181818, 0.545454545455, 1.0)
      relative probe rgba (0.769230769231, 0.153846153846) (0.153846153846, 0.153846153846, 0.692307692308, 1.0)
      relative probe rgba (0.866666666667, 0.133333333333) (0.0666666666667, 0.133333333333, 0.8, 1.0)
      relative probe rgba (0.5, 0.4) (0.0, 0.0, 0.0, 0.0)
      relative probe rgba (0.666666666667, 0.333333333333) (0.166666666667, 0.333333333333, 0.5, 1.0)
      relative probe rgba (0.785714285714, 0.285714285714) (0.0714285714286, 0.285714285714, 0.642857142857, 1.0)
      relative probe rgba (0.545454545455, 0.545454545455) (0.181818181818, 0.545454545455, 0.272727272727, 1.0)
      relative probe rgba (0.692307692308, 0.461538461538) (0.0769230769231, 0.461538461538, 0.461538461538, 1.0)
      relative probe rgba (0.583333333333, 0.666666666667) (0.0833333333333, 0.666666666667, 0.25, 1.0)
      Reviewed-by: Emma Anholt's avatarEric Anholt <eric@anholt.net>
      f36a14a2