Home | History | Annotate | Download | only in specs
      1 Conformance Test
      2 
      3     CTS_ARB_indirect_parameters
      4 
      5 Contributors
      6 
      7     Adam Czupryna, Mobica
      8 
      9 Contacts
     10 
     11     Adam Czupryna, Mobica (adam.czupryna 'at' mobica.com)
     12 
     13 Status
     14 
     15     In review
     16 
     17 Version
     18 
     19     March 1, 2017 (version 1)
     20 
     21 Dependencies
     22 
     23     OpenGL 4.2 is required.
     24 
     25     ARB_indirect_parameters extension is required.
     26 
     27     This specification is written against:
     28       - ARB_indirect_parameters extension specification,
     29       - OpenGL 4.3 (Core Profile) specification.
     30 
     31 Overview
     32 
     33     This test verifies if operations on new buffer object
     34     PARAMETER_BUFFER_ARB which is a target allowing buffers to store
     35     parameters for certain drawing commands works as expected.
     36 
     37     This test also verifies if new vertex array drawing functions
     38     MultiDrawArraysIndirectCountARB, MultiDrawElementsIndirectCountARB
     39     that uses PARAMETER_BUFFER_ARB binding point works properly.
     40 
     41 New Tests
     42 
     43     Parameter Buffer Operations Test
     44 
     45       Create PARAMETER_BUFFER_ARB object and perform actions on it:
     46         BindBuffer, BufferData, BufferSubData, MapBuffer, UnmapBuffer,
     47         GetBufferSubData, GetBufferPointerv, MapBufferRange,
     48         FlushMappedBufferRange, GetBufferParameteriv and
     49         CopyBufferSubData.
     50 
     51       Verify if results of those actions are as expected.
     52 
     53       Verify if GetIntegerv, GetBooleanv, GetFloatv and GetDoublev
     54         returns correct value for PARAMETER_BUFFER_BINDING_ARB <pname>.
     55 
     56     Vertex Array Indirect Drawing Test
     57 
     58       Initialize necessary data:
     59       - Prepare vertex and fragment shader that are able to render
     60         white primitive with alpha component value of 0.5.
     61       - Create ARRAY_BUFFER and ELEMENT_ARRAY_BUFFER objects and fill it
     62         with data needed to draw two polygons - one next to each other.
     63         Polygons should cover whole framebuffer.
     64       - Create DRAW_INDIRECT_BUFFER object to store draw arrays command
     65         structure data and fill it with data needed to draw 4 triangles.
     66       - Create DRAW_INDIRECT_BUFFER object to store draw elements command
     67         structure data and also fill it with data needed to draw 4
     68         triangles.
     69       - Create PARAMETER_BUFFER_ARB to store draw count data and fill it
     70         with data needed to draw arrays two times. First time with 2
     71         draws and second with 4 draws.
     72 
     73       Make sure that depth test and stencil test are disabled.
     74 
     75       Clear color buffer with (0, 0, 0) color value and use
     76         MultiDrawArraysIndirectCountARB function to render the scene.
     77         Verify result by reading pixels from framebuffer.
     78 
     79       Repeat last step using MultiDrawElementsIndirectCountARB function and
     80         verify result in the same way.
     81 
     82       In both cases rendering result should be half framebuffer filled with
     83         (0.75, 0.75, 0.75) values and half with (0.5, 0.5, 0.5) values.
     84 
     85 
     86 Revision History
     87 
     88     Revision 1, 1 March, 2017 (Adam Czupryna)
     89      - Intial version;
     90