15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci WGL_ARB_create_context_robustness 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci WGL_ARB_create_context_robustness 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Jon Leech (jon 'at' alumni.caltech.edu) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNotice 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at 165bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciSpecification Update Policy 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 215bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 225bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 235bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 245bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 255bd8deadSopenharmony_ci described in more detail at 265bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ciStatus 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci Complete. Approved by the ARB on June 9, 2010. 315bd8deadSopenharmony_ci Approved by the Khronos Board of Promoters on July 23, 2010. 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ciVersion 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci Version 3, 2010/07/22 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ciNumber 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci ARB Extension #102 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ciDependencies 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci WGL_ARB_extensions_string is required. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci WGL_ARB_create_context is required. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci An OpenGL implementation supporting GL_ARB_robustness is required. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ciOverview 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci This extension allows creating an OpenGL context supporting robust 525bd8deadSopenharmony_ci buffer access behavior and a specified graphics reset notification 535bd8deadSopenharmony_ci behavior. 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciIP Status 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci No known IP claims. 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ciNew Procedures and Functions 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci None 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ciNew Tokens 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci Accepted as a bit in the attribute value for WGL_CONTEXT_FLAGS_ARB 665bd8deadSopenharmony_ci in the <*attrib_list> argument to wglCreateContextAttribsARB: 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci Accepted as an attribute name in the <*attrib_list> argument to 715bd8deadSopenharmony_ci wglCreateContextAttribsARB: 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci Accepted as an attribute value for 765bd8deadSopenharmony_ci WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB in the <*attrib_list> 775bd8deadSopenharmony_ci argument to wglCreateContextAttribsARB: 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci WGL_NO_RESET_NOTIFICATION_ARB 0x8261 805bd8deadSopenharmony_ci WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ciAdditions to the OpenGL / GLX / GLX Protocol Specificaitons 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci None. This specification is written for WGL. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ciAdditions to the WGL specification 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci This extension modifies language specified in the 895bd8deadSopenharmony_ci WGL_ARB_create_context and WGL_ARB_create_context_profile 905bd8deadSopenharmony_ci extensions. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci In the description of wglCreateContextAttribsARB, insert a new 935bd8deadSopenharmony_ci paragraph before the paragraph "The default value of 945bd8deadSopenharmony_ci WGL_CONTEXT_FLAGS_ARB is 0.": 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci "If the WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB bit is set in 975bd8deadSopenharmony_ci WGL_CONTEXT_FLAGS_ARB, then a context supporting <robust buffer 985bd8deadSopenharmony_ci access> will be created. Robust buffer access is defined in the 995bd8deadSopenharmony_ci GL_ARB_robustness extension specification, and the resulting context 1005bd8deadSopenharmony_ci must also support either the GL_ARB_robustness extension, or a 1015bd8deadSopenharmony_ci version of OpenGL incorporating equivalent functionality." 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci Add a new paragraph to the description of 1045bd8deadSopenharmony_ci wglCreateContextAttribsARB: 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci "The attribute name WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 1075bd8deadSopenharmony_ci specifies the <reset notification behavior> of the rendering 1085bd8deadSopenharmony_ci context. Reset notification behavior is defined in the 1095bd8deadSopenharmony_ci GL_ARB_robustness extension specification, and the resulting context 1105bd8deadSopenharmony_ci must also support either the GL_ARB_robustness extension, or a 1115bd8deadSopenharmony_ci version of OpenGL incorporating equivalent functionality. The 1125bd8deadSopenharmony_ci attribute value may be either WGL_NO_RESET_NOTIFICATION_ARB or 1135bd8deadSopenharmony_ci WGL_LOSE_CONTEXT_ON_RESET_ARB, which respectively result in reset 1145bd8deadSopenharmony_ci notification behavior of GL_NO_RESET_NOTIFICATION_ARB and 1155bd8deadSopenharmony_ci GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The 1165bd8deadSopenharmony_ci default value for WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB is 1175bd8deadSopenharmony_ci WGL_NO_RESET_NOTIFICATION_ARB." 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci Add "robust buffer access flag" and "reset notification behavior" to 1205bd8deadSopenharmony_ci the list of possible context creation errors resulting in a 1215bd8deadSopenharmony_ci ERROR_INVALID_PIXEL_FORMAT error in this sentence: 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci "* If the pixel format associated with <hDC> does not support OpenGL 1245bd8deadSopenharmony_ci contexts providing the requested API major and minor version, 1255bd8deadSopenharmony_ci forward-compatible flag, and/or debug context flag, then 1265bd8deadSopenharmony_ci ERROR_INVALID_PIXEL_FORMAT is generated." 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci Add a new context creation error to wglCreateContextAttribsARB: 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci "* If the reset notification behavior of <hShareContext> and the 1315bd8deadSopenharmony_ci newly created context are different, then 1325bd8deadSopenharmony_ci ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated." 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Add to the description of wglShareLists: 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci "If the reset notification behavior of <hglrc1> and <hglrc2> are 1375bd8deadSopenharmony_ci different, then wglShareLists will return FALSE, and GetLastError 1385bd8deadSopenharmony_ci will return ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB." 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ciDependencies on WGL_ARB_extensions_string 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci Because there is no way to extend WGL, these calls are defined in 1435bd8deadSopenharmony_ci the ICD and can be called by obtaining the address with 1445bd8deadSopenharmony_ci wglGetProcAddress. Because this extension is a WGL extension, it is 1455bd8deadSopenharmony_ci not included in the GL_EXTENSIONS string. Its existence can be 1465bd8deadSopenharmony_ci determined with the WGL_ARB_extensions_string extension. 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ciErrors 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci ERROR_INVALID_PIXEL_FORMAT is generated if 1515bd8deadSopenharmony_ci WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB is set in attribute 1525bd8deadSopenharmony_ci WGL_CONTEXT_FLAGS_ARB, and no GL context supporting the 1535bd8deadSopenharmony_ci GL_ARB_robustness extension with robust buffer access enabled 1545bd8deadSopenharmony_ci exists. 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci ERROR_INVALID_PIXEL_FORMAT is generated if no GL context supporting 1575bd8deadSopenharmony_ci the GL_ARB_robustness extension with the specified reset 1585bd8deadSopenharmony_ci notification behavior (the value of attribute 1595bd8deadSopenharmony_ci WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB) can be created. 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated by 1625bd8deadSopenharmony_ci wglCreateContextAttribsARB if the reset notification behavior of 1635bd8deadSopenharmony_ci <hShareContext> does not match the reset notification behavior of 1645bd8deadSopenharmony_ci the context being created. 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated by wglShareLists 1675bd8deadSopenharmony_ci if the reset notification behavior of <hglrc1> and <hglrc2> are 1685bd8deadSopenharmony_ci different. 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ciNew State 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci None 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ciNew Implementation Dependent State 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci None 1775bd8deadSopenharmony_ci 1785bd8deadSopenharmony_ciConformance Tests 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci TBD 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ciSample Code 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_ci TBD 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ciIssues 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ci 1) Should there be a discovery mechanism for GL contexts supported by 1895bd8deadSopenharmony_ci the implementation? 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci UNRESOLVED. As we add more and more versions, profiles, and context 1925bd8deadSopenharmony_ci flags, the number of possible types of contexts is growing rapidly. 1935bd8deadSopenharmony_ci Some discovery mechanism may be useful, but simply enumerating all 1945bd8deadSopenharmony_ci the possible contexts is probably impractica. 1955bd8deadSopenharmony_ci 1965bd8deadSopenharmony_ci 2) How can applications query if a context supports robust buffer 1975bd8deadSopenharmony_ci access? 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci UNRESOLVED. See the matching issue in GL_ARB_robustness. 2005bd8deadSopenharmony_ci 2015bd8deadSopenharmony_ciRevision History 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ci Version 3, 2010/07/22 - Assign enums for new tokens (shared with GLX and 2045bd8deadSopenharmony_ci GL robustness extensions). 2055bd8deadSopenharmony_ci 2065bd8deadSopenharmony_ci Version 2, 2010/07/21 - Move reset notification behavior from a GL 2075bd8deadSopenharmony_ci toggle to a context creation parameter. Disallow sharing contexts 2085bd8deadSopenharmony_ci with different reset notification behaviors. Rename extension, since 2095bd8deadSopenharmony_ci it's no longer only about robust buffer access. 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci Version 1, 2010/06/06 - Initial version. 212