Fix OpenGL/EGL entry function calling convention
Function pointers returned through eglGetProcAddress should have a
GL_APIENTRY calling convention to avoid mismatches with their
declarations.
Bug: b/140700303
Change-Id: I706ca788e54a897a66cfdf5ba959ec6e3dc718ee
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36228
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index 70df27f..7dd5783 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -125,7 +125,7 @@
};
}
-EGLint GetError(void)
+EGLint EGLAPIENTRY GetError(void)
{
TRACE("()");
@@ -139,7 +139,7 @@
return error;
}
-EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+EGLDisplay EGLAPIENTRY GetDisplay(EGLNativeDisplayType display_id)
{
TRACE("(EGLNativeDisplayType display_id = %p)", display_id);
@@ -160,7 +160,7 @@
return success(PRIMARY_DISPLAY); // We only support the default display
}
-EGLBoolean Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
+EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
{
TRACE("(EGLDisplay dpy = %p, EGLint *major = %p, EGLint *minor = %p)",
dpy, major, minor);
@@ -183,7 +183,7 @@
return success(EGL_TRUE);
}
-EGLBoolean Terminate(EGLDisplay dpy)
+EGLBoolean EGLAPIENTRY Terminate(EGLDisplay dpy)
{
TRACE("(EGLDisplay dpy = %p)", dpy);
@@ -199,7 +199,7 @@
return success(EGL_TRUE);
}
-const char *QueryString(EGLDisplay dpy, EGLint name)
+const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EGLint name)
{
TRACE("(EGLDisplay dpy = %p, EGLint name = %d)", dpy, name);
@@ -249,7 +249,7 @@
return error(EGL_BAD_PARAMETER, (const char*)nullptr);
}
-EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+EGLBoolean EGLAPIENTRY GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig *configs = %p, "
"EGLint config_size = %d, EGLint *num_config = %p)",
@@ -277,7 +277,7 @@
return success(EGL_TRUE);
}
-EGLBoolean ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+EGLBoolean EGLAPIENTRY ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{
TRACE("(EGLDisplay dpy = %p, const EGLint *attrib_list = %p, "
"EGLConfig *configs = %p, EGLint config_size = %d, EGLint *num_config = %p)",
@@ -310,7 +310,7 @@
return success(EGL_TRUE);
}
-EGLBoolean GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLint attribute = %d, EGLint *value = %p)",
dpy, config, attribute, value);
@@ -330,7 +330,7 @@
return success(EGL_TRUE);
}
-EGLSurface CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_window = %p, "
"const EGLint *attrib_list = %p)", dpy, config, native_window, attrib_list);
@@ -350,7 +350,7 @@
return display->createWindowSurface((EGLNativeWindowType)native_window, config, attrib_list);
}
-EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_window = %p, "
"const EGLint *attrib_list = %p)", dpy, config, native_window, attrib_list);
@@ -359,7 +359,7 @@
return CreatePlatformWindowSurface(dpy, config, native_window, &attribs);
}
-EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativeWindowType window = %p, "
"const EGLint *attrib_list = %p)", dpy, config, window, attrib_list);
@@ -368,7 +368,7 @@
return CreatePlatformWindowSurface(dpy, config, (void*)window, &attribs);
}
-EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, const EGLint *attrib_list = %p)",
dpy, config, attrib_list);
@@ -383,7 +383,7 @@
return display->createPBufferSurface(config, attrib_list);
}
-EGLSurface CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_pixmap = %p, "
"const EGLint *attrib_list = %p)", dpy, config, native_pixmap, attrib_list);
@@ -400,7 +400,7 @@
return success(EGL_NO_SURFACE);
}
-EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_pixmap = %p, "
"const EGLint *attrib_list = %p)", dpy, config, native_pixmap, attrib_list);
@@ -409,7 +409,7 @@
return CreatePlatformPixmapSurface(dpy, config, native_pixmap, &attribs);
}
-EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativePixmapType pixmap = %p, "
"const EGLint *attrib_list = %p)", dpy, config, pixmap, attrib_list);
@@ -418,7 +418,7 @@
return CreatePlatformPixmapSurface(dpy, config, (void*)pixmap, &attribs);
}
-EGLBoolean DestroySurface(EGLDisplay dpy, EGLSurface surface)
+EGLBoolean EGLAPIENTRY DestroySurface(EGLDisplay dpy, EGLSurface surface)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface);
@@ -440,7 +440,7 @@
return success(EGL_TRUE);
}
-EGLBoolean QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint *value = %p)",
dpy, surface, attribute, value);
@@ -530,7 +530,7 @@
return success(EGL_TRUE);
}
-EGLBoolean BindAPI(EGLenum api)
+EGLBoolean EGLAPIENTRY BindAPI(EGLenum api)
{
TRACE("(EGLenum api = 0x%X)", api);
@@ -550,7 +550,7 @@
return success(EGL_TRUE);
}
-EGLenum QueryAPI(void)
+EGLenum EGLAPIENTRY QueryAPI(void)
{
TRACE("()");
@@ -559,7 +559,7 @@
return success(API);
}
-EGLBoolean WaitClient(void)
+EGLBoolean EGLAPIENTRY WaitClient(void)
{
TRACE("()");
@@ -574,7 +574,7 @@
return success(EGL_TRUE);
}
-EGLBoolean ReleaseThread(void)
+EGLBoolean EGLAPIENTRY ReleaseThread(void)
{
TRACE("()");
@@ -583,7 +583,7 @@
return EGL_TRUE; // success() is not called here because it would re-allocate thread-local storage.
}
-EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLenum buftype = 0x%X, EGLClientBuffer buffer = %p, "
"EGLConfig config = %p, const EGLint *attrib_list = %p)",
@@ -610,7 +610,7 @@
};
}
-EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
+EGLBoolean EGLAPIENTRY SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint value = %d)",
dpy, surface, attribute, value);
@@ -667,7 +667,7 @@
return success(EGL_TRUE);
}
-EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+EGLBoolean EGLAPIENTRY BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer);
@@ -709,7 +709,7 @@
return success(EGL_TRUE);
}
-EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+EGLBoolean EGLAPIENTRY ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer);
@@ -746,7 +746,7 @@
return success(EGL_TRUE);
}
-EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval)
+EGLBoolean EGLAPIENTRY SwapInterval(EGLDisplay dpy, EGLint interval)
{
TRACE("(EGLDisplay dpy = %p, EGLint interval = %d)", dpy, interval);
@@ -770,7 +770,7 @@
return success(EGL_TRUE);
}
-EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
+EGLContext EGLAPIENTRY CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLContext share_context = %p, "
"const EGLint *attrib_list = %p)", dpy, config, share_context, attrib_list);
@@ -876,7 +876,7 @@
return display->createContext(config, shareContext, majorVersion);
}
-EGLBoolean DestroyContext(EGLDisplay dpy, EGLContext ctx)
+EGLBoolean EGLAPIENTRY DestroyContext(EGLDisplay dpy, EGLContext ctx)
{
TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p)", dpy, ctx);
@@ -898,7 +898,7 @@
return success(EGL_TRUE);
}
-EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
+EGLBoolean EGLAPIENTRY MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface draw = %p, EGLSurface read = %p, EGLContext ctx = %p)",
dpy, draw, read, ctx);
@@ -954,7 +954,7 @@
return success(EGL_TRUE);
}
-EGLContext GetCurrentContext(void)
+EGLContext EGLAPIENTRY GetCurrentContext(void)
{
TRACE("()");
@@ -963,7 +963,7 @@
return success(context);
}
-EGLSurface GetCurrentSurface(EGLint readdraw)
+EGLSurface EGLAPIENTRY GetCurrentSurface(EGLint readdraw)
{
TRACE("(EGLint readdraw = %d)", readdraw);
@@ -983,7 +983,7 @@
}
}
-EGLDisplay GetCurrentDisplay(void)
+EGLDisplay EGLAPIENTRY GetCurrentDisplay(void)
{
TRACE("()");
@@ -1004,7 +1004,7 @@
return success(display->getEGLDisplay());
}
-EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
{
TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLint attribute = %d, EGLint *value = %p)",
dpy, ctx, attribute, value);
@@ -1038,7 +1038,7 @@
return success(EGL_TRUE);
}
-EGLBoolean WaitGL(void)
+EGLBoolean EGLAPIENTRY WaitGL(void)
{
TRACE("()");
@@ -1053,7 +1053,7 @@
return success(EGL_TRUE);
}
-EGLBoolean WaitNative(EGLint engine)
+EGLBoolean EGLAPIENTRY WaitNative(EGLint engine)
{
TRACE("(EGLint engine = %d)", engine);
@@ -1084,7 +1084,7 @@
return success(EGL_TRUE);
}
-EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface surface)
+EGLBoolean EGLAPIENTRY SwapBuffers(EGLDisplay dpy, EGLSurface surface)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface);
@@ -1106,7 +1106,7 @@
return success(EGL_TRUE);
}
-EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
+EGLBoolean EGLAPIENTRY CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
{
TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLNativePixmapType target = %p)", dpy, surface, target);
@@ -1123,7 +1123,7 @@
return success(EGL_FALSE);
}
-EGLImage CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
+EGLImage EGLAPIENTRY CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLenum target = 0x%X, buffer = %p, const EGLAttrib *attrib_list = %p)", dpy, ctx, target, buffer, attrib_list);
@@ -1212,7 +1212,7 @@
return success(eglImage);
}
-EGLImageKHR CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
+EGLImageKHR EGLAPIENTRY CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLenum target = 0x%X, buffer = %p, const EGLint attrib_list = %p)", dpy, ctx, target, buffer, attrib_list);
@@ -1220,7 +1220,7 @@
return CreateImage(dpy, ctx, target, buffer, &attribs);
}
-EGLBoolean DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
+EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
{
TRACE("(EGLDisplay dpy = %p, EGLImageKHR image = %p)", dpy, image);
@@ -1239,7 +1239,7 @@
return success(EGL_TRUE);
}
-EGLDisplay GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
+EGLDisplay EGLAPIENTRY GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
{
TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
@@ -1294,7 +1294,7 @@
#endif
}
-EGLDisplay GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
+EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
{
TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLint *attrib_list = %p)", platform, native_display, attrib_list);
@@ -1302,7 +1302,7 @@
return GetPlatformDisplay(platform, native_display, &attribs);
}
-EGLSync CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
+EGLSync EGLAPIENTRY CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLunum type = %x, EGLAttrib *attrib_list=%p)", dpy, type, attrib_list);
@@ -1335,7 +1335,7 @@
return success(sync);
}
-EGLSyncKHR CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+EGLSyncKHR EGLAPIENTRY CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
{
TRACE("(EGLDisplay dpy = %p, EGLunum type = %x, EGLint *attrib_list=%p)", dpy, type, attrib_list);
@@ -1343,7 +1343,7 @@
return CreateSync(dpy, type, &attribs);
}
-EGLBoolean DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
+EGLBoolean EGLAPIENTRY DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
{
TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p)", dpy, sync);
@@ -1365,7 +1365,7 @@
return success(EGL_TRUE);
}
-EGLint ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+EGLint EGLAPIENTRY ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
{
TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p, EGLint flags = %x, EGLTimeKHR value = %llx)", dpy, sync, flags, timeout);
@@ -1393,7 +1393,7 @@
return success(EGL_CONDITION_SATISFIED_KHR);
}
-EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
+EGLBoolean EGLAPIENTRY GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
{
TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p, EGLint attribute = %x, EGLAttrib *value = %p)", dpy, sync, attribute, value);
@@ -1432,7 +1432,7 @@
}
}
-EGLBoolean GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
{
EGLAttrib attrib_value;
EGLBoolean result = GetSyncAttrib(dpy, sync, attribute, &attrib_value);
@@ -1440,7 +1440,7 @@
return result;
}
-__eglMustCastToProperFunctionPointerType GetProcAddress(const char *procname)
+__eglMustCastToProperFunctionPointerType EGLAPIENTRY GetProcAddress(const char *procname)
{
TRACE("(const char *procname = \"%s\")", procname);