Commit a79c2440 by Tim Van Patten Committed by Commit Bot

Make libEGL function pointers hidden in symbol table

The libEGL_angle.so and libGLESv2_angle.so libraries are typically loaded into the same process each time, so we need to make sure there aren't any duplicated symbols which could violate ODR and lead to crashes or undefined behavior. In this case, the libEGL_angle.so function pointer names were colliding with libGLESv2_angle.so function names, causing crashes at runtime. The fix here is to mark the libEGL_angle.so function pointer symbols 'hidden', so they don't appear in the symbol table for other executables/libraries to see and can't be overridden by other symbols. Bug: angleproject:3751 Test: Embed ANGLE within dEQP.apk and verify no crashes Change-Id: Ibb78369374a4a68b3489a7dd7775c52e29fa37e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1724909 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent cbabea73
...@@ -29,4 +29,12 @@ ...@@ -29,4 +29,12 @@
# endif # endif
#endif // !defined(ANGLE_EXPORT) #endif // !defined(ANGLE_EXPORT)
#if !defined(ANGLE_NO_EXPORT)
# if defined(__GNUC__)
# define ANGLE_NO_EXPORT __attribute__((visibility("hidden")))
# else
# define ANGLE_NO_EXPORT
# endif
#endif // !defined(ANGLE_NO_EXPORT)
#endif // LIBGLESV2_EXPORT_H_ #endif // LIBGLESV2_EXPORT_H_
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"scripts/egl_angle_ext.xml": "scripts/egl_angle_ext.xml":
"fc2e249239fb1365f6d145cdf1a3cfcf", "fc2e249239fb1365f6d145cdf1a3cfcf",
"scripts/generate_loader.py": "scripts/generate_loader.py":
"5a7cd014230fe04664d9613e65399d42", "48c60c668bec42a80378179aae2acc61",
"scripts/registry_xml.py": "scripts/registry_xml.py":
"97cca309a0561f3bf54e0e2c1cf0708b", "97cca309a0561f3bf54e0e2c1cf0708b",
"scripts/wgl.xml": "scripts/wgl.xml":
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
"src/libEGL/egl_loader_autogen.cpp": "src/libEGL/egl_loader_autogen.cpp":
"01d20878ff5644bb9ee9e22ec95c3587", "01d20878ff5644bb9ee9e22ec95c3587",
"src/libEGL/egl_loader_autogen.h": "src/libEGL/egl_loader_autogen.h":
"fcaa495dbf4ad4841c60f669f5fabfb8", "a9d4b21e3a74565a6710c76c4f3bcbdc",
"util/egl_loader_autogen.cpp": "util/egl_loader_autogen.cpp":
"b9a444da4142a12a9fe6b7a9d33a4ea8", "b9a444da4142a12a9fe6b7a9d33a4ea8",
"util/egl_loader_autogen.h": "util/egl_loader_autogen.h":
......
...@@ -97,7 +97,8 @@ def gen_libegl_loader(): ...@@ -97,7 +97,8 @@ def gen_libegl_loader():
all_cmds = xml.all_cmd_names.get_all_commands() all_cmds = xml.all_cmd_names.get_all_commands()
path = os.path.join("..", "src", "libEGL") path = os.path.join("..", "src", "libEGL")
write_header(data_source_name, all_cmds, "egl", libegl_preamble, path, "LIBEGL", "", "EGL_") write_header(data_source_name, all_cmds, "egl", libegl_preamble, path, "LIBEGL", "", "EGL_",
"ANGLE_NO_EXPORT ")
write_source(data_source_name, all_cmds, "egl", path, "", "EGL_") write_source(data_source_name, all_cmds, "egl", path, "", "EGL_")
...@@ -223,6 +224,7 @@ def main(): ...@@ -223,6 +224,7 @@ def main():
libegl_preamble = """#include <EGL/egl.h> libegl_preamble = """#include <EGL/egl.h>
#include <EGL/eglext.h> #include <EGL/eglext.h>
#include <export.h>
""" """
util_gles_preamble = """#if defined(GL_GLES_PROTOTYPES) && GL_GLES_PROTOTYPES util_gles_preamble = """#if defined(GL_GLES_PROTOTYPES) && GL_GLES_PROTOTYPES
......
...@@ -13,106 +13,111 @@ ...@@ -13,106 +13,111 @@
#include <EGL/egl.h> #include <EGL/egl.h>
#include <EGL/eglext.h> #include <EGL/eglext.h>
#include <export.h>
extern PFNEGLCHOOSECONFIGPROC EGL_ChooseConfig; ANGLE_NO_EXPORT extern PFNEGLCHOOSECONFIGPROC EGL_ChooseConfig;
extern PFNEGLCOPYBUFFERSPROC EGL_CopyBuffers; ANGLE_NO_EXPORT extern PFNEGLCOPYBUFFERSPROC EGL_CopyBuffers;
extern PFNEGLCREATECONTEXTPROC EGL_CreateContext; ANGLE_NO_EXPORT extern PFNEGLCREATECONTEXTPROC EGL_CreateContext;
extern PFNEGLCREATEPBUFFERSURFACEPROC EGL_CreatePbufferSurface; ANGLE_NO_EXPORT extern PFNEGLCREATEPBUFFERSURFACEPROC EGL_CreatePbufferSurface;
extern PFNEGLCREATEPIXMAPSURFACEPROC EGL_CreatePixmapSurface; ANGLE_NO_EXPORT extern PFNEGLCREATEPIXMAPSURFACEPROC EGL_CreatePixmapSurface;
extern PFNEGLCREATEWINDOWSURFACEPROC EGL_CreateWindowSurface; ANGLE_NO_EXPORT extern PFNEGLCREATEWINDOWSURFACEPROC EGL_CreateWindowSurface;
extern PFNEGLDESTROYCONTEXTPROC EGL_DestroyContext; ANGLE_NO_EXPORT extern PFNEGLDESTROYCONTEXTPROC EGL_DestroyContext;
extern PFNEGLDESTROYSURFACEPROC EGL_DestroySurface; ANGLE_NO_EXPORT extern PFNEGLDESTROYSURFACEPROC EGL_DestroySurface;
extern PFNEGLGETCONFIGATTRIBPROC EGL_GetConfigAttrib; ANGLE_NO_EXPORT extern PFNEGLGETCONFIGATTRIBPROC EGL_GetConfigAttrib;
extern PFNEGLGETCONFIGSPROC EGL_GetConfigs; ANGLE_NO_EXPORT extern PFNEGLGETCONFIGSPROC EGL_GetConfigs;
extern PFNEGLGETCURRENTDISPLAYPROC EGL_GetCurrentDisplay; ANGLE_NO_EXPORT extern PFNEGLGETCURRENTDISPLAYPROC EGL_GetCurrentDisplay;
extern PFNEGLGETCURRENTSURFACEPROC EGL_GetCurrentSurface; ANGLE_NO_EXPORT extern PFNEGLGETCURRENTSURFACEPROC EGL_GetCurrentSurface;
extern PFNEGLGETDISPLAYPROC EGL_GetDisplay; ANGLE_NO_EXPORT extern PFNEGLGETDISPLAYPROC EGL_GetDisplay;
extern PFNEGLGETERRORPROC EGL_GetError; ANGLE_NO_EXPORT extern PFNEGLGETERRORPROC EGL_GetError;
extern PFNEGLGETPROCADDRESSPROC EGL_GetProcAddress; ANGLE_NO_EXPORT extern PFNEGLGETPROCADDRESSPROC EGL_GetProcAddress;
extern PFNEGLINITIALIZEPROC EGL_Initialize; ANGLE_NO_EXPORT extern PFNEGLINITIALIZEPROC EGL_Initialize;
extern PFNEGLMAKECURRENTPROC EGL_MakeCurrent; ANGLE_NO_EXPORT extern PFNEGLMAKECURRENTPROC EGL_MakeCurrent;
extern PFNEGLQUERYCONTEXTPROC EGL_QueryContext; ANGLE_NO_EXPORT extern PFNEGLQUERYCONTEXTPROC EGL_QueryContext;
extern PFNEGLQUERYSTRINGPROC EGL_QueryString; ANGLE_NO_EXPORT extern PFNEGLQUERYSTRINGPROC EGL_QueryString;
extern PFNEGLQUERYSURFACEPROC EGL_QuerySurface; ANGLE_NO_EXPORT extern PFNEGLQUERYSURFACEPROC EGL_QuerySurface;
extern PFNEGLSWAPBUFFERSPROC EGL_SwapBuffers; ANGLE_NO_EXPORT extern PFNEGLSWAPBUFFERSPROC EGL_SwapBuffers;
extern PFNEGLTERMINATEPROC EGL_Terminate; ANGLE_NO_EXPORT extern PFNEGLTERMINATEPROC EGL_Terminate;
extern PFNEGLWAITGLPROC EGL_WaitGL; ANGLE_NO_EXPORT extern PFNEGLWAITGLPROC EGL_WaitGL;
extern PFNEGLWAITNATIVEPROC EGL_WaitNative; ANGLE_NO_EXPORT extern PFNEGLWAITNATIVEPROC EGL_WaitNative;
extern PFNEGLBINDTEXIMAGEPROC EGL_BindTexImage; ANGLE_NO_EXPORT extern PFNEGLBINDTEXIMAGEPROC EGL_BindTexImage;
extern PFNEGLRELEASETEXIMAGEPROC EGL_ReleaseTexImage; ANGLE_NO_EXPORT extern PFNEGLRELEASETEXIMAGEPROC EGL_ReleaseTexImage;
extern PFNEGLSURFACEATTRIBPROC EGL_SurfaceAttrib; ANGLE_NO_EXPORT extern PFNEGLSURFACEATTRIBPROC EGL_SurfaceAttrib;
extern PFNEGLSWAPINTERVALPROC EGL_SwapInterval; ANGLE_NO_EXPORT extern PFNEGLSWAPINTERVALPROC EGL_SwapInterval;
extern PFNEGLBINDAPIPROC EGL_BindAPI; ANGLE_NO_EXPORT extern PFNEGLBINDAPIPROC EGL_BindAPI;
extern PFNEGLQUERYAPIPROC EGL_QueryAPI; ANGLE_NO_EXPORT extern PFNEGLQUERYAPIPROC EGL_QueryAPI;
extern PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC EGL_CreatePbufferFromClientBuffer; ANGLE_NO_EXPORT extern PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC EGL_CreatePbufferFromClientBuffer;
extern PFNEGLRELEASETHREADPROC EGL_ReleaseThread; ANGLE_NO_EXPORT extern PFNEGLRELEASETHREADPROC EGL_ReleaseThread;
extern PFNEGLWAITCLIENTPROC EGL_WaitClient; ANGLE_NO_EXPORT extern PFNEGLWAITCLIENTPROC EGL_WaitClient;
extern PFNEGLGETCURRENTCONTEXTPROC EGL_GetCurrentContext; ANGLE_NO_EXPORT extern PFNEGLGETCURRENTCONTEXTPROC EGL_GetCurrentContext;
extern PFNEGLCREATESYNCPROC EGL_CreateSync; ANGLE_NO_EXPORT extern PFNEGLCREATESYNCPROC EGL_CreateSync;
extern PFNEGLDESTROYSYNCPROC EGL_DestroySync; ANGLE_NO_EXPORT extern PFNEGLDESTROYSYNCPROC EGL_DestroySync;
extern PFNEGLCLIENTWAITSYNCPROC EGL_ClientWaitSync; ANGLE_NO_EXPORT extern PFNEGLCLIENTWAITSYNCPROC EGL_ClientWaitSync;
extern PFNEGLGETSYNCATTRIBPROC EGL_GetSyncAttrib; ANGLE_NO_EXPORT extern PFNEGLGETSYNCATTRIBPROC EGL_GetSyncAttrib;
extern PFNEGLCREATEIMAGEPROC EGL_CreateImage; ANGLE_NO_EXPORT extern PFNEGLCREATEIMAGEPROC EGL_CreateImage;
extern PFNEGLDESTROYIMAGEPROC EGL_DestroyImage; ANGLE_NO_EXPORT extern PFNEGLDESTROYIMAGEPROC EGL_DestroyImage;
extern PFNEGLGETPLATFORMDISPLAYPROC EGL_GetPlatformDisplay; ANGLE_NO_EXPORT extern PFNEGLGETPLATFORMDISPLAYPROC EGL_GetPlatformDisplay;
extern PFNEGLCREATEPLATFORMWINDOWSURFACEPROC EGL_CreatePlatformWindowSurface; ANGLE_NO_EXPORT extern PFNEGLCREATEPLATFORMWINDOWSURFACEPROC EGL_CreatePlatformWindowSurface;
extern PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC EGL_CreatePlatformPixmapSurface; ANGLE_NO_EXPORT extern PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC EGL_CreatePlatformPixmapSurface;
extern PFNEGLWAITSYNCPROC EGL_WaitSync; ANGLE_NO_EXPORT extern PFNEGLWAITSYNCPROC EGL_WaitSync;
extern PFNEGLSETBLOBCACHEFUNCSANDROIDPROC EGL_SetBlobCacheFuncsANDROID; ANGLE_NO_EXPORT extern PFNEGLSETBLOBCACHEFUNCSANDROIDPROC EGL_SetBlobCacheFuncsANDROID;
extern PFNEGLGETCOMPOSITORTIMINGANDROIDPROC EGL_GetCompositorTimingANDROID; ANGLE_NO_EXPORT extern PFNEGLGETCOMPOSITORTIMINGANDROIDPROC EGL_GetCompositorTimingANDROID;
extern PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC EGL_GetCompositorTimingSupportedANDROID; ANGLE_NO_EXPORT extern PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC
extern PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC EGL_GetFrameTimestampSupportedANDROID; EGL_GetCompositorTimingSupportedANDROID;
extern PFNEGLGETFRAMETIMESTAMPSANDROIDPROC EGL_GetFrameTimestampsANDROID; ANGLE_NO_EXPORT extern PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC
extern PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID; EGL_GetFrameTimestampSupportedANDROID;
extern PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC EGL_GetNativeClientBufferANDROID; ANGLE_NO_EXPORT extern PFNEGLGETFRAMETIMESTAMPSANDROIDPROC EGL_GetFrameTimestampsANDROID;
extern PFNEGLDUPNATIVEFENCEFDANDROIDPROC EGL_DupNativeFenceFDANDROID; ANGLE_NO_EXPORT extern PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID;
extern PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID; ANGLE_NO_EXPORT extern PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC EGL_GetNativeClientBufferANDROID;
extern PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE; ANGLE_NO_EXPORT extern PFNEGLDUPNATIVEFENCEFDANDROIDPROC EGL_DupNativeFenceFDANDROID;
extern PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE; ANGLE_NO_EXPORT extern PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID;
extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE; ANGLE_NO_EXPORT extern PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE;
extern PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE; ANGLE_NO_EXPORT extern PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE;
extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE; ANGLE_NO_EXPORT extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE;
extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE; ANGLE_NO_EXPORT extern PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE;
extern PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE; ANGLE_NO_EXPORT extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE;
extern PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE; ANGLE_NO_EXPORT extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE;
extern PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE; ANGLE_NO_EXPORT extern PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE;
extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE; ANGLE_NO_EXPORT extern PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE;
extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE; ANGLE_NO_EXPORT extern PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE;
extern PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM; ANGLE_NO_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
extern PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT; EGL_CreateStreamProducerD3DTextureANGLE;
extern PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT; ANGLE_NO_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE;
extern PFNEGLQUERYDISPLAYATTRIBEXTPROC EGL_QueryDisplayAttribEXT; ANGLE_NO_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM;
extern PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC EGL_CreatePlatformPixmapSurfaceEXT; ANGLE_NO_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT;
extern PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC EGL_CreatePlatformWindowSurfaceEXT; ANGLE_NO_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT;
extern PFNEGLGETPLATFORMDISPLAYEXTPROC EGL_GetPlatformDisplayEXT; ANGLE_NO_EXPORT extern PFNEGLQUERYDISPLAYATTRIBEXTPROC EGL_QueryDisplayAttribEXT;
extern PFNEGLDEBUGMESSAGECONTROLKHRPROC EGL_DebugMessageControlKHR; ANGLE_NO_EXPORT extern PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC EGL_CreatePlatformPixmapSurfaceEXT;
extern PFNEGLLABELOBJECTKHRPROC EGL_LabelObjectKHR; ANGLE_NO_EXPORT extern PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC EGL_CreatePlatformWindowSurfaceEXT;
extern PFNEGLQUERYDEBUGKHRPROC EGL_QueryDebugKHR; ANGLE_NO_EXPORT extern PFNEGLGETPLATFORMDISPLAYEXTPROC EGL_GetPlatformDisplayEXT;
extern PFNEGLCLIENTWAITSYNCKHRPROC EGL_ClientWaitSyncKHR; ANGLE_NO_EXPORT extern PFNEGLDEBUGMESSAGECONTROLKHRPROC EGL_DebugMessageControlKHR;
extern PFNEGLCREATESYNCKHRPROC EGL_CreateSyncKHR; ANGLE_NO_EXPORT extern PFNEGLLABELOBJECTKHRPROC EGL_LabelObjectKHR;
extern PFNEGLDESTROYSYNCKHRPROC EGL_DestroySyncKHR; ANGLE_NO_EXPORT extern PFNEGLQUERYDEBUGKHRPROC EGL_QueryDebugKHR;
extern PFNEGLGETSYNCATTRIBKHRPROC EGL_GetSyncAttribKHR; ANGLE_NO_EXPORT extern PFNEGLCLIENTWAITSYNCKHRPROC EGL_ClientWaitSyncKHR;
extern PFNEGLCREATEIMAGEKHRPROC EGL_CreateImageKHR; ANGLE_NO_EXPORT extern PFNEGLCREATESYNCKHRPROC EGL_CreateSyncKHR;
extern PFNEGLDESTROYIMAGEKHRPROC EGL_DestroyImageKHR; ANGLE_NO_EXPORT extern PFNEGLDESTROYSYNCKHRPROC EGL_DestroySyncKHR;
extern PFNEGLCREATESTREAMKHRPROC EGL_CreateStreamKHR; ANGLE_NO_EXPORT extern PFNEGLGETSYNCATTRIBKHRPROC EGL_GetSyncAttribKHR;
extern PFNEGLDESTROYSTREAMKHRPROC EGL_DestroyStreamKHR; ANGLE_NO_EXPORT extern PFNEGLCREATEIMAGEKHRPROC EGL_CreateImageKHR;
extern PFNEGLQUERYSTREAMKHRPROC EGL_QueryStreamKHR; ANGLE_NO_EXPORT extern PFNEGLDESTROYIMAGEKHRPROC EGL_DestroyImageKHR;
extern PFNEGLQUERYSTREAMU64KHRPROC EGL_QueryStreamu64KHR; ANGLE_NO_EXPORT extern PFNEGLCREATESTREAMKHRPROC EGL_CreateStreamKHR;
extern PFNEGLSTREAMATTRIBKHRPROC EGL_StreamAttribKHR; ANGLE_NO_EXPORT extern PFNEGLDESTROYSTREAMKHRPROC EGL_DestroyStreamKHR;
extern PFNEGLSTREAMCONSUMERACQUIREKHRPROC EGL_StreamConsumerAcquireKHR; ANGLE_NO_EXPORT extern PFNEGLQUERYSTREAMKHRPROC EGL_QueryStreamKHR;
extern PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC EGL_StreamConsumerGLTextureExternalKHR; ANGLE_NO_EXPORT extern PFNEGLQUERYSTREAMU64KHRPROC EGL_QueryStreamu64KHR;
extern PFNEGLSTREAMCONSUMERRELEASEKHRPROC EGL_StreamConsumerReleaseKHR; ANGLE_NO_EXPORT extern PFNEGLSTREAMATTRIBKHRPROC EGL_StreamAttribKHR;
extern PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC EGL_SwapBuffersWithDamageKHR; ANGLE_NO_EXPORT extern PFNEGLSTREAMCONSUMERACQUIREKHRPROC EGL_StreamConsumerAcquireKHR;
extern PFNEGLWAITSYNCKHRPROC EGL_WaitSyncKHR; ANGLE_NO_EXPORT extern PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC
extern PFNEGLPOSTSUBBUFFERNVPROC EGL_PostSubBufferNV; EGL_StreamConsumerGLTextureExternalKHR;
extern PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC ANGLE_NO_EXPORT extern PFNEGLSTREAMCONSUMERRELEASEKHRPROC EGL_StreamConsumerReleaseKHR;
ANGLE_NO_EXPORT extern PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC EGL_SwapBuffersWithDamageKHR;
ANGLE_NO_EXPORT extern PFNEGLWAITSYNCKHRPROC EGL_WaitSyncKHR;
ANGLE_NO_EXPORT extern PFNEGLPOSTSUBBUFFERNVPROC EGL_PostSubBufferNV;
ANGLE_NO_EXPORT extern PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC
EGL_StreamConsumerGLTextureExternalAttribsNV; EGL_StreamConsumerGLTextureExternalAttribsNV;
namespace angle namespace angle
{ {
using GenericProc = void (*)(); using GenericProc = void (*)();
using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *); using LoadProc = GenericProc(KHRONOS_APIENTRY *)(const char *);
void LoadEGL_EGL(LoadProc loadProc); ANGLE_NO_EXPORT void LoadEGL_EGL(LoadProc loadProc);
} // namespace angle } // namespace angle
#endif // LIBEGL_EGL_LOADER_AUTOGEN_H_ #endif // LIBEGL_EGL_LOADER_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