• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Conformance Test
2
3    GL_ARB_shader_draw_parameters
4
5Contributors
6
7    Adam Czupryna, Mobica
8
9Contacts
10
11    Adam Czupryna, Mobica (adam.czupryna 'at' mobica.com)
12
13Status
14
15    In review
16
17Version
18
19    March 22, 2017 (version 1)
20
21Dependencies
22
23    OpenGL 3.1 is required.
24
25    ARB_shader_draw_parameters extension is required.
26
27    This specification is written against:
28    - OpenGL 4.3 Core Profile Specification,
29    - version 4.30 Shading Language Specification,
30    - ARB_shader_draw_parameters extension Specification.
31
32    The ARB_multi_draw_indirect and ARB_indirect_parameters affects
33    definition of this test.
34
35Overview
36
37    This test verifies if new GLSL built-in variables added by this
38    extension contain correct data.
39
40    It is expected that:
41    gl_BaseVertexARB - contain value passed in baseVertex parameter,
42    gl_BaseInstanceARB - contain value passed in baseInstance parameter.
43    gl_DrawIDARB - contain the index of the draw currently being
44      processed by a Multi* variant of drawing command.
45
46Tests
47
48    Shader Extension Test
49
50      * Create shader that require ARB_shader_draw_parameters extension
51        and check if ARB_shader_draw_parameters is defined and equal 1.
52        Check if shader compiles with no error.
53
54    Draw Paramaters Test
55
56      * Create vertex shader that adds offset to currently processed
57        vertex using gl_baseVertexARB and gl_baseInstanceARB for x and y
58        dimensions respectively. Additionally color variable which components
59        are function of gl_DrawIDARB value should be passed to the fragment
60        shader.
61
62        Color components function could be:
63        color.r = (gl_DrawIDARB % 3 == 0 ? 1.0 : 0.0);
64        color.g = (gl_DrawIDARB % 3 == 1 ? 1.0 : 0.0);
65        color.b = (gl_DrawIDARB % 3 == 2 ? 1.0 : 0.0);
66
67      * Create fragment shader that puts out color passed by vertex shader.
68
69      * Set clear color to black, enable blending and perform different
70        drawing commands to draw triangle strips. Use different parameters
71        values for each command. Create separated test cases for each drawing
72        command.
73
74        List of drawing commands:
75
76          - drawArrays/drawElements
77          - drawArraysIndirect/drawElementsIndirect
78          - drawArraysInstanced/drawElementsInstanced
79          - multiDrawArrays/multiDrawElements
80          - multiDrawArraysIndirect/multiDrawElementsIndirect
81          - multiDrawArraysIndirectCountARB/multiDrawElementsIndirectCountARB
82
83        Verify if drawing result is as expected by reading pixels from the
84        framebuffer. Make sure that each triangle is drawn with correct offset
85        and with proper color value.
86
87Revision History
88
89    Revision 1, 22 March, 2017 (Adam Czupryna)
90     - Initial version.
91
92    Revision 2, 3 April, 2017 (Adam Czupryna)
93     - Changed Draw Parameters Test definition,
94     - Updated list of drawing commands.
95
96