15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_robustness
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_robustness
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Daniel Koch, TransGaming
125bd8deadSopenharmony_ci    Nicolas Capens, TransGaming
135bd8deadSopenharmony_ci    Contributors to ARB_robustness
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ciContact
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ci    Greg Roth, NVIDIA (groth 'at' nvidia.com)
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciStatus
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Complete.
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciVersion
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Version 3, 2011/10/31
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciNumber
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    OpenGL ES Extension #107
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ciDependencies
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci    This extension is written against the OpenGL ES 2.0 Specification
345bd8deadSopenharmony_ci    but can apply to OpenGL ES 1.1 and up.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    EGL_EXT_create_context_robustness is used to determine if a context
375bd8deadSopenharmony_ci    implementing this extension supports robust buffer access, and if it
385bd8deadSopenharmony_ci    supports reset notification. 
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ciOverview
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    Several recent trends in how OpenGL integrates into modern computer
435bd8deadSopenharmony_ci    systems have created new requirements for robustness and security
445bd8deadSopenharmony_ci    for OpenGL rendering contexts.
455bd8deadSopenharmony_ci    
465bd8deadSopenharmony_ci    Additionally GPU architectures now support hardware fault detection;
475bd8deadSopenharmony_ci    for example, video memory supporting ECC (error correcting codes)
485bd8deadSopenharmony_ci    and error detection.  OpenGL contexts should be capable of recovering
495bd8deadSopenharmony_ci    from hardware faults such as uncorrectable memory errors.  Along with
505bd8deadSopenharmony_ci    recovery from such hardware faults, the recovery mechanism can
515bd8deadSopenharmony_ci    also allow recovery from video memory access exceptions and system
525bd8deadSopenharmony_ci    software failures.  System software failures can be due to device
535bd8deadSopenharmony_ci    changes or driver failures.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    OpenGL queries that that return (write) some number of bytes to a
565bd8deadSopenharmony_ci    buffer indicated by a pointer parameter introduce risk of buffer
575bd8deadSopenharmony_ci    overflows that might be exploitable by malware. To address this,
585bd8deadSopenharmony_ci    queries with return value sizes that are not expressed directly by
595bd8deadSopenharmony_ci    the parameters to the query itself are given additional API
605bd8deadSopenharmony_ci    functions with an additional parameter that specifies the number of
615bd8deadSopenharmony_ci    bytes in the buffer and never writing bytes beyond that limit. This
625bd8deadSopenharmony_ci    is particularly useful for multi-threaded usage of OpenGL contexts
635bd8deadSopenharmony_ci    in a "share group" where one context can change objects in ways that
645bd8deadSopenharmony_ci    can cause buffer overflows for another context's OpenGL queries.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    The original ARB_vertex_buffer_object extension includes an issue
675bd8deadSopenharmony_ci    that explicitly states program termination is allowed when
685bd8deadSopenharmony_ci    out-of-bounds vertex buffer object fetches occur. Modern graphics
695bd8deadSopenharmony_ci    hardware is capable well-defined behavior in the case of out-of-
705bd8deadSopenharmony_ci    bounds vertex buffer object fetches. Older hardware may require
715bd8deadSopenharmony_ci    extra checks to enforce well-defined (and termination free)
725bd8deadSopenharmony_ci    behavior, but this expense is warranted when processing potentially
735bd8deadSopenharmony_ci    untrusted content.
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    The intent of this extension is to address some specific robustness
765bd8deadSopenharmony_ci    goals:
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    *   For all existing OpenGL queries, provide additional "safe" APIs 
795bd8deadSopenharmony_ci        that limit data written to user pointers to a buffer size in 
805bd8deadSopenharmony_ci        bytes that is an explicit additional parameter of the query.
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci    *   Provide a mechanism for an OpenGL application to learn about
835bd8deadSopenharmony_ci        graphics resets that affect the context.  When a graphics reset
845bd8deadSopenharmony_ci        occurs, the OpenGL context becomes unusable and the application
855bd8deadSopenharmony_ci        must create a new context to continue operation. Detecting a
865bd8deadSopenharmony_ci        graphics reset happens through an inexpensive query.
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    *   Provide an enable to guarantee that out-of-bounds buffer object
895bd8deadSopenharmony_ci        accesses by the GPU will have deterministic behavior and preclude
905bd8deadSopenharmony_ci        application instability or termination due to an incorrect buffer
915bd8deadSopenharmony_ci        access.  Such accesses include vertex buffer fetches of
925bd8deadSopenharmony_ci        attributes and indices, and indexed reads of uniforms or
935bd8deadSopenharmony_ci        parameters from buffers.
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ciNew Procedures and Functions
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci        enum GetGraphicsResetStatusEXT();
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci        void ReadnPixelsEXT(int x, int y, sizei width, sizei height,
1005bd8deadSopenharmony_ci                            enum format, enum type, sizei bufSize,
1015bd8deadSopenharmony_ci                            void *data);
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci        void GetnUniformfvEXT(uint program, int location, sizei bufSize,
1045bd8deadSopenharmony_ci                              float *params);
1055bd8deadSopenharmony_ci        void GetnUniformivEXT(uint program, int location, sizei bufSize,
1065bd8deadSopenharmony_ci                              int *params);
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ciNew Tokens
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    Returned by GetGraphicsResetStatusEXT:
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci        NO_ERROR                                        0x0000
1135bd8deadSopenharmony_ci        GUILTY_CONTEXT_RESET_EXT                        0x8253
1145bd8deadSopenharmony_ci        INNOCENT_CONTEXT_RESET_EXT                      0x8254
1155bd8deadSopenharmony_ci        UNKNOWN_CONTEXT_RESET_EXT                       0x8255
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    Accepted by the <value> parameter of GetBooleanv, GetIntegerv,
1185bd8deadSopenharmony_ci    and GetFloatv:
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci        CONTEXT_ROBUST_ACCESS_EXT                       0x90F3
1215bd8deadSopenharmony_ci        RESET_NOTIFICATION_STRATEGY_EXT                 0x8256
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ci    Returned by GetIntegerv and related simple queries when <value> is
1245bd8deadSopenharmony_ci    RESET_NOTIFICATION_STRATEGY_EXT :
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci        LOSE_CONTEXT_ON_RESET_EXT                       0x8252
1275bd8deadSopenharmony_ci        NO_RESET_NOTIFICATION_EXT                       0x8261
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL ES Operation)
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ciAdd a new subsection after 2.5 "GL Errors" and renumber subsequent
1325bd8deadSopenharmony_cisections accordingly.
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    2.6 "Graphics Reset Recovery"
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    Certain events can result in a reset of the GL context. Such a reset
1375bd8deadSopenharmony_ci    causes all context state to be lost. Recovery from such events
1385bd8deadSopenharmony_ci    requires recreation of all objects in the affected context. The
1395bd8deadSopenharmony_ci    current status of the graphics reset state is returned by
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci        enum GetGraphicsResetStatusEXT();
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci    The symbolic constant returned indicates if the GL context has been
1445bd8deadSopenharmony_ci    in a reset state at any point since the last call to
1455bd8deadSopenharmony_ci    GetGraphicsResetStatusEXT. NO_ERROR indicates that the GL context
1465bd8deadSopenharmony_ci    has not been in a reset state since the last call.
1475bd8deadSopenharmony_ci    GUILTY_CONTEXT_RESET_EXT indicates that a reset has been detected
1485bd8deadSopenharmony_ci    that is attributable to the current GL context.
1495bd8deadSopenharmony_ci    INNOCENT_CONTEXT_RESET_EXT indicates a reset has been detected that
1505bd8deadSopenharmony_ci    is not attributable to the current GL context.
1515bd8deadSopenharmony_ci    UNKNOWN_CONTEXT_RESET_EXT indicates a detected graphics reset whose
1525bd8deadSopenharmony_ci    cause is unknown.
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    If a reset status other than NO_ERROR is returned and subsequent
1555bd8deadSopenharmony_ci    calls return NO_ERROR, the context reset was encountered and
1565bd8deadSopenharmony_ci    completed. If a reset status is repeatedly returned, the context may
1575bd8deadSopenharmony_ci    be in the process of resetting.
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci    Reset notification behavior is determined at context creation time,
1605bd8deadSopenharmony_ci    and may be queried by calling GetIntegerv with the symbolic constant
1615bd8deadSopenharmony_ci    RESET_NOTIFICATION_STRATEGY_EXT.
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    If the reset notification behavior is NO_RESET_NOTIFICATION_EXT,
1645bd8deadSopenharmony_ci    then the implementation will never deliver notification of reset
1655bd8deadSopenharmony_ci    events, and GetGraphicsResetStatusEXT will always return
1665bd8deadSopenharmony_ci    NO_ERROR[fn1].
1675bd8deadSopenharmony_ci       [fn1: In this case it is recommended that implementations should
1685bd8deadSopenharmony_ci        not allow loss of context state no matter what events occur.
1695bd8deadSopenharmony_ci        However, this is only a recommendation, and cannot be relied
1705bd8deadSopenharmony_ci        upon by applications.]
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    If the behavior is LOSE_CONTEXT_ON_RESET_EXT, a graphics reset will
1735bd8deadSopenharmony_ci    result in the loss of all context state, requiring the recreation of
1745bd8deadSopenharmony_ci    all associated objects. In this case GetGraphicsResetStatusEXT may
1755bd8deadSopenharmony_ci    return any of the values described above.
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ci    If a graphics reset notification occurs in a context, a notification
1785bd8deadSopenharmony_ci    must also occur in all other contexts which share objects with that
1795bd8deadSopenharmony_ci    context[fn2].
1805bd8deadSopenharmony_ci       [fn2: The values returned by GetGraphicsResetStatusEXT in the
1815bd8deadSopenharmony_ci        different contexts may differ.]
1825bd8deadSopenharmony_ci
1835bd8deadSopenharmony_ci    Add to Section 2.8 "Vertex Arrays" before subsection "Transferring
1845bd8deadSopenharmony_ci    Array Elements"
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    Robust buffer access is enabled by creating a context with robust
1875bd8deadSopenharmony_ci    access enabled through the window system binding APIs. When enabled,
1885bd8deadSopenharmony_ci    indices within the vertex array that lie outside the arrays defined
1895bd8deadSopenharmony_ci    for enabled attributes result in undefined values for the
1905bd8deadSopenharmony_ci    corresponding attributes, but cannot result in application failure.
1915bd8deadSopenharmony_ci    Robust buffer access behavior may be queried by calling GetIntegerv
1925bd8deadSopenharmony_ci    with the symbolic constant CONTEXT_ROBUST_ACCESS_EXT.
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
1955bd8deadSopenharmony_ciOperations and the Frame Buffer)
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    Modify section 4.3.1 "Reading Pixels"
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    Pixels are read using
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci        void ReadPixels(int x, int y, sizei width, sizei height,
2025bd8deadSopenharmony_ci                        enum format, enum type, void *data);
2035bd8deadSopenharmony_ci        void ReadnPixelsEXT(int x, int y, sizei width, sizei height,
2045bd8deadSopenharmony_ci                           enum format, enum type, sizei bufSize,
2055bd8deadSopenharmony_ci                           void *data);
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ci    Add to the description of ReadPixels:
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci    ReadnPixelsEXT behaves identically to ReadPixels except that it does
2105bd8deadSopenharmony_ci    not write more than <bufSize> bytes into <data>. If the buffer size
2115bd8deadSopenharmony_ci    required to fill all the requested data is greater than <bufSize> an
2125bd8deadSopenharmony_ci    INVALID_OPERATION error is generated and <data> is not altered.
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL ES 2.0 Specification (Special
2155bd8deadSopenharmony_ciFunctions):
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    None
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0 Specification (State and
2205bd8deadSopenharmony_ciState Requests)
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci    Modify Section 6.1.8 "Shader and Program Queries"
2235bd8deadSopenharmony_ci
2245bd8deadSopenharmony_ci    The commands
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ci        void GetUniformfv(uint program, int location, float *params);
2275bd8deadSopenharmony_ci        void GetnUniformfvEXT(uint program, int location, sizei bufSize,
2285bd8deadSopenharmony_ci                              float *params);
2295bd8deadSopenharmony_ci        void GetUniformiv(uint program, int location, int *params);
2305bd8deadSopenharmony_ci        void GetnUniformivEXT(uint program, int location, sizei bufSize,
2315bd8deadSopenharmony_ci                              int *params);
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    return the value or values of the uniform at location <location>
2345bd8deadSopenharmony_ci    for program object <program> in the array <params>. Calling
2355bd8deadSopenharmony_ci    GetnUniformfvEXT or GetnUniformivEXT ensures that no more than
2365bd8deadSopenharmony_ci    <bufSize> bytes are written into <params>. If the buffer size
2375bd8deadSopenharmony_ci    required to fill all the requested data is greater than <bufSize> an
2385bd8deadSopenharmony_ci    INVALID_OPERATION error is generated and <params> is not altered.
2395bd8deadSopenharmony_ci    ...
2405bd8deadSopenharmony_ci
2415bd8deadSopenharmony_ciAdditions to The OpenGL ES Shading Language Specification, Version 1.
2425bd8deadSopenharmony_ci
2435bd8deadSopenharmony_ci    Append to the third paragraph of section 4.1.9 "Arrays"
2445bd8deadSopenharmony_ci
2455bd8deadSopenharmony_ci    If robust buffer access is enabled via the OpenGL ES API, such
2465bd8deadSopenharmony_ci    indexing must not result in abnormal program termination. The
2475bd8deadSopenharmony_ci    results are still undefined, but implementations are encouraged to
2485bd8deadSopenharmony_ci    produce zero values for such accesses.
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ciInteractions with EGL_EXT_create_context_robustness
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci    If the EGL window-system binding API is used to create a context,
2535bd8deadSopenharmony_ci    the EGL_EXT_create_context_robustness extension is supported, and
2545bd8deadSopenharmony_ci    the attribute EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT is set to
2555bd8deadSopenharmony_ci    EGL_TRUE when eglCreateContext is called, the resulting context will
2565bd8deadSopenharmony_ci    perform robust buffer access as described above in section 2.8, and
2575bd8deadSopenharmony_ci    the CONTEXT_ROBUST_ACCESS_EXT query will return GL_TRUE as described
2585bd8deadSopenharmony_ci    above in section 6.1.5.
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    If the EGL window-system binding API is used to create a context and
2615bd8deadSopenharmony_ci    the EGL_EXT_create_context_robustness extension is supported, then
2625bd8deadSopenharmony_ci    the value of attribute EGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_EXT
2635bd8deadSopenharmony_ci    determines the reset notification behavior and the value of
2645bd8deadSopenharmony_ci    RESET_NOTIFICATION_STRATEGY_EXT, as described in section 2.6.
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ciErrors
2675bd8deadSopenharmony_ci
2685bd8deadSopenharmony_ci    ReadnPixelsEXT, GetnUniformfvEXT, and GetnUniformivEXT share all the
2695bd8deadSopenharmony_ci    errors of their unsized buffer query counterparts with the addition
2705bd8deadSopenharmony_ci    that INVALID_OPERATION is generated if the buffer size required to
2715bd8deadSopenharmony_ci    fill all the requested data is greater than <bufSize>.
2725bd8deadSopenharmony_ci
2735bd8deadSopenharmony_ciNew Implementation Dependent State
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci    Get Value                       Type  Get Command     Minimum Value    Description                  Sec.  Attribute
2765bd8deadSopenharmony_ci    ---------                       ----  -----------     -------------    ---------------------------  ----- ---------
2775bd8deadSopenharmony_ci    CONTEXT_ROBUST_ACCESS_EXT       B     GetIntegerv     -                Robust access enabled        6.1.5 -
2785bd8deadSopenharmony_ci    RESET_NOTIFICATION_STRATEGY_EXT Z_2   GetIntegerv     See sec. 2.6     Reset notification behavior  2.6   -
2795bd8deadSopenharmony_ci
2805bd8deadSopenharmony_ciIssues
2815bd8deadSopenharmony_ci
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci    1.  What should this extension be called?
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci        RESOLVED: EXT_robustness
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci        Since this is intended to be a version of ARB_robustness for
2885bd8deadSopenharmony_ci        OpenGL ES, it should be named accordingly.
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci    2.  How does this extension differ from Desktop GL's ARB_robustness?
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci        RESOLVED: Because EGL_EXT_create_context_robustness uses a
2935bd8deadSopenharmony_ci	separate attribute to enable robust buffer access, a
2945bd8deadSopenharmony_ci	corresponding query is added here.
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    3.  Should we provide a context creation mechanism to enable this extension?
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci        RESOLVED. Yes.
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci        Currently, EGL_EXT_create_context_robustness provides this
3015bd8deadSopenharmony_ci        mechanism via two unique attributes. These attributes differ
3025bd8deadSopenharmony_ci	from those specified by KHR_create_context to allow for
3035bd8deadSopenharmony_ci	differences in what functionality those attributes define.
3045bd8deadSopenharmony_ci        
3055bd8deadSopenharmony_ci    4. What can cause a graphics reset?
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ci       Either user or implementor errors may result in a graphics reset.
3085bd8deadSopenharmony_ci       If the application attempts to perform a rendering that takes too long
3095bd8deadSopenharmony_ci       whether due to an infinite loop in a shader or even just a rendering
3105bd8deadSopenharmony_ci       operation that takes too long on the given hardware. Implementation
3115bd8deadSopenharmony_ci       errors may produce badly formed hardware commands. Memory access errors
3125bd8deadSopenharmony_ci       may result from user or implementor mistakes. On some systems, power
3135bd8deadSopenharmony_ci       management events such as system sleep, screen saver activation, or
3145bd8deadSopenharmony_ci       pre-emption may also context resets to occur. Any of these events may
3155bd8deadSopenharmony_ci       result in a graphics reset event that will be detectable by the
3165bd8deadSopenharmony_ci       mechanism described in this extension.
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci    5. How should the application react to a reset context event?
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci       RESOLVED: For this extension, the application is expected to query
3215bd8deadSopenharmony_ci       the reset status until NO_ERROR is returned. If a reset is encountered,
3225bd8deadSopenharmony_ci       at least one *RESET* status will be returned. Once NO_ERROR is again
3235bd8deadSopenharmony_ci       encountered, the application can safely destroy the old context and
3245bd8deadSopenharmony_ci       create a new one.
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci       After a reset event, apps should not use a context for any purpose
3275bd8deadSopenharmony_ci       other than determining its reset status, and then destroying it. If a
3285bd8deadSopenharmony_ci       context receives a reset event, all other contexts in its share group
3295bd8deadSopenharmony_ci       will also receive reset events, and should be destroyed and
3305bd8deadSopenharmony_ci       recreated.
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci       Apps should be cautious in interpreting the GUILTY and INNOCENT reset
3335bd8deadSopenharmony_ci       statuses. These are guidelines to the immediate cause of a reset, but
3345bd8deadSopenharmony_ci       not guarantees of the ultimate cause.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci    6. If a graphics reset occurs in a shared context, what happens in
3375bd8deadSopenharmony_ci       shared contexts?
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci       RESOLVED: A reset in one context will result in a reset in all other
3405bd8deadSopenharmony_ci       contexts in its share group. 
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci    7. How can an application query for robust buffer access support,
3435bd8deadSopenharmony_ci       since this is now determined at context creation time?
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci       RESOLVED. The application can query the value of ROBUST_ACCESS_EXT
3465bd8deadSopenharmony_ci       using GetIntegerv. If true, this functionality is enabled.
3475bd8deadSopenharmony_ci
3485bd8deadSopenharmony_ci    8. How is the reset notification behavior controlled?
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci       RESOLVED: Reset notification behavior is determined at context
3515bd8deadSopenharmony_ci       creation time using EGL/GLX/WGL/etc. mechanisms. In order that shared
3525bd8deadSopenharmony_ci       objects be handled predictably, a context cannot share with
3535bd8deadSopenharmony_ci       another context unless both have the same reset notification
3545bd8deadSopenharmony_ci       behavior.
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci
3575bd8deadSopenharmony_ciRevision History
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci    Rev.    Date       Author     Changes
3605bd8deadSopenharmony_ci    ----  ------------ ---------  ----------------------------------------
3615bd8deadSopenharmony_ci      3   31 Oct  2011 groth      Reverted to attribute for robust access. Now it's a
3625bd8deadSopenharmony_ci                                  companion to rather than subset of KHR_create_context
3635bd8deadSopenharmony_ci      2   11 Oct  2011 groth      Merged ANGLE and NV extensions.
3645bd8deadSopenharmony_ci                                  Convert to using flag to indicate robust access.
3655bd8deadSopenharmony_ci      1   15 July 2011 groth      Initial version
366