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