Name ARB_conditional_render_inverted Name Strings GL_ARB_conditional_render_inverted Contact Brian Paul, VMware Inc. (brianp 'at' vmware.com) Contributors Brian Paul, VMware Daniel Rakos, AMD Notice Copyright (c) 2014 The Khronos Group Inc. Copyright terms at http://www.khronos.org/registry/speccopyright.html Specification Update Policy Khronos-approved extension specifications are updated in response to issues and bugs prioritized by the Khronos OpenGL Working Group. For extensions which have been promoted to a core Specification, fixes will first appear in the latest version of that core Specification, and will eventually be backported to the extension document. This policy is described in more detail at https://www.khronos.org/registry/OpenGL/docs/update_policy.php Status Complete. Approved by the ARB on June 26, 2014. Ratified by the Khronos Board of Promoters on August 7, 2014. Version Date: June 9, 2014 Revision: 5 Number ARB Extension #161 Dependencies OpenGL 3.0 is required. The extension is written against the OpenGL 4.4 Specification, Core Profile, March 19, 2014. Overview This extension adds new modes to BeginConditionalRender which invert the condition used to determine whether to draw or not. IP Status No known IP claims. New Procedures and Functions None. New Tokens Accepted by the parameter of BeginConditionalRender: QUERY_WAIT_INVERTED 0x8E17 QUERY_NO_WAIT_INVERTED 0x8E18 QUERY_BY_REGION_WAIT_INVERTED 0x8E19 QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A Additions to Chapter 10 of the OpenGL 4.4 (Core Profile) Specification (Vertex Specification and Drawing Commands) Modify Section 10.10, Conditional Rendering (add before the errors section for BeginConditionalRender on p. 339) If is QUERY_WAIT_INVERTED, QUERY_NO_WAIT_INVERTED, QUERY_BY_REGION_WAIT_INVERTED, or QUERY_BY_REGION_NO_WAIT_INVERTED then the condition used to determine whether or not to render subsequent drawing commands is negated with respect to QUERY_WAIT, QUERY_NO_WAIT, QUERY_BY_REGION_WAIT, or QUERY_BY_REGION_NO_WAIT, respectively. If is QUERY_NO_WAIT_INVERTED or QUERY_BY_REGION_NO_WAIT_INVERTED the GL may choose to unconditionally execute the subsequent rendering commands without waiting for the query to complete. Additions to the AGL/EGL/GLX/WGL Specifications None. Dependencies None. New State None. New Implementation Dependent State None. Issues (1) Why is this extension necessary? RESOLVED: A competing graphics API supports this feature. This extension will allow one to easier implement that API's features on top of OpenGL. Also, with the GL_ARB_transform_feedback_overflow_query extension, it's not obvious whether conditional rendering should discard drawing if a transform feedback buffer overflow occurs or doesn't occur. This extension allows both possibilities. (2) Should there be QUERY_NO_WAIT_INVERTED and QUERY_BY_REGION_NO_WAIT_INVERTED queries? RESOLVED: Yes. Suppose we issue a SAMPLES_PASSED query and begin conditional rendering with QUERY_NO_WAIT_INVERTED. If the query it not ready yet, the GL might render the subsequent primitives even if they might have been visible. There may be a non-obvious use for this. (3) What gets inverted, the condition or the behavior? DISCUSSION: For QUERY_WAIT_INVERTED and QUERY_BY_REGION_WAIT_INVERTED it doesn't really matter, but for the other two modes there are two possibilities: (a) Inverted condition, in which case the GL renders subsequent primitives if the query is not complete yet. (b) Inverted behavior, in which case the GL discards subsequent primitives if the query is not complete yet. RESOLVED: We chose option (a). The condition is inverted. Revision History Revision 5, 2014/06/09 (Jon Leech) - Assign enums per bug 12362 Revision 4, 2014/04/25 (Daniel Rakos) - Renamed to ARB_conditional_render_inverted. - Removed suffixes. - Resolved isues (2) and (3). Revision 3, 2014/04/16 (Daniel Rakos) - Renamed extension to EXT_conditional_render_inverted. - Marked issue (2) unresolved, changed the behavior for incomplete queries, and added issue (3). - Clarified language regarding what gets inverted and how issue (2) affects the behavior. Revision 2, 2014/04/10 (Brian Paul) - Added issue (2) to justify QUERY_NO_WAIT_INVERTED_EXT. Revision 1, 2014/02/03 (Brian Paul) - Initial revision.