extensions: add EGL_EXT_present_opaque (#132) * extensions: add EGL_EXT_present_opaque (#146) * EGL_EXT_present_opaque: v2, rewording EGL_FALSE behaviour and marking as Complete
diff --git a/api/EGL/eglext.h b/api/EGL/eglext.h index 6ff6205..94dd038 100644 --- a/api/EGL/eglext.h +++ b/api/EGL/eglext.h
@@ -904,6 +904,11 @@ #define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE #endif /* EGL_EXT_platform_xcb */ +#ifndef EGL_EXT_present_opaque +#define EGL_EXT_present_opaque 1 +#define EGL_PRESENT_OPAQUE_EXT 0x31DF +#endif /* EGL_EXT_present_opaque */ + #ifndef EGL_EXT_protected_content #define EGL_EXT_protected_content 1 #define EGL_PROTECTED_CONTENT_EXT 0x32C0
diff --git a/api/egl.xml b/api/egl.xml index 193f7f5..443335c 100644 --- a/api/egl.xml +++ b/api/egl.xml
@@ -575,7 +575,7 @@ <enum value="0x31DC" name="EGL_PLATFORM_XCB_EXT"/> <enum value="0x31DD" name="EGL_PLATFORM_SURFACELESS_MESA"/> <enum value="0x31DE" name="EGL_PLATFORM_XCB_SCREEN_EXT"/> - <unused start="0x31DF" end="0x31DF"/> + <enum value="0x31DF" name="EGL_PRESENT_OPAQUE_EXT"/> </enums> <!-- Due to an oversight in development, these enums alias the above MESA @@ -2604,6 +2604,11 @@ <enum name="EGL_PLATFORM_XCB_SCREEN_EXT"/> </require> </extension> + <extension name="EGL_EXT_present_opaque" supported="egl"> + <require> + <enum name="EGL_PRESENT_OPAQUE_EXT"/> + </require> + </extension> <extension name="EGL_EXT_protected_content" supported="egl"> <require> <enum name="EGL_PROTECTED_CONTENT_EXT"/>
diff --git a/extensions/EXT/EGL_EXT_present_opaque.txt b/extensions/EXT/EGL_EXT_present_opaque.txt new file mode 100644 index 0000000..de2f6d8 --- /dev/null +++ b/extensions/EXT/EGL_EXT_present_opaque.txt
@@ -0,0 +1,118 @@ +Name + + EXT_present_opaque + +Name Strings + + EGL_EXT_present_opaque + +Contributors + + Eric Engestrom + +Contacts + + Eric Engestrom (eric 'at' engestrom.ch) + +IP Status + + No known IP claims. + +Status + + Complete + +Version + + #1, August 8, 2021 + +Number + + EGL Extension #146 + +Extension Type + + EGL display extension + +Dependencies + + Requires EGL 1.4 and EGL_KHR_image_base extension + + This extension is written against the wording of the EGL 1.4 + specification, and EGL_KHR_image_base version 6. + +Overview + + This extension adds a new EGL surface attribute EGL_PRESENT_OPAQUE_EXT + to indicate that the surface should be presented as opaque, + disregarding any alpha channel if present. + If surface attribute EGL_PRESENT_OPAQUE_EXT is EGL_TRUE, then the + surface will be presented as opaque. + +New Types + + None + +New Procedures and Functions + + None + +New Tokens + + New EGLSurface attribute name: + + EGL_PRESENT_OPAQUE_EXT 0x31DF + + +Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces) + + Change the second paragraph in section 3.5 on p. 28 (describing + eglCreateWindowSurface): + + "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER, + EGL_PRESENT_OPAQUE_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT." + + Add the following paragraph in section 3.5 on p. 28 before + "EGL_VG_COLORSPACE specifies the color space used by OpenVG" + (describing eglCreateWindowSurface attrib_list): + + "EGL_PRESENT_OPAQUE_EXT specifies the presentation opacity mode + of the window surface. If its value is EGL_TRUE, then the + surface's alpha channel (if any) will be ignored and considered + fully opaque. If its value is EGL_FALSE, then the compositor + doesn't change its behaviour, and considers the surface's alpha + channel the same way as if the extension wasn't implemented. The + default value of EGL_PRESENT_OPAQUE_EXT is EGL_FALSE." + + Add to Table 3.5: Queryable surface attributes and types on p. 37 + + EGL_PRESENT_OPAQUE_EXT boolean Surface presentation opacity mode + + Add following the second paragraph in section 3.6 on p. 39 (describing + eglQuerySurface): + + "Querying EGL_PRESENT_OPAQUE_EXT returns the presentation + opacity mode of the surface. The presentation opacity mode of + window surfaces is specified in eglCreateWindowSurface. The + presentation opacity mode of pbuffer and pixmap surfaces is + always EGL_FALSE." + + Add following after "which must be a valid native pixmap handle." in section 3.9.2 on + p. 53 (describing eglCopyBuffers): + + "If attribute EGL_PRESENT_OPAQUE_EXT of surface has value of EGL_TRUE, then + an EGL_BAD_ACCESS error is returned." + +Issues + + None + +Revision History + + Version 2, 2021-08-17 (Eric Engestrom) + - Re-worded the compositor's behaviour for EGL_FALSE. + - Marked extension as Complete. + + Version 1, 2021-08-08 (Eric Engestrom) + - Initial draft +
diff --git a/index.php b/index.php index 6e74541..7b4e9bb 100644 --- a/index.php +++ b/index.php
@@ -357,6 +357,8 @@ </li> <li value=145> <a href="extensions/EXT/EGL_EXT_config_select_group.txt">EGL_EXT_config_select_group</a> </li> +<li value=146> <a href="extensions/EXT/EGL_EXT_present_opaque.txt">EGL_EXT_present_opaque</a> +</li> </ol> <h6> Providing Feedback on the Registry </h6>
diff --git a/registry.tcl b/registry.tcl index 1055079..5d7a1da 100644 --- a/registry.tcl +++ b/registry.tcl
@@ -752,4 +752,9 @@ flags public filename extensions/EXT/EGL_EXT_config_select_group.txt } -# Next free extension number: 146 +extension EGL_EXT_present_opaque { + number 146 + flags public + filename extensions/EXT/EGL_EXT_present_opaque.txt +} +# Next free extension number: 147