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