102f4aeb0Sopenharmony_ciName
202f4aeb0Sopenharmony_ci
302f4aeb0Sopenharmony_ci    EXT_present_opaque
402f4aeb0Sopenharmony_ci
502f4aeb0Sopenharmony_ciName Strings
602f4aeb0Sopenharmony_ci
702f4aeb0Sopenharmony_ci    EGL_EXT_present_opaque
802f4aeb0Sopenharmony_ci
902f4aeb0Sopenharmony_ciContributors
1002f4aeb0Sopenharmony_ci
1102f4aeb0Sopenharmony_ci    Eric Engestrom
1202f4aeb0Sopenharmony_ci
1302f4aeb0Sopenharmony_ciContacts
1402f4aeb0Sopenharmony_ci
1502f4aeb0Sopenharmony_ci    Eric Engestrom (eric 'at' engestrom.ch)
1602f4aeb0Sopenharmony_ci
1702f4aeb0Sopenharmony_ciIP Status
1802f4aeb0Sopenharmony_ci
1902f4aeb0Sopenharmony_ci    No known IP claims.
2002f4aeb0Sopenharmony_ci
2102f4aeb0Sopenharmony_ciStatus
2202f4aeb0Sopenharmony_ci
2302f4aeb0Sopenharmony_ci    Complete
2402f4aeb0Sopenharmony_ci
2502f4aeb0Sopenharmony_ciVersion
2602f4aeb0Sopenharmony_ci
2702f4aeb0Sopenharmony_ci    #1, August 8, 2021
2802f4aeb0Sopenharmony_ci
2902f4aeb0Sopenharmony_ciNumber
3002f4aeb0Sopenharmony_ci
3102f4aeb0Sopenharmony_ci    EGL Extension #146
3202f4aeb0Sopenharmony_ci
3302f4aeb0Sopenharmony_ciExtension Type
3402f4aeb0Sopenharmony_ci
3502f4aeb0Sopenharmony_ci    EGL display extension
3602f4aeb0Sopenharmony_ci
3702f4aeb0Sopenharmony_ciDependencies
3802f4aeb0Sopenharmony_ci
3902f4aeb0Sopenharmony_ci    Requires EGL 1.4 and EGL_KHR_image_base extension
4002f4aeb0Sopenharmony_ci
4102f4aeb0Sopenharmony_ci    This extension is written against the wording of the EGL 1.4
4202f4aeb0Sopenharmony_ci    specification, and EGL_KHR_image_base version 6.
4302f4aeb0Sopenharmony_ci
4402f4aeb0Sopenharmony_ciOverview
4502f4aeb0Sopenharmony_ci
4602f4aeb0Sopenharmony_ci    This extension adds a new EGL surface attribute EGL_PRESENT_OPAQUE_EXT
4702f4aeb0Sopenharmony_ci    to indicate that the surface should be presented as opaque,
4802f4aeb0Sopenharmony_ci    disregarding any alpha channel if present.
4902f4aeb0Sopenharmony_ci    If surface attribute EGL_PRESENT_OPAQUE_EXT is EGL_TRUE, then the
5002f4aeb0Sopenharmony_ci    surface will be presented as opaque.
5102f4aeb0Sopenharmony_ci
5202f4aeb0Sopenharmony_ciNew Types
5302f4aeb0Sopenharmony_ci
5402f4aeb0Sopenharmony_ci    None
5502f4aeb0Sopenharmony_ci
5602f4aeb0Sopenharmony_ciNew Procedures and Functions
5702f4aeb0Sopenharmony_ci
5802f4aeb0Sopenharmony_ci    None
5902f4aeb0Sopenharmony_ci
6002f4aeb0Sopenharmony_ciNew Tokens
6102f4aeb0Sopenharmony_ci
6202f4aeb0Sopenharmony_ci    New EGLSurface attribute name:
6302f4aeb0Sopenharmony_ci
6402f4aeb0Sopenharmony_ci        EGL_PRESENT_OPAQUE_EXT                  0x31DF
6502f4aeb0Sopenharmony_ci
6602f4aeb0Sopenharmony_ci
6702f4aeb0Sopenharmony_ciAdditions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)
6802f4aeb0Sopenharmony_ci
6902f4aeb0Sopenharmony_ci    Change the second paragraph in section 3.5 on p. 28 (describing
7002f4aeb0Sopenharmony_ci    eglCreateWindowSurface):
7102f4aeb0Sopenharmony_ci
7202f4aeb0Sopenharmony_ci        "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
7302f4aeb0Sopenharmony_ci        EGL_PRESENT_OPAQUE_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."
7402f4aeb0Sopenharmony_ci
7502f4aeb0Sopenharmony_ci    Add the following paragraph in section 3.5 on p. 28 before
7602f4aeb0Sopenharmony_ci    "EGL_VG_COLORSPACE specifies the color space used by OpenVG"
7702f4aeb0Sopenharmony_ci    (describing eglCreateWindowSurface attrib_list):
7802f4aeb0Sopenharmony_ci
7902f4aeb0Sopenharmony_ci        "EGL_PRESENT_OPAQUE_EXT specifies the presentation opacity mode
8002f4aeb0Sopenharmony_ci        of the window surface. If its value is EGL_TRUE, then the
8102f4aeb0Sopenharmony_ci        surface's alpha channel (if any) will be ignored and considered
8202f4aeb0Sopenharmony_ci        fully opaque. If its value is EGL_FALSE, then the compositor
8302f4aeb0Sopenharmony_ci        doesn't change its behaviour, and considers the surface's alpha
8402f4aeb0Sopenharmony_ci        channel the same way as if the extension wasn't implemented. The
8502f4aeb0Sopenharmony_ci        default value of EGL_PRESENT_OPAQUE_EXT is EGL_FALSE."
8602f4aeb0Sopenharmony_ci
8702f4aeb0Sopenharmony_ci    Add to Table 3.5: Queryable surface attributes and types on p. 37
8802f4aeb0Sopenharmony_ci
8902f4aeb0Sopenharmony_ci        EGL_PRESENT_OPAQUE_EXT    boolean    Surface presentation opacity mode
9002f4aeb0Sopenharmony_ci
9102f4aeb0Sopenharmony_ci    Add following the second paragraph in section 3.6 on p. 39 (describing
9202f4aeb0Sopenharmony_ci    eglQuerySurface):
9302f4aeb0Sopenharmony_ci
9402f4aeb0Sopenharmony_ci        "Querying EGL_PRESENT_OPAQUE_EXT returns the presentation
9502f4aeb0Sopenharmony_ci        opacity mode of the surface. The presentation opacity mode of
9602f4aeb0Sopenharmony_ci        window surfaces is specified in eglCreateWindowSurface. The
9702f4aeb0Sopenharmony_ci        presentation opacity mode of pbuffer and pixmap surfaces is
9802f4aeb0Sopenharmony_ci        always EGL_FALSE."
9902f4aeb0Sopenharmony_ci
10002f4aeb0Sopenharmony_ci    Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
10102f4aeb0Sopenharmony_ci    p. 53 (describing eglCopyBuffers):
10202f4aeb0Sopenharmony_ci
10302f4aeb0Sopenharmony_ci        "If attribute EGL_PRESENT_OPAQUE_EXT of surface has value of EGL_TRUE, then
10402f4aeb0Sopenharmony_ci        an EGL_BAD_ACCESS error is returned."
10502f4aeb0Sopenharmony_ci
10602f4aeb0Sopenharmony_ciIssues
10702f4aeb0Sopenharmony_ci
10802f4aeb0Sopenharmony_ci    None
10902f4aeb0Sopenharmony_ci
11002f4aeb0Sopenharmony_ciRevision History
11102f4aeb0Sopenharmony_ci
11202f4aeb0Sopenharmony_ci    Version 2, 2021-08-17 (Eric Engestrom)
11302f4aeb0Sopenharmony_ci      - Re-worded the compositor's behaviour for EGL_FALSE.
11402f4aeb0Sopenharmony_ci      - Marked extension as Complete.
11502f4aeb0Sopenharmony_ci
11602f4aeb0Sopenharmony_ci    Version 1, 2021-08-08 (Eric Engestrom)
11702f4aeb0Sopenharmony_ci      - Initial draft
11802f4aeb0Sopenharmony_ci
119