Conformance Test GL_ARB_post_depth_coverage Contributors Michal Butterweck, Mobica Contacts Michal Butterweck, Mobica (michal.butterweck 'at' mobica.com) Status In review Version August 31, 2016 (version 1) Dependencies This specification is written against: - OpenGL 4.5 Core Profile specification, - ARB_post_depth_coverage extension specification. Overview The test verifies that when ARB_post_depth_coverage is available one can use post_depth_coverage layout and gl_SampleMaskIn is affected according to the extension specification. Tests Shader Check that macro construction: #extension GL_ARB_post_depth_coverage : is allowed in the shader. Check that a new preprocessor #define GL_ARB_post_depth_coverage is available and equal to 1. Prepare a proper shader with following layout setup: layout(early_fragment_tests) in; layout(post_depth_coverage) in; Expect it builds without error. Prepare a proper shader with following layout setup: layout(post_depth_coverage) in; Expect it builds without error. Sample Mask Prepare multisample framebuffer with integer color and depth attachments 1x1 pixels in size. A color attachment must be a texture. Clear it. Prepare framebuffer with integer color attachment 1x(number of samples) pixels in size. Clear it. Prepare shader program which passes gl_SampleMaskIn to the output as a color. Prepare shader program which passes samples from multisample texture to the output fragment. Turn on depth test. Enable multisampling. Use multisample framebuffer. Use first program. Draw a figure which partially covers the pixels samples but does not cover the pixel center. The dimensions of the figure may be dependent on the results of GetMultisamplefv called with SAMPLE_POSITION pname. The figure shall be placed at near view (eg. depth equal 0.25). Clear the color attachment. Draw a figure which fully covers the pixel area but is placed behind the previous polygon (eg. at depth equal to 0.75). Do not use post depth coverage. Output gl_SampleMaskIn to the the fragment. Turn off depth test. Use second framebuffer. Use second program. Bind first's frambuffer color attachment texture as an input to the fragment shader. Copy data from the multisample framebuffer to the second framebuffer using the second program and draw call. Fetch value of gl_SampleMaskIn from the second framebuffer using ReadPixels. Expect that for all enabled samples corresponding gl_SampleMaskIn bit is set. Repeat the test using post depth coverage layout for the second draw call. Expect that bits in the gl_SampleMaskIn are only set for the samples which are not covered by the first primitive. Repeat both test cases substituting the depth test with the stencil test. Revision History Revision 1, 31 August, 2016 (Michal Butterweck) - Initial version.