blob: 580e77df29b3a4d5739dfe40dbe0661eab9298b8 [file] [log] [blame]
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
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 <robust buffer
access> 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 <reset notification behavior> 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 <hDC> 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 <hShareContext> 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 <hglrc1> and <hglrc2> 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
<hShareContext> 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 <hglrc1> and <hglrc2> 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.