102f4aeb0Sopenharmony_ciName 202f4aeb0Sopenharmony_ci 302f4aeb0Sopenharmony_ci KHR_mutable_render_buffer 402f4aeb0Sopenharmony_ci 502f4aeb0Sopenharmony_ciName Strings 602f4aeb0Sopenharmony_ci 702f4aeb0Sopenharmony_ci EGL_KHR_mutable_render_buffer 802f4aeb0Sopenharmony_ci 902f4aeb0Sopenharmony_ciContributors 1002f4aeb0Sopenharmony_ci 1102f4aeb0Sopenharmony_ci Alon Or-bach 1202f4aeb0Sopenharmony_ci John Carmack 1302f4aeb0Sopenharmony_ci Cass Everitt 1402f4aeb0Sopenharmony_ci Michael Gold 1502f4aeb0Sopenharmony_ci James Jones 1602f4aeb0Sopenharmony_ci Jesse Hall 1702f4aeb0Sopenharmony_ci Ray Smith 1802f4aeb0Sopenharmony_ci 1902f4aeb0Sopenharmony_ciContact 2002f4aeb0Sopenharmony_ci 2102f4aeb0Sopenharmony_ci Alon Or-bach, Samsung Electronics (alon.orbach 'at' samsung.com) 2202f4aeb0Sopenharmony_ci 2302f4aeb0Sopenharmony_ciIP Status 2402f4aeb0Sopenharmony_ci 2502f4aeb0Sopenharmony_ci No known claims. 2602f4aeb0Sopenharmony_ci 2702f4aeb0Sopenharmony_ciNotice 2802f4aeb0Sopenharmony_ci 2902f4aeb0Sopenharmony_ci Copyright (c) 2016 The Khronos Group Inc. Copyright terms at 3002f4aeb0Sopenharmony_ci http://www.khronos.org/registry/speccopyright.html 3102f4aeb0Sopenharmony_ci 3202f4aeb0Sopenharmony_ciStatus 3302f4aeb0Sopenharmony_ci 3402f4aeb0Sopenharmony_ci Approved by the EGL Working Group on January 28, 2016 3502f4aeb0Sopenharmony_ci Ratified by the Khronos Board of Promoters on March 11, 2016 3602f4aeb0Sopenharmony_ci 3702f4aeb0Sopenharmony_ciVersion 3802f4aeb0Sopenharmony_ci 3902f4aeb0Sopenharmony_ci Version 12, January 29, 2016 4002f4aeb0Sopenharmony_ci 4102f4aeb0Sopenharmony_ciNumber 4202f4aeb0Sopenharmony_ci 4302f4aeb0Sopenharmony_ci EGL Extension #96 4402f4aeb0Sopenharmony_ci 4502f4aeb0Sopenharmony_ciExtension Type 4602f4aeb0Sopenharmony_ci 4702f4aeb0Sopenharmony_ci EGL display extension 4802f4aeb0Sopenharmony_ci 4902f4aeb0Sopenharmony_ciDependencies 5002f4aeb0Sopenharmony_ci 5102f4aeb0Sopenharmony_ci EGL 1.2 or later is required. 5202f4aeb0Sopenharmony_ci 5302f4aeb0Sopenharmony_ci Written based on the EGL 1.5 specification (August 27, 2014). 5402f4aeb0Sopenharmony_ci 5502f4aeb0Sopenharmony_ciNew Types 5602f4aeb0Sopenharmony_ci 5702f4aeb0Sopenharmony_ci None 5802f4aeb0Sopenharmony_ci 5902f4aeb0Sopenharmony_ciNew Procedures and Functions 6002f4aeb0Sopenharmony_ci 6102f4aeb0Sopenharmony_ci None 6202f4aeb0Sopenharmony_ci 6302f4aeb0Sopenharmony_ciNew Tokens 6402f4aeb0Sopenharmony_ci 6502f4aeb0Sopenharmony_ci Accepted as a new value for the EGL_SURFACE_TYPE EGLConfig attribute: 6602f4aeb0Sopenharmony_ci 6702f4aeb0Sopenharmony_ci EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x00001000 6802f4aeb0Sopenharmony_ci 6902f4aeb0Sopenharmony_ciOverview 7002f4aeb0Sopenharmony_ci 7102f4aeb0Sopenharmony_ci The aim of this extension is to allow toggling of front-buffer rendering 7202f4aeb0Sopenharmony_ci for window surfaces after their initial creation. 7302f4aeb0Sopenharmony_ci 7402f4aeb0Sopenharmony_ci This allows for implementations to switch between back-buffered and single- 7502f4aeb0Sopenharmony_ci buffered rendering without requiring re-creation of the surface. It is not 7602f4aeb0Sopenharmony_ci expected for toggling to be a frequent event. 7702f4aeb0Sopenharmony_ci 7802f4aeb0Sopenharmony_ci This extension does not guarantee when rendering results appear on-screen. 7902f4aeb0Sopenharmony_ci To avoid incorrect results, applications will need to use mechanisms not 8002f4aeb0Sopenharmony_ci included in this extension to synchronize rendering with the display. This 8102f4aeb0Sopenharmony_ci functionality is not covered by this extension, and vendors are encouraged 8202f4aeb0Sopenharmony_ci to provide guidelines on how this is achieved on their implementation. 8302f4aeb0Sopenharmony_ci 8402f4aeb0Sopenharmony_ciAdd to the list of supported tokens for EGL_SURFACE_TYPE in section 3.4 8502f4aeb0Sopenharmony_ci"Configuration Management", page 23: 8602f4aeb0Sopenharmony_ci 8702f4aeb0Sopenharmony_ci If EGL_MUTABLE_RENDER_BUFFER_BIT_KHR is set in EGL_SURFACE_TYPE, then the 8802f4aeb0Sopenharmony_ci EGL_RENDER_BUFFER attribute of a surface can be toggled between front 8902f4aeb0Sopenharmony_ci buffer and back buffer rendering using eglSurfaceAttrib (see section 9002f4aeb0Sopenharmony_ci 3.5.6). 9102f4aeb0Sopenharmony_ci 9202f4aeb0Sopenharmony_ciAdd to the list of supported tokens for eglSurfaceAttrib in section 3.5.6 9302f4aeb0Sopenharmony_ci"Surface Attributes", page 43: 9402f4aeb0Sopenharmony_ci 9502f4aeb0Sopenharmony_ci If attribute is EGL_RENDER_BUFFER, then value specifies whether to render 9602f4aeb0Sopenharmony_ci to a back buffer by specifying EGL_BACK_BUFFER, or directly to the front 9702f4aeb0Sopenharmony_ci buffer by specifying EGL_SINGLE_BUFFER. The change to which buffer is 9802f4aeb0Sopenharmony_ci rendered to takes effect at the subsequent eglSwapBuffers call, as 9902f4aeb0Sopenharmony_ci described in section 3.10.1.2, and changes are considered pending up until 10002f4aeb0Sopenharmony_ci that point. 10102f4aeb0Sopenharmony_ci 10202f4aeb0Sopenharmony_ci If attribute is EGL_RENDER_BUFFER, and the EGL_SURFACE_TYPE attribute of 10302f4aeb0Sopenharmony_ci the EGLConfig used to create surface does not contain 10402f4aeb0Sopenharmony_ci EGL_MUTABLE_RENDER_BUFFER_BIT_KHR, or the windowing system is unable to 10502f4aeb0Sopenharmony_ci support the requested rendering mode, an EGL_BAD_MATCH error is generated 10602f4aeb0Sopenharmony_ci and the EGL_RENDER_BUFFER state is left unchanged. 10702f4aeb0Sopenharmony_ci 10802f4aeb0Sopenharmony_ciModify the following sentence in section 3.5.6 "Surface Attributes", page 45: 10902f4aeb0Sopenharmony_ci 11002f4aeb0Sopenharmony_ci Querying EGL_RENDER_BUFFER returns the buffer which client API rendering 11102f4aeb0Sopenharmony_ci is requested to use. For a window surface, this is the attribute value 11202f4aeb0Sopenharmony_ci specified when the surface was created or last set via eglSurfaceAttrib. 11302f4aeb0Sopenharmony_ci 11402f4aeb0Sopenharmony_ciModify the third bullet describing eglQueryContext in section 3.7.4, page 63: 11502f4aeb0Sopenharmony_ci 11602f4aeb0Sopenharmony_ci If the context is bound to a window surface, then either EGL_BACK_BUFFER 11702f4aeb0Sopenharmony_ci or EGL_SINGLE_BUFFER may be returned. The value returned depends on 11802f4aeb0Sopenharmony_ci both the buffer requested by the setting of the EGL_RENDER_BUFFER property 11902f4aeb0Sopenharmony_ci of the surface (which may be queried by calling eglQuerySurface - see 12002f4aeb0Sopenharmony_ci section 3.5.6), and on the client API (not all client APIs support 12102f4aeb0Sopenharmony_ci single-buffer rendering to window surfaces). Some client APIs allow control 12202f4aeb0Sopenharmony_ci of whether rendering goes to the front or back buffer for back buffered 12302f4aeb0Sopenharmony_ci surfaces. This client API-specific choice is not reflected in the returned 12402f4aeb0Sopenharmony_ci value, which only describes the buffer that will be rendered to by default 12502f4aeb0Sopenharmony_ci if not overridden by the client API. If the EGL_RENDER_BUFFER attribute of 12602f4aeb0Sopenharmony_ci a surface is changed by calling eglSurfaceAttrib, the value returned by 12702f4aeb0Sopenharmony_ci eglQueryContext will change once eglSwapBuffers is called, as described in 12802f4aeb0Sopenharmony_ci section 3.10.1.2. 12902f4aeb0Sopenharmony_ci 13002f4aeb0Sopenharmony_ciModify the following sentence in section 3.10.1 "Posting to a Window", page 79: 13102f4aeb0Sopenharmony_ci 13202f4aeb0Sopenharmony_ci If surface is a single-buffered window, pixmap, or pbuffer surface for which 13302f4aeb0Sopenharmony_ci there is a pending change to the EGL_RENDER_BUFFER attribute, eglSwapBuffers 13402f4aeb0Sopenharmony_ci performs an implicit flush operation on the context and effects the 13502f4aeb0Sopenharmony_ci attribute change. If surface is a single-buffered window, pixmap, or pbuffer 13602f4aeb0Sopenharmony_ci surface for which there is no pending change to the EGL_RENDER_BUFFER 13702f4aeb0Sopenharmony_ci attribute, eglSwapBuffers has no effect. 13802f4aeb0Sopenharmony_ci 13902f4aeb0Sopenharmony_ciAdd a new section 3.10.1.2 "Handling of render buffer attribute changes" 14002f4aeb0Sopenharmony_ci 14102f4aeb0Sopenharmony_ci If there is a pending change to the EGL_RENDER_BUFFER attribute of a 14202f4aeb0Sopenharmony_ci surface, as described in section 3.5.6, the change to which buffer is 14302f4aeb0Sopenharmony_ci rendered to takes effect at the subsequent eglSwapBuffers call. 14402f4aeb0Sopenharmony_ci 14502f4aeb0Sopenharmony_ci When switching to single-buffered from back-buffered rendering and the 14602f4aeb0Sopenharmony_ci surface's EGL_SWAP_BEHAVIOR attribute is set to EGL_BUFFER_DESTROYED, the 14702f4aeb0Sopenharmony_ci back buffers are considered to be undefined after calling eglSurfaceAttrib. 14802f4aeb0Sopenharmony_ci Only draw calls after this eglSurfaceAttrib call are guaranteed to affect 14902f4aeb0Sopenharmony_ci the back buffer content. If it is set to EGL_BUFFER_PRESERVED, the back 15002f4aeb0Sopenharmony_ci buffer contents are unaffected. At the next eglSwapBuffers call, the back 15102f4aeb0Sopenharmony_ci buffer is posted as the front buffer. After this, any draw calls take 15202f4aeb0Sopenharmony_ci effect on the front buffer. 15302f4aeb0Sopenharmony_ci 15402f4aeb0Sopenharmony_ci When switching to back-buffered from single-buffered rendering, any draw 15502f4aeb0Sopenharmony_ci calls up until the next eglSwapBuffers call continues to affect the front 15602f4aeb0Sopenharmony_ci buffer, and this initial eglSwapBuffers call does not affect the window 15702f4aeb0Sopenharmony_ci content. The back buffer is considered to be undefined at this point, no 15802f4aeb0Sopenharmony_ci matter what the EGL_SWAP_BEHAVIOR attribute of the surface is set to. Once 15902f4aeb0Sopenharmony_ci the pending change has taken place during this initial eglSwapBuffers call, 16002f4aeb0Sopenharmony_ci further rendering affects the back buffer. 16102f4aeb0Sopenharmony_ci 16202f4aeb0Sopenharmony_ci If the EGL_RENDER_BUFFER attribute is changed twice or more in succession 16302f4aeb0Sopenharmony_ci without new content rendered to the surface as described above, undefined 16402f4aeb0Sopenharmony_ci content may appear on-screen. 16502f4aeb0Sopenharmony_ci 16602f4aeb0Sopenharmony_ci 16702f4aeb0Sopenharmony_ciIssues 16802f4aeb0Sopenharmony_ci 16902f4aeb0Sopenharmony_ci 1) When should the switch between rendering modes occur? 17002f4aeb0Sopenharmony_ci 17102f4aeb0Sopenharmony_ci RESOLVED: The switch should take effect after the subsequent eglSwapBuffers 17202f4aeb0Sopenharmony_ci call. The operation of the subsequent eglSwapBuffers call is according to 17302f4aeb0Sopenharmony_ci the current state (i.e the state before the eglSurfaceAttrib call), not the 17402f4aeb0Sopenharmony_ci pending state. 17502f4aeb0Sopenharmony_ci 17602f4aeb0Sopenharmony_ci When switching to EGL_SINGLE_BUFFER, the current state is EGL_BACK_BUFFER 17702f4aeb0Sopenharmony_ci and therefore eglSwapBuffers posts the current back buffer. After this any 17802f4aeb0Sopenharmony_ci rendering takes effect on the front buffer. 17902f4aeb0Sopenharmony_ci 18002f4aeb0Sopenharmony_ci When switching to EGL_BACK_BUFFER, the current state is EGL_SINGLE_BUFFER 18102f4aeb0Sopenharmony_ci and therefore eglSwapBuffers only flushes the current context. After this 18202f4aeb0Sopenharmony_ci any rendering takes effect on the back buffer. 18302f4aeb0Sopenharmony_ci 18402f4aeb0Sopenharmony_ci 2) If this extension is advertised, should all surface configurations with 18502f4aeb0Sopenharmony_ci EGL_WINDOW_BIT in EGL_SURFACE_TYPE be required to support it? 18602f4aeb0Sopenharmony_ci 18702f4aeb0Sopenharmony_ci RESOLVED: No. Add a config bit to indicate support for EGL_RENDER_BUFFER 18802f4aeb0Sopenharmony_ci toggling. If toggle performed when not supported, EGL_BAD_MATCH error is 18902f4aeb0Sopenharmony_ci generated. 19002f4aeb0Sopenharmony_ci 19102f4aeb0Sopenharmony_ci 3) How often do we expect the switch between single and back buffering to 19202f4aeb0Sopenharmony_ci occur? 19302f4aeb0Sopenharmony_ci 19402f4aeb0Sopenharmony_ci RESOLVED: It is not expected for the toggle to be a frequent call. For 19502f4aeb0Sopenharmony_ci example, we expect it to be called once when enabling a VR accessory and 19602f4aeb0Sopenharmony_ci once when disabling it. 19702f4aeb0Sopenharmony_ci 19802f4aeb0Sopenharmony_ci 4) Do we need to reword section 3.7.4 (page 63)? 19902f4aeb0Sopenharmony_ci 20002f4aeb0Sopenharmony_ci RESOLVED: Yes. Modified to explain how some client APIs can still override 20102f4aeb0Sopenharmony_ci the behavior and what value eglQueryContext is expected to return for 20202f4aeb0Sopenharmony_ci EGL_RENDER_BUFFER. 20302f4aeb0Sopenharmony_ci 20402f4aeb0Sopenharmony_ci 5) Why not enable this via the client API, like OpenGL does via glDrawBuffer? 20502f4aeb0Sopenharmony_ci 20602f4aeb0Sopenharmony_ci RESOLVED: This would not be possible on some platforms, where the swap chain 20702f4aeb0Sopenharmony_ci is controlled via EGL. 20802f4aeb0Sopenharmony_ci 20902f4aeb0Sopenharmony_ci 6) Is this extension a client or display extension? 21002f4aeb0Sopenharmony_ci 21102f4aeb0Sopenharmony_ci RESOLVED: This is a display extension. 21202f4aeb0Sopenharmony_ci 21302f4aeb0Sopenharmony_ci 7) What state are back buffers after switching between single and back buffered 21402f4aeb0Sopenharmony_ci rendering? 21502f4aeb0Sopenharmony_ci 21602f4aeb0Sopenharmony_ci RESOLVED: This is as set out in section 3.10.1.2. 21702f4aeb0Sopenharmony_ci 21802f4aeb0Sopenharmony_ci 8) What guarantees of an onscreen update does this extension make? 21902f4aeb0Sopenharmony_ci 22002f4aeb0Sopenharmony_ci RESOLVED: This extension does not make any additional guarantees to the 22102f4aeb0Sopenharmony_ci equivalent behavior of a window surface with EGL_RENDER_BUFFER set to the 22202f4aeb0Sopenharmony_ci same value at creation of the surface. When a surface is single-buffered, 22302f4aeb0Sopenharmony_ci any API call which is specified to explicitly or implicitly flush is 22402f4aeb0Sopenharmony_ci expected to affect the on-screen content in finite time, but no timing 22502f4aeb0Sopenharmony_ci guarantees are provided. 22602f4aeb0Sopenharmony_ci 22702f4aeb0Sopenharmony_ci It is recommended that if ancillary buffers are not required, they are 22802f4aeb0Sopenharmony_ci invalidated before flushing to reduce unnecessary memory transfers on some 22902f4aeb0Sopenharmony_ci implementations (e.g. by calling glInvalidateFramebuffer for OpenGL ES). 23002f4aeb0Sopenharmony_ci 23102f4aeb0Sopenharmony_ci 9) Should an implicit flush occur when eglSwapBuffers is called on a 23202f4aeb0Sopenharmony_ci single-buffered surface? 23302f4aeb0Sopenharmony_ci 23402f4aeb0Sopenharmony_ci RESOLVED: Only when there is a pending EGL_RENDER_BUFFER change which will 23502f4aeb0Sopenharmony_ci be affected by this eglSwapBuffers call. Contexts must be flushed when 23602f4aeb0Sopenharmony_ci changing render targets. 23702f4aeb0Sopenharmony_ci 23802f4aeb0Sopenharmony_ci 10) How does toggling EGL_RENDER_BUFFER affect client APIs? 23902f4aeb0Sopenharmony_ci 24002f4aeb0Sopenharmony_ci RESOLVED: Changing the value of EGL_RENDER_BUFFER should result in the same 24102f4aeb0Sopenharmony_ci behavior in client APIs as binding a window surface with that mode to the 24202f4aeb0Sopenharmony_ci current context. For example, in OpenGL, it is akin to switching from a 24302f4aeb0Sopenharmony_ci drawable with a back buffer and front buffer to a drawable with only a 24402f4aeb0Sopenharmony_ci front buffer, or vice versa. 24502f4aeb0Sopenharmony_ci 24602f4aeb0Sopenharmony_ci Note the effect of such an operation on the draw buffer and framebuffer 24702f4aeb0Sopenharmony_ci completeness, if applicable, is client API specific. OpenGL ES applications 24802f4aeb0Sopenharmony_ci will see no change and will be able to continue rendering without updating 24902f4aeb0Sopenharmony_ci the draw buffer, as OpenGL ES exposes only one renderable surface, 25002f4aeb0Sopenharmony_ci regardless of single or back-buffered drawables. OpenGL applications should 25102f4aeb0Sopenharmony_ci update the current draw buffer using glDrawBuffers() or similar commands to 25202f4aeb0Sopenharmony_ci ensure rendering targets the correct buffer after toggling 25302f4aeb0Sopenharmony_ci EGL_RENDER_BUFFER. 25402f4aeb0Sopenharmony_ci 25502f4aeb0Sopenharmony_ci 11) How should interaction between multiple window surfaces be handled? 25602f4aeb0Sopenharmony_ci 25702f4aeb0Sopenharmony_ci RESOLVED: This is left to platform vendors to define. Implementations may 25802f4aeb0Sopenharmony_ci choose to restrict use of front buffer rendering to forbid interaction 25902f4aeb0Sopenharmony_ci between multiple windows, or provide a buffer that is read by the display 26002f4aeb0Sopenharmony_ci or compositing hardware but not the final composited results to prevent 26102f4aeb0Sopenharmony_ci security concerns or undefined content. 26202f4aeb0Sopenharmony_ci 26302f4aeb0Sopenharmony_ci 12) How should the name of the extension be? 26402f4aeb0Sopenharmony_ci 26502f4aeb0Sopenharmony_ci RESOLVED: EGL_KHR_mutable_render_buffer 26602f4aeb0Sopenharmony_ci 26702f4aeb0Sopenharmony_ci 26802f4aeb0Sopenharmony_ciRevision History 26902f4aeb0Sopenharmony_ci 27002f4aeb0Sopenharmony_ci#12 (Jon Leech, January 29, 2016) 27102f4aeb0Sopenharmony_ci - Assign enumerant value 27202f4aeb0Sopenharmony_ci - Update Status block 27302f4aeb0Sopenharmony_ci 27402f4aeb0Sopenharmony_ci#11 (Alon Or-bach, January 28, 2016) 27502f4aeb0Sopenharmony_ci - Updated issue 1 to be consistent with new resolution to issue 9 27602f4aeb0Sopenharmony_ci - Marked issues 7, 8 and 10 as resolved 27702f4aeb0Sopenharmony_ci 27802f4aeb0Sopenharmony_ci#10 (Alon Or-bach, January 28, 2016) 27902f4aeb0Sopenharmony_ci - Renamed extension to EGL_KHR_mutable_render_buffer, resolving issue 12 28002f4aeb0Sopenharmony_ci - Updates issue 7 resolution to just refer to spec 28102f4aeb0Sopenharmony_ci - Cleaned up section 3.10.1.2 wording 28202f4aeb0Sopenharmony_ci - Added wording to overview on lack of guarantee of rendering results 28302f4aeb0Sopenharmony_ci 28402f4aeb0Sopenharmony_ci#9 (Alon Or-bach, January 22, 2016) 28502f4aeb0Sopenharmony_ci - Marked issues 1, 9 and 11 as resolved 28602f4aeb0Sopenharmony_ci - Updated issue 4 to reflect previously agreed wording for section 3.7.4 28702f4aeb0Sopenharmony_ci - Updated issue 8 to indicate no new flush guarantees made by this extension 28802f4aeb0Sopenharmony_ci - New proposed resolution to issue 7 and modified section 3.10.1.2 to vary 28902f4aeb0Sopenharmony_ci whether back buffer content are undefined based on swap behavior 29002f4aeb0Sopenharmony_ci - Updated issue 10 with wording to explain differing client API behaviors 29102f4aeb0Sopenharmony_ci - Added error condition for windowing systems unable to support a requested 29202f4aeb0Sopenharmony_ci rendering mode in section 3.5.6 29302f4aeb0Sopenharmony_ci - New proposed resolution to issue 12 for extension naming 29402f4aeb0Sopenharmony_ci - Minor updates to wording (attribute instead of mode, overview phrasing) 29502f4aeb0Sopenharmony_ci 29602f4aeb0Sopenharmony_ci#8 (Ray Smith, January 5, 2016) 29702f4aeb0Sopenharmony_ci - Revert issue 1 resolution to that in revision 6, adding wording to section 29802f4aeb0Sopenharmony_ci 3.10.1 to make eglSwapBuffers effect pending state changes even for single 29902f4aeb0Sopenharmony_ci buffered surfaces. 30002f4aeb0Sopenharmony_ci 30102f4aeb0Sopenharmony_ci#7 (Alon Or-bach, December 17, 2015) 30202f4aeb0Sopenharmony_ci - New proposed resolution to issue 1 (explicit flush as update boundary), 30302f4aeb0Sopenharmony_ci updating the wording of 3.5.6, 3.7.4 3.10.1.2 to reflect this 30402f4aeb0Sopenharmony_ci - Added new issue 11 to reflect concerns about interactions between multiple 30502f4aeb0Sopenharmony_ci windows 30602f4aeb0Sopenharmony_ci - Added new issue 12 to determine extension name 30702f4aeb0Sopenharmony_ci 30802f4aeb0Sopenharmony_ci#6 (Alon Or-bach, November 11, 2015) 30902f4aeb0Sopenharmony_ci - Resolved issue 6 and proposed resolution to issue 4 (section 3.7.4) 31002f4aeb0Sopenharmony_ci - Added new issue 10 with proposed resolution 31102f4aeb0Sopenharmony_ci 31202f4aeb0Sopenharmony_ci#5 (Alon Or-bach, May 12, 2015) 31302f4aeb0Sopenharmony_ci - Updated section 3.10.1.2, changed resolution to issue 9 31402f4aeb0Sopenharmony_ci 31502f4aeb0Sopenharmony_ci#4 (Alon Or-bach, April 15, 2015) 31602f4aeb0Sopenharmony_ci - Added issue 9 and a typo fix 31702f4aeb0Sopenharmony_ci 31802f4aeb0Sopenharmony_ci#3 (Alon Or-bach, April 09, 2015) 31902f4aeb0Sopenharmony_ci - Added issue 7 and 8, wording on what content expected during mode switch 32002f4aeb0Sopenharmony_ci 32102f4aeb0Sopenharmony_ci#2 (Alon Or-bach, March 09, 2015) 32202f4aeb0Sopenharmony_ci - Cleanup, rename to XXX_set_render_buffer_mode 32302f4aeb0Sopenharmony_ci 32402f4aeb0Sopenharmony_ci#1 (Alon Or-bach, March 04, 2015) 32502f4aeb0Sopenharmony_ci - Initial draft 326