Commits (9)
......@@ -2,7 +2,7 @@ dnl configure.ac
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([libglvnd], [1.3.3], [kbrenneman@nvidia.com])
AC_INIT([libglvnd], [1.3.4], [kbrenneman@nvidia.com])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADERS([config.h])
......
......@@ -6,34 +6,15 @@ extern "C" {
#endif
/*
** Copyright (c) 2013-2017 The Khronos Group Inc.
** Copyright 2013-2020 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/*
** This header is generated from the Khronos EGL XML API Registry.
** The current version of the Registry, generator scripts
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
** Khronos $Git commit SHA1: b5409265f3 $ on $Git commit date: 2020-02-20 08:24:34 -0800 $
** Khronos $Git commit SHA1: 9581d004ff $ on $Git commit date: 2021-04-06 15:53:59 +0200 $
*/
#include <EGL/eglplatform.h>
......@@ -42,7 +23,7 @@ extern "C" {
#define EGL_EGL_PROTOTYPES 1
#endif
/* Generated on date 20200220 */
/* Generated on date 20210802 */
/* Generated C header for:
* API: egl
......
......@@ -6,39 +6,20 @@ extern "C" {
#endif
/*
** Copyright (c) 2013-2017 The Khronos Group Inc.
** Copyright 2013-2020 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/*
** This header is generated from the Khronos EGL XML API Registry.
** The current version of the Registry, generator scripts
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
** Khronos $Git commit SHA1: b5409265f3 $ on $Git commit date: 2020-02-20 08:24:34 -0800 $
** Khronos $Git commit SHA1: dc0b58dca5 $ on $Git commit date: 2021-06-25 01:58:50 +0200 $
*/
#include <EGL/eglplatform.h>
#define EGL_EGLEXT_VERSION 20200220
#define EGL_EGLEXT_VERSION 20210629
/* Generated C header for:
* API: egl
......@@ -593,6 +574,14 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSu
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
#ifndef EGL_ANGLE_sync_control_rate
#define EGL_ANGLE_sync_control_rate 1
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
#endif
#endif /* EGL_ANGLE_sync_control_rate */
#ifndef EGL_ANGLE_window_fixed_size
#define EGL_ANGLE_window_fixed_size 1
#define EGL_FIXED_SIZE_ANGLE 0x3201
......@@ -662,6 +651,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id
#endif
#endif /* EGL_EXT_compositor */
#ifndef EGL_EXT_config_select_group
#define EGL_EXT_config_select_group 1
#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
#endif /* EGL_EXT_config_select_group */
#ifndef EGL_EXT_create_context_robustness
#define EGL_EXT_create_context_robustness 1
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
......@@ -694,6 +688,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint a
#define EGL_DRM_MASTER_FD_EXT 0x333C
#endif /* EGL_EXT_device_drm */
#ifndef EGL_EXT_device_drm_render_node
#define EGL_EXT_device_drm_render_node 1
#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
#endif /* EGL_EXT_device_drm_render_node */
#ifndef EGL_EXT_device_enumeration
#define EGL_EXT_device_enumeration 1
#endif /* EGL_EXT_device_enumeration */
......@@ -703,10 +702,26 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint a
#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
#endif /* EGL_EXT_device_openwf */
#ifndef EGL_EXT_device_persistent_id
#define EGL_EXT_device_persistent_id 1
#define EGL_DEVICE_UUID_EXT 0x335C
#define EGL_DRIVER_UUID_EXT 0x335D
#define EGL_DRIVER_NAME_EXT 0x335E
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
#endif
#endif /* EGL_EXT_device_persistent_id */
#ifndef EGL_EXT_device_query
#define EGL_EXT_device_query 1
#endif /* EGL_EXT_device_query */
#ifndef EGL_EXT_device_query_name
#define EGL_EXT_device_query_name 1
#define EGL_RENDERER_EXT 0x335F
#endif /* EGL_EXT_device_query_name */
#ifndef EGL_EXT_gl_colorspace_bt2020_linear
#define EGL_EXT_gl_colorspace_bt2020_linear 1
#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
......@@ -883,6 +898,17 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy,
#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
#endif /* EGL_EXT_platform_x11 */
#ifndef EGL_EXT_platform_xcb
#define EGL_EXT_platform_xcb 1
#define EGL_PLATFORM_XCB_EXT 0x31DC
#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
......@@ -1149,6 +1175,24 @@ EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface sur
#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
#endif /* EGL_NV_robustness_video_memory_purge */
#ifndef EGL_NV_stream_consumer_eglimage
#define EGL_NV_stream_consumer_eglimage 1
#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
#define EGL_STREAM_IMAGE_ADD_NV 0x3374
#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, EGLuint64KHR *modifiers, EGLAttrib *attrib_list);
EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
#endif
#endif /* EGL_NV_stream_consumer_eglimage */
#ifndef EGL_NV_stream_consumer_gltexture_yuv
#define EGL_NV_stream_consumer_gltexture_yuv 1
#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
......
......@@ -2,36 +2,17 @@
#define __eglplatform_h_
/*
** Copyright (c) 2007-2016 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
** Copyright 2007-2020 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
*/
/* Platform-specific types and definitions for egl.h
* $Revision: 30994 $ on $Date: 2015-04-30 13:36:48 -0700 (Thu, 30 Apr 2015) $
*
* Adopters may modify khrplatform.h and this file to suit their platform.
* You are encouraged to submit all modifications to the Khronos group so that
* they can be included in future versions of this file. Please submit changes
* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
* by filing a bug against product "EGL" component "Registry".
* by filing an issue or pull request on the public Khronos EGL Registry, at
* https://www.github.com/KhronosGroup/EGL-Registry/
*/
#include <KHR/khrplatform.h>
......@@ -67,7 +48,13 @@
* implementations.
*/
#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
typedef void *EGLNativeDisplayType;
typedef void *EGLNativePixmapType;
typedef void *EGLNativeWindowType;
#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
......@@ -116,13 +103,7 @@ typedef intptr_t EGLNativeDisplayType;
typedef intptr_t EGLNativePixmapType;
typedef intptr_t EGLNativeWindowType;
#elif defined(__unix__) && defined(EGL_NO_X11)
typedef void *EGLNativeDisplayType;
typedef khronos_uintptr_t EGLNativePixmapType;
typedef khronos_uintptr_t EGLNativeWindowType;
#elif defined(__unix__) || defined(USE_X11)
#elif defined(USE_X11)
/* X11 (tentative) */
#include <X11/Xlib.h>
......@@ -132,6 +113,12 @@ typedef Display *EGLNativeDisplayType;
typedef Pixmap EGLNativePixmapType;
typedef Window EGLNativeWindowType;
#elif defined(__unix__)
typedef void *EGLNativeDisplayType;
typedef khronos_uintptr_t EGLNativePixmapType;
typedef khronos_uintptr_t EGLNativeWindowType;
#elif defined(__APPLE__)
typedef int EGLNativeDisplayType;
......
......@@ -119,7 +119,7 @@
* This follows the return type of the function and precedes the function
* name in the function prototype.
*/
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(KHRONOS_STATIC)
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
/* Win32 but not WinCE */
# define KHRONOS_APIENTRY __stdcall
#else
......
......@@ -28,7 +28,7 @@
project(
'glvnd',
'c',
version : '1.3.3',
version : '1.3.4',
meson_version : '>= 0.48',
default_options : ['c_std=gnu99']
)
......
......@@ -48,7 +48,8 @@ file in a well-known directory, similar to how Vulkan ICDs are loaded.
how it searches for a library.
* If the library path is a relative path containing at least
one directory separator, for example `./libEGL_myvendor.so`,
the loader's behaviour is currently unspecified.
then the loader is expected to treat it as being relative
to the directory containing the JSON file.
## ICD installation
......
......@@ -23,7 +23,7 @@
static void LoadVendors(void);
static void TeardownVendor(__EGLvendorInfo *vendor);
static __EGLvendorInfo *LoadVendor(const char *filename);
static __EGLvendorInfo *LoadVendor(const char *filename, const char *jsonPath);
static void LoadVendorsFromConfigDir(const char *dirName);
static __EGLvendorInfo *LoadVendorFromConfigFile(const char *filename);
......@@ -317,7 +317,7 @@ static __EGLvendorInfo *LoadVendorFromConfigFile(const char *filename)
goto done;
}
libraryPath = node->valuestring;
vendor = LoadVendor(libraryPath);
vendor = LoadVendor(libraryPath, filename);
done:
if (root != NULL) {
......@@ -437,8 +437,11 @@ static void CheckVendorExtensions(__EGLvendorInfo *vendor)
}
}
static __EGLvendorInfo *LoadVendor(const char *filename)
static __EGLvendorInfo *LoadVendor(const char *filename, const char *jsonPath)
{
char *absolutePath = NULL;
char *jsonDir = NULL;
const char *dlopenName;
__PFNEGLMAINPROC eglMainProc;
__EGLvendorInfo *vendor = NULL;
__EGLvendorInfo *otherVendor;
......@@ -450,7 +453,58 @@ static __EGLvendorInfo *LoadVendor(const char *filename)
return NULL;
}
vendor->dlhandle = dlopen(filename, RTLD_LAZY);
if (filename == NULL) {
// Clearly not going to work
goto fail;
}
else if (filename[0] == '/') {
// filename is an absolute path, no special handling needed
// e.g. /usr/lib/libEGL_myvendor.so.0
dlopenName = filename;
}
else if (strchr(filename, '/') == NULL) {
// filename is a bare SONAME, no special handling needed
// e.g. libEGL_myvendor.so.0
dlopenName = filename;
}
else {
char *slash;
// filename is a relative path; we have to interpret it as
// relative to *somewhere*. dlopen() would interpret it as relative
// to the current working directory, but that seems unlikely to be
// useful. Instead, follow Vulkan by interpreting it as relative
// to the directory where we found the ICD.
// e.g. it might be ../../../$LIB/libEGL_myvendor.so.0
// Resolve symlinks and relative components in jsonPath. This assumes
// a POSIX.1-2008-compliant realpath(), similar to the implementations
// in glibc and musl.
jsonDir = realpath(jsonPath, NULL);
if (jsonDir == NULL) {
goto fail;
}
// Truncate jsonDir at the last slash to get the directory,
// e.g. /usr/share/glvnd/egl_vendor.d
slash = strrchr(jsonDir, '/');
if (slash == NULL) {
// Shouldn't happen, because the output of realpath() is absolute;
// recover by just not loading it
goto fail;
}
*slash = '\0';
// Concatenate jsonDir and filename
// e.g. /usr/share/glvnd/egl_vendor.d/../../../$LIB/libEGL_myvendor.so.0
if (glvnd_asprintf(&absolutePath, "%s/%s", jsonDir, filename) < 0) {
goto fail;
}
dlopenName = absolutePath;
}
vendor->dlhandle = dlopen(dlopenName, RTLD_LAZY);
if (vendor->dlhandle == NULL) {
goto fail;
}
......@@ -526,12 +580,16 @@ static __EGLvendorInfo *LoadVendor(const char *filename)
__EGL_DISPATCH_FUNC_INDICES[i]);
}
free(absolutePath);
free(jsonDir);
return vendor;
fail:
if (vendor != NULL) {
TeardownVendor(vendor);
}
free(absolutePath);
free(jsonDir);
return NULL;
}
......@@ -96,6 +96,7 @@ static DEFINE_INITIALIZED_LKDHASH(__GLXvendorNameHash, __glXVendorNameHash);
typedef struct __GLXdisplayInfoHashRec {
__GLXdisplayInfo info;
Bool inTeardown;
XExtCodes *extCodes;
UT_hash_handle hh;
} __GLXdisplayInfoHash;
......@@ -688,6 +689,10 @@ static void CleanupDisplayInfoEntry(void *unused, __GLXdisplayInfoHash *pEntry)
free(pEntry->info.clientStrings[i]);
}
if (pEntry->extCodes != NULL) {
XESetCloseDisplay(pEntry->info.dpy, pEntry->extCodes->extension, NULL);
}
LKDHASH_TEARDOWN(__GLXvendorXIDMappingHash,
pEntry->info.xidVendorHash, NULL, NULL, False);
}
......@@ -716,6 +721,8 @@ static int OnDisplayClosed(Display *dpy, XExtCodes *codes)
LKDHASH_WRLOCK(__glXDisplayInfoHash);
HASH_DEL(_LH(__glXDisplayInfoHash), pEntry);
LKDHASH_UNLOCK(__glXDisplayInfoHash);
pEntry->extCodes = NULL;
CleanupDisplayInfoEntry(NULL, pEntry);
free(pEntry);
}
......@@ -757,15 +764,15 @@ __GLXdisplayInfo *__glXLookupDisplay(Display *dpy)
LKDHASH_WRLOCK(__glXDisplayInfoHash);
HASH_FIND_PTR(_LH(__glXDisplayInfoHash), &dpy, foundEntry);
if (foundEntry == NULL) {
XExtCodes *extCodes = XAddExtension(dpy);
if (extCodes == NULL) {
pEntry->extCodes = XAddExtension(dpy);
if (pEntry->extCodes == NULL) {
CleanupDisplayInfoEntry(NULL, pEntry);
free(pEntry);
LKDHASH_UNLOCK(__glXDisplayInfoHash);
return NULL;
}
XESetCloseDisplay(dpy, extCodes->extension, OnDisplayClosed);
XESetCloseDisplay(dpy, pEntry->extCodes->extension, OnDisplayClosed);
HASH_ADD_PTR(_LH(__glXDisplayInfoHash), info.dpy, pEntry);
} else {
// Another thread already created the hashtable entry.
......
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<!--
Copyright (c) 2013-2017 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Materials.
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-->
Copyright 2013-2020 The Khronos Group Inc.
SPDX-License-Identifier: Apache-2.0
-->
<!--
This file, egl.xml, is the EGL API Registry. The older ".spec" file
format has been retired and will no longer be updated with new
......@@ -590,9 +572,10 @@
<enum value="0x31D7" name="EGL_PLATFORM_GBM_MESA" alias="EGL_PLATFORM_GBM_KHR"/>
<enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_KHR"/>
<enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_EXT" alias="EGL_PLATFORM_WAYLAND_KHR"/>
<unused start="0x31DC" end="0x31DC"/>
<enum value="0x31DC" name="EGL_PLATFORM_XCB_EXT"/>
<enum value="0x31DD" name="EGL_PLATFORM_SURFACELESS_MESA"/>
<unused start="0x31DE" end="0x31DF"/>
<enum value="0x31DE" name="EGL_PLATFORM_XCB_SCREEN_EXT"/>
<enum value="0x31DF" name="EGL_PRESENT_OPAQUE_EXT"/>
</enums>
<!-- Due to an oversight in development, these enums alias the above MESA
......@@ -870,7 +853,11 @@
<enum value="0x3352" name="EGL_TRACK_REFERENCES_KHR"/>
<unused start="0x3353" end="0x3356"/>
<enum value="0x3357" name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
<unused start="0x3358" end="0x335F"/>
<unused start="0x3358" end="0x335B"/>
<enum value="0x335C" name="EGL_DEVICE_UUID_EXT"/>
<enum value="0x335D" name="EGL_DRIVER_UUID_EXT"/>
<enum value="0x335E" name="EGL_DRIVER_NAME_EXT"/>
<enum value="0x335F" name="EGL_RENDERER_EXT"/>
<enum value="0x3360" name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
<enum value="0x3361" name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
<enum value="0x3362" name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
......@@ -890,7 +877,12 @@
<enum value="0x3370" name="EGL_Y_AXIS_NV"/>
<enum value="0x3371" name="EGL_STREAM_DMA_NV"/>
<enum value="0x3372" name="EGL_STREAM_DMA_SERVER_NV"/>
<unused start="0x3373" end="0x339F"/>
<enum value="0x3373" name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
<enum value="0x3374" name="EGL_STREAM_IMAGE_ADD_NV"/>
<enum value="0x3375" name="EGL_STREAM_IMAGE_REMOVE_NV"/>
<enum value="0x3376" name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
<enum value="0x3377" name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
<unused start="0x3378" end="0x339F"/>
</enums>
<enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
......@@ -1037,6 +1029,11 @@
<unused start="0x34B0" end="0x34BF"/>
</enums>
<enums namespace="EGL" start="0x34C0" end="0x34CF" vendor="EXT" comment="Reserved for Robert Mader (PR 124)">
<enum value="0x34C0" name="EGL_CONFIG_SELECT_GROUP_EXT"/>
<unused start="0x34C1" end="0x34CF"/>
</enums>
<!-- Please remember that new enumerant allocations must be obtained by
request to the Khronos API registrar (see comments at the top of this
file) File requests in the Khronos Bugzilla, EGL project, Registry
......@@ -1046,8 +1043,8 @@
<!-- Reservable for future use. To generate a new range, allocate multiples
of 16 starting at the lowest available point in this block. -->
<enums namespace="EGL" start="0x34C0" end="0x3FFF" vendor="KHR" comment="Reserved for future use">
<unused start="0x34C0" end="0x3FFF"/>
<enums namespace="EGL" start="0x34D0" end="0x3FFF" vendor="KHR" comment="Reserved for future use">
<unused start="0x34D0" end="0x3FFF"/>
</enums>
<enums namespace="EGL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with GL.">
......@@ -1377,6 +1374,13 @@
<command>
<proto><ptype>EGLint</ptype> <name>eglGetError</name></proto>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateANGLE</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLSurface</ptype> <name>surface</name></param>
<param><ptype>EGLint</ptype> *<name>numerator</name></param>
<param><ptype>EGLint</ptype> *<name>denominator</name></param>
</command>
<command>
<proto><ptype>EGLClientBuffer</ptype> <name>eglGetNativeClientBufferANDROID</name></proto>
<param>const struct <ptype>AHardwareBuffer</ptype> *<name>buffer</name></param>
......@@ -1956,6 +1960,44 @@
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLImageKHR</ptype> <name>image</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglStreamImageConsumerConnectNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
<param><ptype>EGLint</ptype> <name>num_modifiers</name></param>
<param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
<param><ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
</command>
<command>
<proto><ptype>EGLint</ptype> <name>eglQueryStreamConsumerEventNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
<param><ptype>EGLTime</ptype> <name>timeout</name></param>
<param><ptype>EGLenum</ptype> *<name>event</name></param>
<param><ptype>EGLAttrib</ptype> *<name>aux</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglStreamAcquireImageNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
<param><ptype>EGLImage</ptype> *<name>pImage</name></param>
<param><ptype>EGLSync</ptype> <name>sync</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglStreamReleaseImageNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
<param><ptype>EGLImage</ptype> <name>image</name></param>
<param><ptype>EGLSync</ptype> <name>sync</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceBinaryEXT</name></proto>
<param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
<param><ptype>EGLint</ptype> <name>name</name></param>
<param><ptype>EGLint</ptype> <name>max_size</name></param>
<param>void *<name>value</name></param>
<param>EGLint *<name>size</name></param>
</command>
</commands>
<!-- SECTION: EGL API interface definitions. -->
......@@ -2322,6 +2364,11 @@
<enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
</require>
</extension>
<extension name="EGL_ANGLE_sync_control_rate" supported="egl">
<require>
<command name="eglGetMscRateANGLE"/>
</require>
</extension>
<extension name="EGL_ANGLE_window_fixed_size" supported="egl">
<require>
<enum name="EGL_FIXED_SIZE_ANGLE"/>
......@@ -2350,6 +2397,11 @@
<command name="eglClientSignalSyncEXT"/>
</require>
</extension>
<extension name="EGL_EXT_config_select_group" supported="egl">
<require>
<enum name="EGL_CONFIG_SELECT_GROUP_EXT"/>
</require>
</extension>
<extension name="EGL_EXT_create_context_robustness" supported="egl">
<require>
<enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
......@@ -2546,6 +2598,17 @@
<enum name="EGL_PLATFORM_X11_SCREEN_EXT"/>
</require>
</extension>
<extension name="EGL_EXT_platform_xcb" supported="egl">
<require>
<enum name="EGL_PLATFORM_XCB_EXT"/>
<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"/>
......@@ -3152,6 +3215,18 @@
<enum name="EGL_STREAM_DMA_NV"/>
<enum name="EGL_STREAM_DMA_SERVER_NV"/>
</require>
</extension>
<extension name="EGL_NV_stream_consumer_eglimage" supported="egl">
<require>
<enum name="EGL_STREAM_CONSUMER_IMAGE_NV"/>
<enum name="EGL_STREAM_IMAGE_ADD_NV"/>
<enum name="EGL_STREAM_IMAGE_REMOVE_NV"/>
<enum name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
<command name="eglStreamImageConsumerConnectNV"/>
<command name="eglQueryStreamConsumerEventNV"/>
<command name="eglStreamAcquireImageNV"/>
<command name="eglStreamReleaseImageNV"/>
</require>
</extension>
<extension name="EGL_NV_stream_fifo_next" supported="egl">
<require>
......@@ -3364,5 +3439,23 @@
<enum name="EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM"/>
</require>
</extension>
<extension name="EGL_EXT_device_query_name" supported="egl">
<require>
<enum name="EGL_RENDERER_EXT"/>
</require>
</extension>
<extension name="EGL_EXT_device_persistent_id" supported="egl">
<require>
<enum name="EGL_DEVICE_UUID_EXT"/>
<enum name="EGL_DRIVER_UUID_EXT"/>
<enum name="EGL_DRIVER_NAME_EXT"/>
<command name="eglQueryDeviceBinaryEXT"/>
</require>
</extension>
<extension name="EGL_EXT_device_drm_render_node" supported="egl">
<require>
<enum name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
</require>
</extension>
</extensions>
</registry>