diff options
-rw-r--r-- | opengl/libs/EGL/eglApi.cpp | 42 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_entries.in | 4 |
2 files changed, 45 insertions, 1 deletions
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 6e77e457b..26f4887a9 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -162,7 +162,8 @@ static const extention_map_t sExtensionMap[] = { (!strcmp((procname), "eglSetBlobCacheFuncsANDROID") || \ !strcmp((procname), "eglHibernateProcessIMG") || \ !strcmp((procname), "eglAwakenProcessIMG") || \ - !strcmp((procname), "eglDupNativeFenceFDANDROID")) + !strcmp((procname), "eglDupNativeFenceFDANDROID") || \ + !strcmp((procname), "eglGpuPerfHintQCOM")) @@ -1554,6 +1555,45 @@ EGLBoolean eglPresentationTimeANDROID(EGLDisplay dpy, EGLSurface surface, } // ---------------------------------------------------------------------------- +// QCOM extensions +// ---------------------------------------------------------------------------- +#ifdef __cplusplus +extern "C" { +#endif +EGLAPI EGLBoolean eglGpuPerfHintQCOM(EGLDisplay dpy, EGLContext ctx, EGLint *attrib_list); +#ifdef __cplusplus +} +#endif + +EGLBoolean eglGpuPerfHintQCOM(EGLDisplay dpy, EGLContext ctx, EGLint *attrib_list) +{ + clearError(); + + const egl_display_ptr dp = validate_display(dpy); + if (!dp) return EGL_FALSE; + + ContextRef _c(dp.get(), ctx); + if ((ctx != EGL_NO_CONTEXT) && !_c.get()) { + // ctx is not valid + return setError(EGL_BAD_CONTEXT, EGL_FALSE); + } + + egl_context_t * c = NULL; + c = get_context(ctx); + + EGLint result = EGL_FALSE; + egl_connection_t* const cnx = &gEGLImpl; + if (cnx->dso && cnx->egl.eglGpuPerfHintQCOM) { + result = cnx->egl.eglGpuPerfHintQCOM( + dp->disp.dpy, + c->context, + attrib_list); + } + return result; + +} + +// ---------------------------------------------------------------------------- // NVIDIA extensions // ---------------------------------------------------------------------------- EGLuint64NV eglGetSystemTimeFrequencyNV() diff --git a/opengl/libs/EGL/egl_entries.in b/opengl/libs/EGL/egl_entries.in index 70d0e52fd..aa92ea083 100644 --- a/opengl/libs/EGL/egl_entries.in +++ b/opengl/libs/EGL/egl_entries.in @@ -81,6 +81,10 @@ EGL_ENTRY(EGLBoolean, eglSetSwapRectangleANDROID, EGLDisplay, EGLSurface, EGLint EGL_ENTRY(EGLClientBuffer, eglGetRenderBufferANDROID, EGLDisplay, EGLSurface) EGL_ENTRY(EGLint, eglDupNativeFenceFDANDROID, EGLDisplay, EGLSyncKHR) +/* QCOM extensions */ + +EGL_ENTRY(EGLBoolean, eglGpuPerfHintQCOM, EGLDisplay, EGLContext, EGLint *) + /* NVIDIA extensions */ EGL_ENTRY(EGLuint64NV, eglGetSystemTimeFrequencyNV, void) |