Commit 0a5bc0ce by Jamie Madill Committed by Commit Bot

EGL: Auto-generate "libEGL" export cpp file.

This steps towards full auto-generation of EGL entry point files. Bug: angleproject:2621 Change-Id: I629447bb6754ee1e87bef020de21b28e37e20eaf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552774 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
parent 105b43f9
......@@ -204,12 +204,12 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseDeviceANGLE(EGLDeviceEXT device);
typedef EGLint (EGLAPIENTRYP PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC) (EGLDisplay dpy, EGLenum attrib);
typedef void (EGLAPIENTRYP PFNEGLPROGRAMCACHEQUERYANGLEPROC) (EGLDisplay dpy, EGLint index, void *key, EGLint *keysize, void *binary, EGLint *binarysize);
typedef void (EGLAPIENTRYP PFNEGLPROGRAMCACHEPOPULATEANGLEPROC) (EGLDisplay dpy, const void *key, EGLint keysize, const void *binary, EGLint binarysize);
typedef EGLint (EGLAPIENTRYP PFNEGLPROGRAMCACHERESIZEANGLEPROC) (EGLDisplay dpy, EGLint limit, EGLenum mode);
typedef EGLint (EGLAPIENTRYP PFNEGLPROGRAMCACHERESIZEANGLEPROC) (EGLDisplay dpy, EGLint limit, EGLint mode);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLint EGLAPIENTRY eglProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib);
EGLAPI void EGLAPIENTRY eglProgramCacheQueryANGLE(EGLDisplay dpy, EGLint index, void *key, EGLint *keysize, void *binary, EGLint *binarysize);
EGLAPI void EGLAPIENTRY eglProgramCachePopulateANGLE(EGLDisplay dpy, const void *key, EGLint keysize, const void *binary, EGLint binarysize);
EGLAPI EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLenum mode);
EGLAPI EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLint mode);
#endif
#endif /* EGL_ANGLE_program_cache_control */
......
......@@ -8,7 +8,7 @@
"scripts/entry_point_packed_gl_enums.json":
"846be5dc8cb36076207699b025633fcc",
"scripts/generate_entry_points.py":
"aae0f372d7db77f2cafa40f20c5a68d5",
"06fac560bdbe1a51d7a5d0b5985dc894",
"scripts/gl.xml":
"f66967f3f3d696b5d8306fd80bbd49a8",
"scripts/gl_angle_ext.xml":
......@@ -153,6 +153,8 @@
"46f74a3b19fd7e243ddd47a7478ae818",
"src/libANGLE/validationGL4_autogen.h":
"cbe3f917024a93a3adcbd2806f3e951f",
"src/libEGL/libEGL_autogen.cpp":
"e6a94332f3bbea212b9a5df9654b59f8",
"src/libGL/entry_points_gl_1_0_autogen.cpp":
"cb974a5a4230f15b0de83a3f690dc481",
"src/libGL/entry_points_gl_1_0_autogen.h":
......
......@@ -233,13 +233,21 @@ CONTEXT_HEADER = """\
CONTEXT_DECL_FORMAT = """ {return_type} {name_lower_no_suffix}({internal_params}){maybe_const}; \\"""
LIBGLES_ENTRY_POINT_DEF = """\
TEMPLATE_GL_ENTRY_POINT_EXPORT = """\
{return_type}GL_APIENTRY gl{name}{explicit_context_suffix}({explicit_context_param}{explicit_context_comma}{params})
{{
return gl::{name}{explicit_context_suffix}({explicit_context_internal_param}{explicit_context_comma}{internal_params});
}}
"""
TEMPLATE_EGL_ENTRY_POINT_EXPORT = """\
{return_type}EGLAPIENTRY egl{name}({params})
{{
EnsureEGLLoaded();
return EGL_{name}({internal_params});
}}
"""
TEMPLATE_GLEXT_EXPLICIT_CONTEXT_INC = """\
// GENERATED FILE - DO NOT EDIT.
// Generated by {script_name} using data from {data_source_name}.
......@@ -582,6 +590,99 @@ EGL_EXT_HEADER_INCLUDES = """\
#include <export.h>
"""
LIBGLESV2_EXPORT_INCLUDES = """
#include "angle_gl.h"
#include "libGLESv2/entry_points_gles_1_0_autogen.h"
#include "libGLESv2/entry_points_gles_2_0_autogen.h"
#include "libGLESv2/entry_points_gles_3_0_autogen.h"
#include "libGLESv2/entry_points_gles_3_1_autogen.h"
#include "libGLESv2/entry_points_gles_3_2_autogen.h"
#include "libGLESv2/entry_points_gles_ext_autogen.h"
#include "common/event_tracer.h"
"""
LIBGL_EXPORT_INCLUDES = """
#include "angle_gl.h"
#include "libGL/entry_points_gl_1_0_autogen.h"
#include "libGL/entry_points_gl_1_1_autogen.h"
#include "libGL/entry_points_gl_1_2_autogen.h"
#include "libGL/entry_points_gl_1_3_autogen.h"
#include "libGL/entry_points_gl_1_4_autogen.h"
#include "libGL/entry_points_gl_1_5_autogen.h"
#include "libGL/entry_points_gl_2_0_autogen.h"
#include "libGL/entry_points_gl_2_1_autogen.h"
#include "libGL/entry_points_gl_3_0_autogen.h"
#include "libGL/entry_points_gl_3_1_autogen.h"
#include "libGL/entry_points_gl_3_2_autogen.h"
#include "libGL/entry_points_gl_3_3_autogen.h"
#include "libGL/entry_points_gl_4_0_autogen.h"
#include "libGL/entry_points_gl_4_1_autogen.h"
#include "libGL/entry_points_gl_4_2_autogen.h"
#include "libGL/entry_points_gl_4_3_autogen.h"
#include "libGL/entry_points_gl_4_4_autogen.h"
#include "libGL/entry_points_gl_4_5_autogen.h"
#include "libGL/entry_points_gl_4_6_autogen.h"
#include "common/event_tracer.h"
"""
LIBEGL_EXPORT_INCLUDES_AND_PREAMBLE = """
#include "anglebase/no_destructor.h"
#include "common/system_utils.h"
#include <memory>
#if defined(ANGLE_USE_EGL_LOADER)
# include "libEGL/egl_loader_autogen.h"
#else
# include "libGLESv2/entry_points_egl_autogen.h"
# include "libGLESv2/entry_points_egl_ext_autogen.h"
#endif // defined(ANGLE_USE_EGL_LOADER)
namespace
{
#if defined(ANGLE_USE_EGL_LOADER)
bool gLoaded = false;
std::unique_ptr<angle::Library> &EntryPointsLib()
{
static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib;
return *sEntryPointsLib;
}
angle::GenericProc KHRONOS_APIENTRY GlobalLoad(const char *symbol)
{
return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol));
}
void EnsureEGLLoaded()
{
if (gLoaded)
{
return;
}
EntryPointsLib().reset(
angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir));
angle::LoadEGL_EGL(GlobalLoad);
if (!EGL_GetPlatformDisplay)
{
fprintf(stderr, "Error loading EGL entry points.\\n");
}
else
{
gLoaded = true;
}
}
#else
void EnsureEGLLoaded() {}
#endif // defined(ANGLE_USE_EGL_LOADER)
} // anonymous namespace
"""
TEMPLATE_EVENT_COMMENT = """\
// Don't run the EVENT() macro on the EXT_debug_marker entry points.
// It can interfere with the debug events being set by the caller.
......@@ -1192,11 +1293,11 @@ def format_context_decl(api, cmd_name, proto, params, template, cmd_packed_gl_en
maybe_const=maybe_const)
def format_libgles_entry_point_def(cmd_name, proto, params, is_explicit_context):
def format_entry_point_export(cmd_name, proto, params, is_explicit_context, template):
internal_params = [just_the_name(param) for param in params]
return_type = proto[:-len(cmd_name)]
return LIBGLES_ENTRY_POINT_DEF.format(
return template.format(
name=strip_api_prefix(cmd_name),
return_type=return_type,
params=", ".join(params),
......@@ -1266,8 +1367,10 @@ def get_entry_points(api,
format_entry_point_def(api, command, cmd_name, proto_text, param_text,
is_explicit_context, cmd_packed_gl_enums, packed_param_types))
export_template = TEMPLATE_EGL_ENTRY_POINT_EXPORT if api == "EGL" else TEMPLATE_GL_ENTRY_POINT_EXPORT
export_defs.append(
format_libgles_entry_point_def(cmd_name, proto_text, param_text, is_explicit_context))
format_entry_point_export(cmd_name, proto_text, param_text, is_explicit_context,
export_template))
validation_protos.append(
format_validation_proto(api, cmd_name, param_text, cmd_packed_gl_enums,
......@@ -1904,6 +2007,7 @@ def main():
'../src/libANGLE/validationGL44_autogen.h',
'../src/libANGLE/validationGL45_autogen.h',
'../src/libANGLE/validationGL46_autogen.h',
'../src/libEGL/libEGL_autogen.cpp',
'../src/libGLESv2/entry_points_egl_autogen.h',
'../src/libGLESv2/entry_points_egl_ext_autogen.h',
'../src/libGLESv2/entry_points_gles_1_0_autogen.cpp',
......@@ -2258,6 +2362,7 @@ def main():
egl_validation_protos = []
egl_decls = []
egl_defs = []
libegl_ep_defs = []
for major_version, minor_version in [[1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5]]:
version = "%d_%d" % (major_version, minor_version)
......@@ -2275,7 +2380,7 @@ def main():
if not egl_version_commands:
continue
decls, defs, _, validation_protos, _, _, _ = get_entry_points(
decls, defs, export_defs, validation_protos, _, _, _ = get_entry_points(
EGL, eglxml.all_commands, egl_version_commands, False, egl_param_types,
cmd_packed_egl_enums, EGL_PACKED_TYPES)
......@@ -2284,6 +2389,7 @@ def main():
egl_validation_protos += [comment] + validation_protos
egl_decls += [comment] + decls
egl_defs += [comment] + defs
libegl_ep_defs += [comment] + export_defs
write_file("egl", "EGL", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(egl_decls), "h",
EGL_HEADER_INCLUDES, "libGLESv2", "egl.xml", "extern \"C\"")
......@@ -2299,7 +2405,7 @@ def main():
continue
# Detect and filter duplicate extensions.
decls, defs, _, validation_protos, _, _, _ = get_entry_points(
decls, defs, export_defs, validation_protos, _, _, _ = get_entry_points(
EGL, eglxml.all_commands, ext_cmd_names, False, egl_param_types, cmd_packed_egl_enums,
EGL_PACKED_TYPES)
......@@ -2313,6 +2419,7 @@ def main():
egl_validation_protos += [comment] + validation_protos
egl_ext_decls += [comment] + decls
egl_ext_defs += [comment] + defs
libegl_ep_defs += [comment] + export_defs
write_file("egl_ext", "EGL Extension", TEMPLATE_ENTRY_POINT_HEADER, "\n".join(egl_ext_decls),
"h", EGL_EXT_HEADER_INCLUDES, "libGLESv2", "egl.xml and egl_angle_ext.xml",
......@@ -2419,50 +2526,13 @@ def main():
out.write(entry_points_enum_source)
out.close()
source_includes = """
#include "angle_gl.h"
#include "libGLESv2/entry_points_gles_1_0_autogen.h"
#include "libGLESv2/entry_points_gles_2_0_autogen.h"
#include "libGLESv2/entry_points_gles_3_0_autogen.h"
#include "libGLESv2/entry_points_gles_3_1_autogen.h"
#include "libGLESv2/entry_points_gles_3_2_autogen.h"
#include "libGLESv2/entry_points_gles_ext_autogen.h"
#include "common/event_tracer.h"
"""
write_export_files("\n".join([item for item in libgles_ep_defs]), source_includes,
write_export_files("\n".join([item for item in libgles_ep_defs]), LIBGLESV2_EXPORT_INCLUDES,
"gl.xml and gl_angle_ext.xml", "libGLESv2", "OpenGL ES")
source_includes = """
#include "angle_gl.h"
#include "libGL/entry_points_gl_1_0_autogen.h"
#include "libGL/entry_points_gl_1_1_autogen.h"
#include "libGL/entry_points_gl_1_2_autogen.h"
#include "libGL/entry_points_gl_1_3_autogen.h"
#include "libGL/entry_points_gl_1_4_autogen.h"
#include "libGL/entry_points_gl_1_5_autogen.h"
#include "libGL/entry_points_gl_2_0_autogen.h"
#include "libGL/entry_points_gl_2_1_autogen.h"
#include "libGL/entry_points_gl_3_0_autogen.h"
#include "libGL/entry_points_gl_3_1_autogen.h"
#include "libGL/entry_points_gl_3_2_autogen.h"
#include "libGL/entry_points_gl_3_3_autogen.h"
#include "libGL/entry_points_gl_4_0_autogen.h"
#include "libGL/entry_points_gl_4_1_autogen.h"
#include "libGL/entry_points_gl_4_2_autogen.h"
#include "libGL/entry_points_gl_4_3_autogen.h"
#include "libGL/entry_points_gl_4_4_autogen.h"
#include "libGL/entry_points_gl_4_5_autogen.h"
#include "libGL/entry_points_gl_4_6_autogen.h"
#include "common/event_tracer.h"
"""
write_export_files("\n".join([item for item in libgl_ep_defs]), source_includes,
write_export_files("\n".join([item for item in libgl_ep_defs]), LIBGL_EXPORT_INCLUDES,
"gl.xml and wgl.xml", "libGL", "Windows GL")
write_export_files("\n".join([item for item in libegl_ep_defs]),
LIBEGL_EXPORT_INCLUDES_AND_PREAMBLE, "egl.xml and egl_angle_ext.xml",
"libEGL", "EGL")
libgles_ep_exports += get_egl_exports()
......
// GENERATED FILE - DO NOT EDIT.
// Generated by generate_entry_points.py using data from egl.xml and egl_angle_ext.xml.
//
// Copyright 2002 The ANGLE Project Authors. All rights reserved.
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// libEGL.cpp: Implements the exported EGL functions.
// libEGL_autogen.cpp: Implements the exported EGL functions.
#include "anglebase/no_destructor.h"
#include "common/system_utils.h"
......@@ -25,8 +26,8 @@ bool gLoaded = false;
std::unique_ptr<angle::Library> &EntryPointsLib()
{
static angle::base::NoDestructor<std::unique_ptr<angle::Library>> entryPointsLib;
return *entryPointsLib;
static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib;
return *sEntryPointsLib;
}
angle::GenericProc KHRONOS_APIENTRY GlobalLoad(const char *symbol)
......@@ -37,7 +38,9 @@ angle::GenericProc KHRONOS_APIENTRY GlobalLoad(const char *symbol)
void EnsureEGLLoaded()
{
if (gLoaded)
{
return;
}
EntryPointsLib().reset(
angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir));
......@@ -58,6 +61,7 @@ void EnsureEGLLoaded() {}
extern "C" {
// EGL 1.0
EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy,
const EGLint *attrib_list,
EGLConfig *configs,
......@@ -141,7 +145,7 @@ EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy,
return EGL_GetConfigs(dpy, configs, config_size, num_config);
}
EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void)
EGLDisplay EGLAPIENTRY eglGetCurrentDisplay()
{
EnsureEGLLoaded();
return EGL_GetCurrentDisplay();
......@@ -159,12 +163,18 @@ EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id)
return EGL_GetDisplay(display_id);
}
EGLint EGLAPIENTRY eglGetError(void)
EGLint EGLAPIENTRY eglGetError()
{
EnsureEGLLoaded();
return EGL_GetError();
}
__eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname)
{
EnsureEGLLoaded();
return EGL_GetProcAddress(procname);
}
EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
{
EnsureEGLLoaded();
......@@ -216,7 +226,7 @@ EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy)
return EGL_Terminate(dpy);
}
EGLBoolean EGLAPIENTRY eglWaitGL(void)
EGLBoolean EGLAPIENTRY eglWaitGL()
{
EnsureEGLLoaded();
return EGL_WaitGL();
......@@ -228,6 +238,7 @@ EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine)
return EGL_WaitNative(engine);
}
// EGL 1.1
EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
EnsureEGLLoaded();
......@@ -255,18 +266,13 @@ EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval)
return EGL_SwapInterval(dpy, interval);
}
// EGL 1.2
EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api)
{
EnsureEGLLoaded();
return EGL_BindAPI(api);
}
EGLenum EGLAPIENTRY eglQueryAPI(void)
{
EnsureEGLLoaded();
return EGL_QueryAPI();
}
EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy,
EGLenum buftype,
EGLClientBuffer buffer,
......@@ -277,59 +283,70 @@ EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy,
return EGL_CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
}
EGLBoolean EGLAPIENTRY eglReleaseThread(void)
EGLenum EGLAPIENTRY eglQueryAPI()
{
EnsureEGLLoaded();
return EGL_QueryAPI();
}
EGLBoolean EGLAPIENTRY eglReleaseThread()
{
EnsureEGLLoaded();
return EGL_ReleaseThread();
}
EGLBoolean EGLAPIENTRY eglWaitClient(void)
EGLBoolean EGLAPIENTRY eglWaitClient()
{
EnsureEGLLoaded();
return EGL_WaitClient();
}
EGLContext EGLAPIENTRY eglGetCurrentContext(void)
// EGL 1.4
EGLContext EGLAPIENTRY eglGetCurrentContext()
{
EnsureEGLLoaded();
return EGL_GetCurrentContext();
}
EGLSync EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
// EGL 1.5
EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
{
EnsureEGLLoaded();
return EGL_CreateSync(dpy, type, attrib_list);
return EGL_ClientWaitSync(dpy, sync, flags, timeout);
}
EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSync sync)
EGLImage EGLAPIENTRY eglCreateImage(EGLDisplay dpy,
EGLContext ctx,
EGLenum target,
EGLClientBuffer buffer,
const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_DestroySync(dpy, sync);
return EGL_CreateImage(dpy, ctx, target, buffer, attrib_list);
}
EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy,
EGLConfig config,
void *native_pixmap,
const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_ClientWaitSync(dpy, sync, flags, timeout);
return EGL_CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
}
EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy,
EGLSync sync,
EGLint attribute,
EGLAttrib *value)
EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy,
EGLConfig config,
void *native_window,
const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_GetSyncAttrib(dpy, sync, attribute, value);
return EGL_CreatePlatformWindowSurface(dpy, config, native_window, attrib_list);
}
EGLImage EGLAPIENTRY eglCreateImage(EGLDisplay dpy,
EGLContext ctx,
EGLenum target,
EGLClientBuffer buffer,
const EGLAttrib *attrib_list)
EGLSync EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_CreateImage(dpy, ctx, target, buffer, attrib_list);
return EGL_CreateSync(dpy, type, attrib_list);
}
EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImage image)
......@@ -338,30 +355,27 @@ EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImage image)
return EGL_DestroyImage(dpy, image);
}
EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform,
void *native_display,
const EGLAttrib *attrib_list)
EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSync sync)
{
EnsureEGLLoaded();
return EGL_GetPlatformDisplay(platform, native_display, attrib_list);
return EGL_DestroySync(dpy, sync);
}
EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy,
EGLConfig config,
void *native_window,
const EGLAttrib *attrib_list)
EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform,
void *native_display,
const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_CreatePlatformWindowSurface(dpy, config, native_window, attrib_list);
return EGL_GetPlatformDisplay(platform, native_display, attrib_list);
}
EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy,
EGLConfig config,
void *native_pixmap,
const EGLAttrib *attrib_list)
EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy,
EGLSync sync,
EGLint attribute,
EGLAttrib *value)
{
EnsureEGLLoaded();
return EGL_CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
return EGL_GetSyncAttrib(dpy, sync, attribute, value);
}
EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
......@@ -370,96 +384,92 @@ EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
return EGL_WaitSync(dpy, sync, flags);
}
EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint attribute,
void **value)
{
EnsureEGLLoaded();
return EGL_QuerySurfacePointerANGLE(dpy, surface, attribute, value);
}
EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy,
EGLSurface surface,
EGLint x,
EGLint y,
EGLint width,
EGLint height)
// EGL_ANDROID_blob_cache
void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
EGLSetBlobFuncANDROID set,
EGLGetBlobFuncANDROID get)
{
EnsureEGLLoaded();
return EGL_PostSubBufferNV(dpy, surface, x, y, width, height);
return EGL_SetBlobCacheFuncsANDROID(dpy, set, get);
}
EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform,
void *native_display,
const EGLint *attrib_list)
// EGL_ANDROID_create_native_client_buffer
EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID(const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_GetPlatformDisplayEXT(platform, native_display, attrib_list);
return EGL_CreateNativeClientBufferANDROID(attrib_list);
}
EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
EGLConfig config,
void *native_window,
const EGLint *attrib_list)
// EGL_ANDROID_get_frame_timestamps
EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint name)
{
EnsureEGLLoaded();
return EGL_CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
return EGL_GetCompositorTimingSupportedANDROID(dpy, surface, name);
}
EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,
EGLConfig config,
void *native_pixmap,
const EGLint *attrib_list)
EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
const EGLint *names,
EGLnsecsANDROID *values)
{
EnsureEGLLoaded();
return EGL_CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
return EGL_GetCompositorTimingANDROID(dpy, surface, numTimestamps, names, values);
}
EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribute, EGLAttrib *value)
EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR *frameId)
{
EnsureEGLLoaded();
return EGL_QueryDisplayAttribEXT(dpy, attribute, value);
return EGL_GetNextFrameIdANDROID(dpy, surface, frameId);
}
EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy,
EGLint attribute,
EGLAttrib *value)
EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp)
{
EnsureEGLLoaded();
return EGL_QueryDisplayAttribANGLE(dpy, attribute, value);
return EGL_GetFrameTimestampSupportedANDROID(dpy, surface, timestamp);
}
EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT(EGLDeviceEXT device,
EGLint attribute,
EGLAttrib *value)
EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
const EGLint *timestamps,
EGLnsecsANDROID *values)
{
EnsureEGLLoaded();
return EGL_QueryDeviceAttribEXT(device, attribute, value);
return EGL_GetFrameTimestampsANDROID(dpy, surface, frameId, numTimestamps, timestamps, values);
}
const char *EGLAPIENTRY eglQueryDeviceStringEXT(EGLDeviceEXT device, EGLint name)
// EGL_ANDROID_get_native_client_buffer
EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
{
EnsureEGLLoaded();
return EGL_QueryDeviceStringEXT(device, name);
return EGL_GetNativeClientBufferANDROID(buffer);
}
EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy,
EGLContext ctx,
EGLenum target,
EGLClientBuffer buffer,
const EGLint *attrib_list)
// EGL_ANDROID_native_fence_sync
EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync)
{
EnsureEGLLoaded();
return EGL_CreateImageKHR(dpy, ctx, target, buffer, attrib_list);
return EGL_DupNativeFenceFDANDROID(dpy, sync);
}
EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
// EGL_ANDROID_presentation_time
EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLnsecsANDROID time)
{
EnsureEGLLoaded();
return EGL_DestroyImageKHR(dpy, image);
return EGL_PresentationTimeANDROID(dpy, surface, time);
}
// EGL_ANGLE_device_creation
EGLDeviceEXT EGLAPIENTRY eglCreateDeviceANGLE(EGLint device_type,
void *native_device,
const EGLAttrib *attrib_list)
......@@ -474,77 +484,85 @@ EGLBoolean EGLAPIENTRY eglReleaseDeviceANGLE(EGLDeviceEXT device)
return EGL_ReleaseDeviceANGLE(device);
}
__eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname)
// EGL_ANGLE_feature_control
const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index)
{
EnsureEGLLoaded();
return EGL_GetProcAddress(procname);
return EGL_QueryStringiANGLE(dpy, name, index);
}
EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list)
EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy,
EGLint attribute,
EGLAttrib *value)
{
EnsureEGLLoaded();
return EGL_CreateStreamKHR(dpy, attrib_list);
return EGL_QueryDisplayAttribANGLE(dpy, attribute, value);
}
EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream)
// EGL_ANGLE_power_preference
void EGLAPIENTRY eglReleaseHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx)
{
EnsureEGLLoaded();
return EGL_DestroyStreamKHR(dpy, stream);
return EGL_ReleaseHighPowerGPUANGLE(dpy, ctx);
}
EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLint value)
void EGLAPIENTRY eglReacquireHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx)
{
EnsureEGLLoaded();
return EGL_StreamAttribKHR(dpy, stream, attribute, value);
return EGL_ReacquireHighPowerGPUANGLE(dpy, ctx);
}
EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLint *value)
void EGLAPIENTRY eglHandleGPUSwitchANGLE(EGLDisplay dpy)
{
EnsureEGLLoaded();
return EGL_QueryStreamKHR(dpy, stream, attribute, value);
return EGL_HandleGPUSwitchANGLE(dpy);
}
EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLuint64KHR *value)
// EGL_ANGLE_program_cache_control
EGLint EGLAPIENTRY eglProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib)
{
EnsureEGLLoaded();
return EGL_QueryStreamu64KHR(dpy, stream, attribute, value);
return EGL_ProgramCacheGetAttribANGLE(dpy, attrib);
}
EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream)
void EGLAPIENTRY eglProgramCacheQueryANGLE(EGLDisplay dpy,
EGLint index,
void *key,
EGLint *keysize,
void *binary,
EGLint *binarysize)
{
EnsureEGLLoaded();
return EGL_StreamConsumerGLTextureExternalKHR(dpy, stream);
return EGL_ProgramCacheQueryANGLE(dpy, index, key, keysize, binary, binarysize);
}
EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream)
void EGLAPIENTRY eglProgramCachePopulateANGLE(EGLDisplay dpy,
const void *key,
EGLint keysize,
const void *binary,
EGLint binarysize)
{
EnsureEGLLoaded();
return EGL_StreamConsumerAcquireKHR(dpy, stream);
return EGL_ProgramCachePopulateANGLE(dpy, key, keysize, binary, binarysize);
}
EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream)
EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLint mode)
{
EnsureEGLLoaded();
return EGL_StreamConsumerReleaseKHR(dpy, stream);
return EGL_ProgramCacheResizeANGLE(dpy, limit, mode);
}
EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
EGLStreamKHR stream,
const EGLAttrib *attrib_list)
// EGL_ANGLE_query_surface_pointer
EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint attribute,
void **value)
{
EnsureEGLLoaded();
return EGL_StreamConsumerGLTextureExternalAttribsNV(dpy, stream, attrib_list);
return EGL_QuerySurfacePointerANGLE(dpy, surface, attribute, value);
}
// EGL_ANGLE_stream_producer_d3d_texture
EGLBoolean EGLAPIENTRY eglCreateStreamProducerD3DTextureANGLE(EGLDisplay dpy,
EGLStreamKHR stream,
const EGLAttrib *attrib_list)
......@@ -562,16 +580,16 @@ EGLBoolean EGLAPIENTRY eglStreamPostD3DTextureANGLE(EGLDisplay dpy,
return EGL_StreamPostD3DTextureANGLE(dpy, stream, texture, attrib_list);
}
EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR *ust,
EGLuint64KHR *msc,
EGLuint64KHR *sbc)
// EGL_ANGLE_swap_with_frame_token
EGLBoolean EGLAPIENTRY eglSwapBuffersWithFrameTokenANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLFrameTokenANGLE frametoken)
{
EnsureEGLLoaded();
return EGL_GetSyncValuesCHROMIUM(dpy, surface, ust, msc, sbc);
return EGL_SwapBuffersWithFrameTokenANGLE(dpy, surface, frametoken);
}
// EGL_ANGLE_sync_control_rate
EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
......@@ -581,197 +599,237 @@ EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
return EGL_GetMscRateANGLE(dpy, surface, numerator, denominator);
}
EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR(EGLDisplay dpy,
EGLSurface surface,
EGLint *rects,
EGLint n_rects)
// EGL_CHROMIUM_sync_control
EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR *ust,
EGLuint64KHR *msc,
EGLuint64KHR *sbc)
{
EnsureEGLLoaded();
return EGL_SwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
return EGL_GetSyncValuesCHROMIUM(dpy, surface, ust, msc, sbc);
}
EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLnsecsANDROID time)
// EGL_EXT_device_query
EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT(EGLDeviceEXT device,
EGLint attribute,
EGLAttrib *value)
{
EnsureEGLLoaded();
return EGL_PresentationTimeANDROID(dpy, surface, time);
return EGL_QueryDeviceAttribEXT(device, attribute, value);
}
EGLint EGLAPIENTRY eglProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib)
const char *EGLAPIENTRY eglQueryDeviceStringEXT(EGLDeviceEXT device, EGLint name)
{
EnsureEGLLoaded();
return EGL_ProgramCacheGetAttribANGLE(dpy, attrib);
return EGL_QueryDeviceStringEXT(device, name);
}
void EGLAPIENTRY eglProgramCacheQueryANGLE(EGLDisplay dpy,
EGLint index,
void *key,
EGLint *keysize,
void *binary,
EGLint *binarysize)
EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribute, EGLAttrib *value)
{
EGL_ProgramCacheQueryANGLE(dpy, index, key, keysize, binary, binarysize);
EnsureEGLLoaded();
return EGL_QueryDisplayAttribEXT(dpy, attribute, value);
}
void EGLAPIENTRY eglProgramCachePopulateANGLE(EGLDisplay dpy,
const void *key,
EGLint keysize,
const void *binary,
EGLint binarysize)
// EGL_EXT_platform_base
EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,
EGLConfig config,
void *native_pixmap,
const EGLint *attrib_list)
{
EGL_ProgramCachePopulateANGLE(dpy, key, keysize, binary, binarysize);
EnsureEGLLoaded();
return EGL_CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
}
EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLenum mode)
EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
EGLConfig config,
void *native_window,
const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_ProgramCacheResizeANGLE(dpy, limit, mode);
return EGL_CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
}
EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform,
void *native_display,
const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_GetPlatformDisplayEXT(platform, native_display, attrib_list);
}
// EGL_KHR_debug
EGLint EGLAPIENTRY eglDebugMessageControlKHR(EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_DebugMessageControlKHR(callback, attrib_list);
}
EGLint EGLAPIENTRY eglLabelObjectKHR(EGLDisplay display,
EGLenum objectType,
EGLObjectKHR object,
EGLLabelKHR label)
{
EnsureEGLLoaded();
return EGL_LabelObjectKHR(display, objectType, object, label);
}
EGLBoolean EGLAPIENTRY eglQueryDebugKHR(EGLint attribute, EGLAttrib *value)
{
EnsureEGLLoaded();
return EGL_QueryDebugKHR(attribute, value);
}
EGLint EGLAPIENTRY eglLabelObjectKHR(EGLDisplay dpy,
EGLenum objectType,
EGLObjectKHR object,
EGLLabelKHR label)
// EGL_KHR_fence_sync
EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy,
EGLSyncKHR sync,
EGLint flags,
EGLTimeKHR timeout)
{
EnsureEGLLoaded();
return EGL_LabelObjectKHR(dpy, objectType, object, label);
return EGL_ClientWaitSyncKHR(dpy, sync, flags, timeout);
}
void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
EGLSetBlobFuncANDROID set,
EGLGetBlobFuncANDROID get)
EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_SetBlobCacheFuncsANDROID(dpy, set, get);
return EGL_CreateSyncKHR(dpy, type, attrib_list);
}
EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint name)
EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
{
EnsureEGLLoaded();
return EGL_GetCompositorTimingSupportedANDROID(dpy, surface, name);
return EGL_DestroySyncKHR(dpy, sync);
}
EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
const EGLint *names,
EGLnsecsANDROID *values)
EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy,
EGLSyncKHR sync,
EGLint attribute,
EGLint *value)
{
EnsureEGLLoaded();
return EGL_GetCompositorTimingANDROID(dpy, surface, numTimestamps, names, values);
return EGL_GetSyncAttribKHR(dpy, sync, attribute, value);
}
EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR *frameId)
// EGL_KHR_image
EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy,
EGLContext ctx,
EGLenum target,
EGLClientBuffer buffer,
const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_GetNextFrameIdANDROID(dpy, surface, frameId);
return EGL_CreateImageKHR(dpy, ctx, target, buffer, attrib_list);
}
EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp)
EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
{
EnsureEGLLoaded();
return EGL_GetFrameTimestampSupportedANDROID(dpy, surface, timestamp);
return EGL_DestroyImageKHR(dpy, image);
}
EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
const EGLint *timestamps,
EGLnsecsANDROID *values)
// EGL_KHR_reusable_sync
EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
{
EnsureEGLLoaded();
return EGL_GetFrameTimestampsANDROID(dpy, surface, frameId, numTimestamps, timestamps, values);
return EGL_SignalSyncKHR(dpy, sync, mode);
}
const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index)
// EGL_KHR_stream
EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list)
{
EnsureEGLLoaded();
return EGL_QueryStringiANGLE(dpy, name, index);
return EGL_CreateStreamKHR(dpy, attrib_list);
}
EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream)
{
EnsureEGLLoaded();
return EGL_GetNativeClientBufferANDROID(buffer);
return EGL_DestroyStreamKHR(dpy, stream);
}
EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID(const EGLint *attrib_list)
EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLint *value)
{
EnsureEGLLoaded();
return EGL_CreateNativeClientBufferANDROID(attrib_list);
return EGL_QueryStreamKHR(dpy, stream, attribute, value);
}
EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync)
EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLuint64KHR *value)
{
EnsureEGLLoaded();
return EGL_DupNativeFenceFDANDROID(dpy, sync);
return EGL_QueryStreamu64KHR(dpy, stream, attribute, value);
}
EGLBoolean EGLAPIENTRY eglSwapBuffersWithFrameTokenANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLFrameTokenANGLE frametoken)
EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy,
EGLStreamKHR stream,
EGLenum attribute,
EGLint value)
{
EnsureEGLLoaded();
return EGL_SwapBuffersWithFrameTokenANGLE(dpy, surface, frametoken);
return EGL_StreamAttribKHR(dpy, stream, attribute, value);
}
EGLSync EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
// EGL_KHR_stream_consumer_gltexture
EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream)
{
EnsureEGLLoaded();
return EGL_CreateSyncKHR(dpy, type, attrib_list);
return EGL_StreamConsumerAcquireKHR(dpy, stream);
}
EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSync sync)
EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream)
{
EnsureEGLLoaded();
return EGL_DestroySyncKHR(dpy, sync);
return EGL_StreamConsumerGLTextureExternalKHR(dpy, stream);
}
EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream)
{
EnsureEGLLoaded();
return EGL_ClientWaitSyncKHR(dpy, sync, flags, timeout);
return EGL_StreamConsumerReleaseKHR(dpy, stream);
}
EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy,
EGLSync sync,
EGLint attribute,
EGLint *value)
// EGL_KHR_swap_buffers_with_damage
EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR(EGLDisplay dpy,
EGLSurface surface,
EGLint *rects,
EGLint n_rects)
{
EnsureEGLLoaded();
return EGL_GetSyncAttribKHR(dpy, sync, attribute, value);
return EGL_SwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
}
EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags)
// EGL_KHR_wait_sync
EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
{
EnsureEGLLoaded();
return EGL_WaitSyncKHR(dpy, sync, flags);
}
EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSync sync, EGLenum mode)
// EGL_NV_post_sub_buffer
EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy,
EGLSurface surface,
EGLint x,
EGLint y,
EGLint width,
EGLint height)
{
EnsureEGLLoaded();
return EGL_SignalSyncKHR(dpy, sync, mode);
return EGL_PostSubBufferNV(dpy, surface, x, y, width, height);
}
// EGL_NV_stream_consumer_gltexture_yuv
EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
EGLStreamKHR stream,
const EGLAttrib *attrib_list)
{
EnsureEGLLoaded();
return EGL_StreamConsumerGLTextureExternalAttribsNV(dpy, stream, attrib_list);
}
} // extern "C"
......@@ -604,7 +604,7 @@ if (is_win) {
libegl_sources = [
"src/libEGL/egl_loader_autogen.h",
"src/libEGL/libEGL.cpp",
"src/libEGL/libEGL_autogen.cpp",
"src/libEGL/resource.h",
"src/libGLESv2/entry_points_egl_autogen.h",
"src/libGLESv2/entry_points_egl_ext_autogen.h",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment