Add (support for) EGL_NV_system_time extension.

Change-Id: I62bf0fcb5ccdc77c042b425a42054fb3122575b6
Signed-off-by: Mathias Agopian <mathias@google.com>
This commit is contained in:
Jonas Yang 2011-08-26 20:04:39 +08:00 committed by Mathias Agopian
parent ce863622ca
commit 1c3d72a229
3 changed files with 67 additions and 0 deletions

View File

@ -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

View File

@ -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);;
}

View File

@ -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)