Name WGL_ARB_create_context_robustness Name Strings WGL_ARB_create_context_robustness Contact Jon Leech (jon 'at' alumni.caltech.edu) Notice Copyright (c) 2010-2013 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 9, 2010. Approved by the Khronos Board of Promoters on July 23, 2010. Version Version 3, 2010/07/22 Number ARB Extension #102 Dependencies WGL_ARB_extensions_string is required. WGL_ARB_create_context is required. An OpenGL implementation supporting GL_ARB_robustness is required. Overview This extension allows creating an OpenGL context supporting robust buffer access behavior and a specified graphics reset notification behavior. IP Status No known IP claims. New Procedures and Functions None New Tokens Accepted as a bit in the attribute value for WGL_CONTEXT_FLAGS_ARB in the <*attrib_list> argument to wglCreateContextAttribsARB: WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 Accepted as an attribute name in the <*attrib_list> argument to wglCreateContextAttribsARB: WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 Accepted as an attribute value for WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB in the <*attrib_list> argument to wglCreateContextAttribsARB: WGL_NO_RESET_NOTIFICATION_ARB 0x8261 WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 Additions to the OpenGL / GLX / GLX Protocol Specificaitons None. This specification is written for WGL. Additions to the WGL specification This extension modifies language specified in the WGL_ARB_create_context and WGL_ARB_create_context_profile extensions. In the description of wglCreateContextAttribsARB, insert a new paragraph before the paragraph "The default value of WGL_CONTEXT_FLAGS_ARB is 0.": "If the WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB bit is set in WGL_CONTEXT_FLAGS_ARB, then a context supporting will be created. Robust buffer access is defined in the GL_ARB_robustness extension specification, and the resulting context must also support either the GL_ARB_robustness extension, or a version of OpenGL incorporating equivalent functionality." Add a new paragraph to the description of wglCreateContextAttribsARB: "The attribute name WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB specifies the of the rendering context. Reset notification behavior is defined in the GL_ARB_robustness extension specification, and the resulting context must also support either the GL_ARB_robustness extension, or a version of OpenGL incorporating equivalent functionality. The attribute value may be either WGL_NO_RESET_NOTIFICATION_ARB or WGL_LOSE_CONTEXT_ON_RESET_ARB, which respectively result in reset notification behavior of GL_NO_RESET_NOTIFICATION_ARB and GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The default value for WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB is WGL_NO_RESET_NOTIFICATION_ARB." Add "robust buffer access flag" and "reset notification behavior" to the list of possible context creation errors resulting in a ERROR_INVALID_PIXEL_FORMAT error in this sentence: "* If the pixel format associated with does not support OpenGL contexts providing the requested API major and minor version, forward-compatible flag, and/or debug context flag, then ERROR_INVALID_PIXEL_FORMAT is generated." Add a new context creation error to wglCreateContextAttribsARB: "* If the reset notification behavior of and the newly created context are different, then ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated." Add to the description of wglShareLists: "If the reset notification behavior of and are different, then wglShareLists will return FALSE, and GetLastError will return ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB." Dependencies on WGL_ARB_extensions_string Because there is no way to extend WGL, these calls are defined in the ICD and can be called by obtaining the address with wglGetProcAddress. Because this extension is a WGL extension, it is not included in the GL_EXTENSIONS string. Its existence can be determined with the WGL_ARB_extensions_string extension. Errors ERROR_INVALID_PIXEL_FORMAT is generated if WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB is set in attribute WGL_CONTEXT_FLAGS_ARB, and no GL context supporting the GL_ARB_robustness extension with robust buffer access enabled exists. ERROR_INVALID_PIXEL_FORMAT is generated if no GL context supporting the GL_ARB_robustness extension with the specified reset notification behavior (the value of attribute WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB) can be created. ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated by wglCreateContextAttribsARB if the reset notification behavior of does not match the reset notification behavior of the context being created. ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB is generated by wglShareLists if the reset notification behavior of and are different. New State None New Implementation Dependent State None Conformance Tests TBD Sample Code TBD Issues 1) Should there be a discovery mechanism for GL contexts supported by the implementation? UNRESOLVED. As we add more and more versions, profiles, and context flags, the number of possible types of contexts is growing rapidly. Some discovery mechanism may be useful, but simply enumerating all the possible contexts is probably impractica. 2) How can applications query if a context supports robust buffer access? UNRESOLVED. See the matching issue in GL_ARB_robustness. Revision History Version 3, 2010/07/22 - Assign enums for new tokens (shared with GLX and GL robustness extensions). Version 2, 2010/07/21 - Move reset notification behavior from a GL toggle to a context creation parameter. Disallow sharing contexts with different reset notification behaviors. Rename extension, since it's no longer only about robust buffer access. Version 1, 2010/06/06 - Initial version.