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