15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARB_conditional_render_inverted 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARB_conditional_render_inverted 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Brian Paul, VMware Inc. (brianp 'at' vmware.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciContributors 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Brian Paul, VMware 165bd8deadSopenharmony_ci Daniel Rakos, AMD 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciNotice 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Copyright (c) 2014 The Khronos Group Inc. Copyright terms at 215bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciSpecification Update Policy 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 265bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 275bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 285bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 295bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 305bd8deadSopenharmony_ci described in more detail at 315bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ciStatus 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci Complete. 365bd8deadSopenharmony_ci Approved by the ARB on June 26, 2014. 375bd8deadSopenharmony_ci Ratified by the Khronos Board of Promoters on August 7, 2014. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciVersion 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci Date: June 9, 2014 425bd8deadSopenharmony_ci Revision: 5 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ciNumber 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci ARB Extension #161 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ciDependencies 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ci OpenGL 3.0 is required. 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci The extension is written against the OpenGL 4.4 Specification, Core 535bd8deadSopenharmony_ci Profile, March 19, 2014. 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciOverview 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci This extension adds new modes to BeginConditionalRender which invert 585bd8deadSopenharmony_ci the condition used to determine whether to draw or not. 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ciIP Status 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci No known IP claims. 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ciNew Procedures and Functions 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci None. 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ciNew Tokens 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci Accepted by the <mode> parameter of BeginConditionalRender: 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci QUERY_WAIT_INVERTED 0x8E17 735bd8deadSopenharmony_ci QUERY_NO_WAIT_INVERTED 0x8E18 745bd8deadSopenharmony_ci QUERY_BY_REGION_WAIT_INVERTED 0x8E19 755bd8deadSopenharmony_ci QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ciAdditions to Chapter 10 of the OpenGL 4.4 (Core Profile) Specification (Vertex Specification and Drawing Commands) 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci Modify Section 10.10, Conditional Rendering 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ci (add before the errors section for BeginConditionalRender on p. 339) 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci If <mode> is QUERY_WAIT_INVERTED, QUERY_NO_WAIT_INVERTED, 845bd8deadSopenharmony_ci QUERY_BY_REGION_WAIT_INVERTED, or QUERY_BY_REGION_NO_WAIT_INVERTED 855bd8deadSopenharmony_ci then the condition used to determine whether or not to render subsequent 865bd8deadSopenharmony_ci drawing commands is negated with respect to QUERY_WAIT, QUERY_NO_WAIT, 875bd8deadSopenharmony_ci QUERY_BY_REGION_WAIT, or QUERY_BY_REGION_NO_WAIT, respectively. If <mode> 885bd8deadSopenharmony_ci is QUERY_NO_WAIT_INVERTED or QUERY_BY_REGION_NO_WAIT_INVERTED 895bd8deadSopenharmony_ci the GL may choose to unconditionally execute the subsequent rendering 905bd8deadSopenharmony_ci commands without waiting for the query to complete. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ciAdditions to the AGL/EGL/GLX/WGL Specifications 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci None. 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ciDependencies 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci None. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ciNew State 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci None. 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ciNew Implementation Dependent State 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci None. 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ciIssues 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci (1) Why is this extension necessary? 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci RESOLVED: A competing graphics API supports this feature. This 1135bd8deadSopenharmony_ci extension will allow one to easier implement that API's features 1145bd8deadSopenharmony_ci on top of OpenGL. Also, with the GL_ARB_transform_feedback_overflow_query 1155bd8deadSopenharmony_ci extension, it's not obvious whether conditional rendering should 1165bd8deadSopenharmony_ci discard drawing if a transform feedback buffer overflow occurs or 1175bd8deadSopenharmony_ci doesn't occur. This extension allows both possibilities. 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci (2) Should there be QUERY_NO_WAIT_INVERTED and 1205bd8deadSopenharmony_ci QUERY_BY_REGION_NO_WAIT_INVERTED queries? 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci RESOLVED: Yes. Suppose we issue a SAMPLES_PASSED query and begin 1235bd8deadSopenharmony_ci conditional rendering with QUERY_NO_WAIT_INVERTED. If the query 1245bd8deadSopenharmony_ci it not ready yet, the GL might render the subsequent primitives even 1255bd8deadSopenharmony_ci if they might have been visible. There may be a non-obvious use for 1265bd8deadSopenharmony_ci this. 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci (3) What gets inverted, the condition or the behavior? 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci DISCUSSION: For QUERY_WAIT_INVERTED and QUERY_BY_REGION_WAIT_INVERTED 1315bd8deadSopenharmony_ci it doesn't really matter, but for the other two modes there are two 1325bd8deadSopenharmony_ci possibilities: 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci (a) Inverted condition, in which case the GL renders subsequent 1355bd8deadSopenharmony_ci primitives if the query is not complete yet. 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci (b) Inverted behavior, in which case the GL discards subsequent 1385bd8deadSopenharmony_ci primitives if the query is not complete yet. 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci RESOLVED: We chose option (a). The condition is inverted. 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ciRevision History 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ci Revision 5, 2014/06/09 (Jon Leech) 1455bd8deadSopenharmony_ci - Assign enums per bug 12362 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ci Revision 4, 2014/04/25 (Daniel Rakos) 1485bd8deadSopenharmony_ci - Renamed to ARB_conditional_render_inverted. 1495bd8deadSopenharmony_ci - Removed suffixes. 1505bd8deadSopenharmony_ci - Resolved isues (2) and (3). 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci Revision 3, 2014/04/16 (Daniel Rakos) 1535bd8deadSopenharmony_ci - Renamed extension to EXT_conditional_render_inverted. 1545bd8deadSopenharmony_ci - Marked issue (2) unresolved, changed the behavior for incomplete 1555bd8deadSopenharmony_ci queries, and added issue (3). 1565bd8deadSopenharmony_ci - Clarified language regarding what gets inverted and how issue (2) 1575bd8deadSopenharmony_ci affects the behavior. 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ci Revision 2, 2014/04/10 (Brian Paul) 1605bd8deadSopenharmony_ci - Added issue (2) to justify QUERY_NO_WAIT_INVERTED_EXT. 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ci Revision 1, 2014/02/03 (Brian Paul) 1635bd8deadSopenharmony_ci - Initial revision. 164