Conformance Test CTS_ARB_shader_group_vote Contributors Filip Demczewski, Mobica Contacts Filip Demczewski, Mobica (filip.demczewski 'at' mobica.com) Status In review Version March 8, 2017 (version 1) Dependencies OpenGL 4.3 is required. ARB_shader_group_vote extension is required. ARB_compute_shader extension is required. This specification is written against: - ARB_shader_group_vote specification, - OpenGL 4.3 (Compatibility Profile) specification. Overview Test is validating new built-in functions that can allow shader invocations within one group to generate single result for different input data in each invocation. This collective choice can be achieved by using three new functions: - bool anyInvocationARB(bool value); - bool allInvocationsARB(bool value); - bool allInvocationsEqualARB(bool value); New Tests Availability test * Check if extension is supported * Check if GL_ARB_shader_group_vote GLSL preprocessor define is available * Check if new built-in functions are available to call All test cases below are composed from the following steps: - Compose shader with use one of new built-in functions - Render primitive where final color of each pixel is related to the function's returned value: (1, 1, 1, 1) if function returned true and (0, 0, 0, 1) otherwise - Validate all pixels within the invocation's group against desired colors - Repeat test with functions called in conditionally executed code and expect same results (when condition is not met pixel should be filled with expected color to simplify validation) Function allInvocationsARB test * Test new built-in function allInvocationsARB. Condition passed as a parameter should diverge between invocations. All pixels should have (0, 0, 0, 1) color. * Test new built-in function allInvocationsARB. Condition passed as a parameter should be true for all invocations. All pixels should have (1, 1, 1, 1) color. Function anyInvocationARB test * Test new built-in function anyInvocationARB. Condition passed as a parameter should be true for one invocation within the group. All pixels should have (1, 1, 1, 1) color. * Test new build-in function anyInvocationARB. Condition passed as a parameter should be false for every invocation within the group. All pixels should have (0, 0, 0, 1) color. Function allInvocationsEqualARB test * Test new built-in function allInvocationsEqualARB. Condition passed as a parameter should diverge between invocations. All pixels should have (0, 0, 0, 1) color. * Test new built-in function allInvocationsEqualARB. Condition passed as a parameter should be true for all invocations. All pixels should have (1, 1, 1, 1) color. * Test new built-in function allInvocationsEqualARB. Condition passed as a parameter should be false for all invocations. All pixels should have (1, 1, 1, 1) color. Revision History Revision 1, 8 March, 2017 (Filip Demczewski) - Intial version;