summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristian Høgsberg <[email protected]>2012-12-13 15:59:24 -0500
committerKristian Høgsberg <[email protected]>2013-01-04 11:20:12 -0500
commit0725f2d654bfa4b24059e71572e2ad90baac7031 (patch)
treef5c85706aa6b41a607ac2da9bdbb64fae156564b
parentf79739ebdd17b55c6a416e2772b28e3d9c30ec07 (diff)
egl: Add extension infrastructure for EGL_EXT_buffer_age
-rw-r--r--src/egl/main/eglapi.h6
-rw-r--r--src/egl/main/egldisplay.h1
-rw-r--r--src/egl/main/eglmisc.c1
-rw-r--r--src/egl/main/eglsurface.c8
4 files changed, 16 insertions, 0 deletions
diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h
index ec3ad7ec973..85b8f1a8db1 100644
--- a/src/egl/main/eglapi.h
+++ b/src/egl/main/eglapi.h
@@ -128,6 +128,10 @@ typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay *displ
typedef EGLBoolean (*PostSubBufferNV_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surface, EGLint x, EGLint y, EGLint width, EGLint height);
+typedef EGLint (*QueryBufferAge_t)(_EGLDriver *drv,
+ _EGLDisplay *dpy, _EGLSurface *surface);
+
+
/**
* The API dispatcher jumps through these functions
*/
@@ -204,6 +208,8 @@ struct _egl_api
#endif
PostSubBufferNV_t PostSubBufferNV;
+
+ QueryBufferAge_t QueryBufferAge;
};
#endif /* EGLAPI_INCLUDED */
diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
index ccb1fbc6992..4b33470151b 100644
--- a/src/egl/main/egldisplay.h
+++ b/src/egl/main/egldisplay.h
@@ -114,6 +114,7 @@ struct _egl_extensions
EGLBoolean NV_post_sub_buffer;
EGLBoolean EXT_create_context_robustness;
+ EGLBoolean EXT_buffer_age;
};
diff --git a/src/egl/main/eglmisc.c b/src/egl/main/eglmisc.c
index b7599d01794..d445c41810c 100644
--- a/src/egl/main/eglmisc.c
+++ b/src/egl/main/eglmisc.c
@@ -116,6 +116,7 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy)
_EGL_CHECK_EXTENSION(ANDROID_image_native_buffer);
_EGL_CHECK_EXTENSION(EXT_create_context_robustness);
+ _EGL_CHECK_EXTENSION(EXT_buffer_age);
_EGL_CHECK_EXTENSION(NV_post_sub_buffer);
#undef _EGL_CHECK_EXTENSION
diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index 52d85ef8b70..9fc53674fd0 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -37,6 +37,7 @@
#include <stdlib.h>
#include <string.h>
#include "egldisplay.h"
+#include "egldriver.h"
#include "eglcontext.h"
#include "eglconfig.h"
#include "eglcurrent.h"
@@ -409,6 +410,13 @@ _eglQuerySurface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface,
case EGL_POST_SUB_BUFFER_SUPPORTED_NV:
*value = surface->PostSubBufferSupportedNV;
break;
+ case EGL_BUFFER_AGE_EXT:
+ if (!dpy->Extensions.EXT_buffer_age) {
+ _eglError(EGL_BAD_ATTRIBUTE, "eglQuerySurface");
+ return EGL_FALSE;
+ }
+ *value = drv->API.QueryBufferAge(drv, dpy, surface);
+ break;
default:
_eglError(EGL_BAD_ATTRIBUTE, "eglQuerySurface");
return EGL_FALSE;