| Conformance Test |
| |
| GL_ARB_shader_draw_parameters |
| |
| Contributors |
| |
| Adam Czupryna, Mobica |
| |
| Contacts |
| |
| Adam Czupryna, Mobica (adam.czupryna 'at' mobica.com) |
| |
| Status |
| |
| In review |
| |
| Version |
| |
| March 22, 2017 (version 1) |
| |
| Dependencies |
| |
| OpenGL 3.1 is required. |
| |
| ARB_shader_draw_parameters extension is required. |
| |
| This specification is written against: |
| - OpenGL 4.3 Core Profile Specification, |
| - version 4.30 Shading Language Specification, |
| - ARB_shader_draw_parameters extension Specification. |
| |
| The ARB_multi_draw_indirect and ARB_indirect_parameters affects |
| definition of this test. |
| |
| Overview |
| |
| This test verifies if new GLSL built-in variables added by this |
| extension contain correct data. |
| |
| It is expected that: |
| gl_BaseVertexARB - contain value passed in baseVertex parameter, |
| gl_BaseInstanceARB - contain value passed in baseInstance parameter. |
| gl_DrawIDARB - contain the index of the draw currently being |
| processed by a Multi* variant of drawing command. |
| |
| Tests |
| |
| Shader Extension Test |
| |
| * Create shader that require ARB_shader_draw_parameters extension |
| and check if ARB_shader_draw_parameters is defined and equal 1. |
| Check if shader compiles with no error. |
| |
| Draw Paramaters Test |
| |
| * Create vertex shader that adds offset to currently processed |
| vertex using gl_baseVertexARB and gl_baseInstanceARB for x and y |
| dimensions respectively. Additionally color variable which components |
| are function of gl_DrawIDARB value should be passed to the fragment |
| shader. |
| |
| Color components function could be: |
| color.r = (gl_DrawIDARB % 3 == 0 ? 1.0 : 0.0); |
| color.g = (gl_DrawIDARB % 3 == 1 ? 1.0 : 0.0); |
| color.b = (gl_DrawIDARB % 3 == 2 ? 1.0 : 0.0); |
| |
| * Create fragment shader that puts out color passed by vertex shader. |
| |
| * Set clear color to black, enable blending and perform different |
| drawing commands to draw triangle strips. Use different parameters |
| values for each command. Create separated test cases for each drawing |
| command. |
| |
| List of drawing commands: |
| |
| - drawArrays/drawElements |
| - drawArraysIndirect/drawElementsIndirect |
| - drawArraysInstanced/drawElementsInstanced |
| - multiDrawArrays/multiDrawElements |
| - multiDrawArraysIndirect/multiDrawElementsIndirect |
| - multiDrawArraysIndirectCountARB/multiDrawElementsIndirectCountARB |
| |
| Verify if drawing result is as expected by reading pixels from the |
| framebuffer. Make sure that each triangle is drawn with correct offset |
| and with proper color value. |
| |
| Revision History |
| |
| Revision 1, 22 March, 2017 (Adam Czupryna) |
| - Initial version. |
| |
| Revision 2, 3 April, 2017 (Adam Czupryna) |
| - Changed Draw Parameters Test definition, |
| - Updated list of drawing commands. |
| |