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