egl: Expose EGL_KHR_get_all_proc_addresses and its client extension

Mesa already implements the behavior of EGL_KHR_get_all_proc_addresses
and EGL_KHR_client_get_all_proc_addresses. This patch just exposes the
extension strings.

See: https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
Chad Versace
2014-11-20 10:26:38 -08:00
parent 0b6e0aa5ae
commit 7e8ba77c49
5 changed files with 23 additions and 1 deletions

View File

@@ -357,6 +357,23 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
/* limit to APIs supported by core */ /* limit to APIs supported by core */
disp->ClientAPIs &= _EGL_API_ALL_BITS; disp->ClientAPIs &= _EGL_API_ALL_BITS;
/* EGL_KHR_get_all_proc_addresses is a corner-case extension. The spec
* classifies it as an EGL display extension, though conceptually it's an
* EGL client extension.
*
* From the EGL_KHR_get_all_proc_addresses spec:
*
* The EGL implementation must expose the name
* EGL_KHR_client_get_all_proc_addresses if and only if it exposes
* EGL_KHR_get_all_proc_addresses and supports
* EGL_EXT_client_extensions.
*
* Mesa unconditionally exposes both client extensions mentioned above,
* so the spec requires that each EGLDisplay unconditionally expose
* EGL_KHR_get_all_proc_addresses also.
*/
disp->Extensions.KHR_get_all_proc_addresses = EGL_TRUE;
} }
/* Update applications version of major and minor if not NULL */ /* Update applications version of major and minor if not NULL */

View File

@@ -97,6 +97,7 @@ struct _egl_extensions
EGLBoolean KHR_image_base; EGLBoolean KHR_image_base;
EGLBoolean KHR_image_pixmap; EGLBoolean KHR_image_pixmap;
EGLBoolean KHR_vg_parent_image; EGLBoolean KHR_vg_parent_image;
EGLBoolean KHR_get_all_proc_addresses;
EGLBoolean KHR_gl_texture_2D_image; EGLBoolean KHR_gl_texture_2D_image;
EGLBoolean KHR_gl_texture_cubemap_image; EGLBoolean KHR_gl_texture_cubemap_image;
EGLBoolean KHR_gl_texture_3D_image; EGLBoolean KHR_gl_texture_3D_image;

View File

@@ -55,7 +55,8 @@ struct _egl_global _eglGlobal =
true, /* EGL_EXT_platform_base */ true, /* EGL_EXT_platform_base */
true, /* EGL_EXT_platform_x11 */ true, /* EGL_EXT_platform_x11 */
true, /* EGL_EXT_platform_wayland */ true, /* EGL_EXT_platform_wayland */
true /* EGL_MESA_platform_gbm */ true, /* EGL_MESA_platform_gbm */
true, /* EGL_KHR_client_get_all_proc_addresses */
}, },
/* ClientExtensionsString */ /* ClientExtensionsString */
@@ -64,6 +65,7 @@ struct _egl_global _eglGlobal =
" EGL_EXT_platform_x11" " EGL_EXT_platform_x11"
" EGL_EXT_platform_wayland" " EGL_EXT_platform_wayland"
" EGL_MESA_platform_gbm" " EGL_MESA_platform_gbm"
" EGL_KHR_client_get_all_proc_addresses"
}; };

View File

@@ -56,6 +56,7 @@ struct _egl_global
bool EXT_platform_x11; bool EXT_platform_x11;
bool EXT_platform_wayland; bool EXT_platform_wayland;
bool MESA_platform_gbm; bool MESA_platform_gbm;
bool KHR_get_all_proc_addresses;
} ClientExtensions; } ClientExtensions;
const char *ClientExtensionString; const char *ClientExtensionString;

View File

@@ -101,6 +101,7 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy)
_eglAppendExtension(&exts, "EGL_KHR_image"); _eglAppendExtension(&exts, "EGL_KHR_image");
_EGL_CHECK_EXTENSION(KHR_vg_parent_image); _EGL_CHECK_EXTENSION(KHR_vg_parent_image);
_EGL_CHECK_EXTENSION(KHR_get_all_proc_addresses);
_EGL_CHECK_EXTENSION(KHR_gl_texture_2D_image); _EGL_CHECK_EXTENSION(KHR_gl_texture_2D_image);
_EGL_CHECK_EXTENSION(KHR_gl_texture_cubemap_image); _EGL_CHECK_EXTENSION(KHR_gl_texture_cubemap_image);
_EGL_CHECK_EXTENSION(KHR_gl_texture_3D_image); _EGL_CHECK_EXTENSION(KHR_gl_texture_3D_image);