diff options
author | Jonas Yang <joyang@nvidia.com> | 2011-08-26 20:04:39 +0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-09-13 16:44:22 -0700 |
commit | 1b1d73f3ae5013f6c82f6a9b23a1654896e7a64a (patch) | |
tree | dbc5953369deffc4b3a8703bff526a36bb390cca /opengl | |
parent | 1fbe7a8e828fd0fe8339d075da08aad701ab6e98 (diff) | |
download | frameworks_base-1b1d73f3ae5013f6c82f6a9b23a1654896e7a64a.zip frameworks_base-1b1d73f3ae5013f6c82f6a9b23a1654896e7a64a.tar.gz frameworks_base-1b1d73f3ae5013f6c82f6a9b23a1654896e7a64a.tar.bz2 |
Add (support for) EGL_NV_system_time extension.
Change-Id: I62bf0fcb5ccdc77c042b425a42054fb3122575b6
Signed-off-by: Mathias Agopian <mathias@google.com>
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/include/EGL/eglext.h | 14 | ||||
-rw-r--r-- | opengl/libs/EGL/eglApi.cpp | 48 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_entries.in | 5 |
3 files changed, 67 insertions, 0 deletions
diff --git a/opengl/include/EGL/eglext.h b/opengl/include/EGL/eglext.h index 6a199db..a08932a 100644 --- a/opengl/include/EGL/eglext.h +++ b/opengl/include/EGL/eglext.h @@ -242,6 +242,20 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay #define EGL_RECORDABLE_ANDROID 0x3142 /* EGLConfig attribute */ #endif +/* EGL_NV_system_time + */ +#ifndef EGL_NV_system_time +#define EGL_NV_system_time 1 +typedef khronos_int64_t EGLint64NV; +typedef khronos_uint64_t EGLuint64NV; +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); +#endif +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void); +typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void); +#endif + #ifdef __cplusplus } #endif diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 7e85230..23f67d5 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -62,6 +62,7 @@ static char const * const sExtensionString = "EGL_KHR_fence_sync " "EGL_ANDROID_image_native_buffer " "EGL_ANDROID_swap_rectangle " + "EGL_NV_system_time " ; struct extention_map_t { @@ -80,6 +81,10 @@ static const extention_map_t sExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR }, { "eglSetSwapRectangleANDROID", (__eglMustCastToProperFunctionPointerType)&eglSetSwapRectangleANDROID }, + { "eglGetSystemTimeFrequencyNV", + (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeFrequencyNV }, + { "eglGetSystemTimeNV", + (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeNV }, }; // accesses protected by sExtensionMapMutex @@ -1454,3 +1459,46 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, } return setError(EGL_BAD_DISPLAY, NULL); } + +// ---------------------------------------------------------------------------- +// NVIDIA extensions +// ---------------------------------------------------------------------------- +EGLuint64NV eglGetSystemTimeFrequencyNV() +{ + clearError(); + + if (egl_init_drivers() == EGL_FALSE) { + return setError(EGL_BAD_PARAMETER, EGL_FALSE); + } + + EGLuint64NV ret = 0; + egl_connection_t* const cnx = &gEGLImpl[IMPL_HARDWARE]; + + if (cnx->dso) { + if (cnx->egl.eglGetSystemTimeFrequencyNV) { + return cnx->egl.eglGetSystemTimeFrequencyNV(); + } + } + + return setError(EGL_BAD_DISPLAY, 0);; +} + +EGLuint64NV eglGetSystemTimeNV() +{ + clearError(); + + if (egl_init_drivers() == EGL_FALSE) { + return setError(EGL_BAD_PARAMETER, EGL_FALSE); + } + + EGLuint64NV ret = 0; + egl_connection_t* const cnx = &gEGLImpl[IMPL_HARDWARE]; + + if (cnx->dso) { + if (cnx->egl.eglGetSystemTimeNV) { + return cnx->egl.eglGetSystemTimeNV(); + } + } + + return setError(EGL_BAD_DISPLAY, 0);; +} diff --git a/opengl/libs/EGL/egl_entries.in b/opengl/libs/EGL/egl_entries.in index 63c3c19..bdd2a7e 100644 --- a/opengl/libs/EGL/egl_entries.in +++ b/opengl/libs/EGL/egl_entries.in @@ -62,3 +62,8 @@ EGL_ENTRY(EGLBoolean, eglGetSyncAttribKHR, EGLDisplay, EGLSyncKHR, EGLint, EGL_ENTRY(EGLBoolean, eglSetSwapRectangleANDROID, EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint) EGL_ENTRY(EGLClientBuffer, eglGetRenderBufferANDROID, EGLDisplay, EGLSurface) + +/* NVIDIA extensions */ + +EGL_ENTRY(EGLuint64NV, eglGetSystemTimeFrequencyNV, void) +EGL_ENTRY(EGLuint64NV, eglGetSystemTimeNV, void) |