diff options
author | Arne Coucheron <arco68@gmail.com> | 2011-12-18 07:24:45 +0100 |
---|---|---|
committer | Arne Coucheron <arco68@gmail.com> | 2011-12-19 07:11:11 +0100 |
commit | 78c1d400ae7b50efbf48da8198022f877de60bb8 (patch) | |
tree | 2850a53b7c84f0fe7366b64ebd6cdb2690a8f6f6 /opengl/libagl | |
parent | 6abe6e0aab530f74f18fa9d4a92c50aaf1c3b653 (diff) | |
download | frameworks_base-78c1d400ae7b50efbf48da8198022f877de60bb8.zip frameworks_base-78c1d400ae7b50efbf48da8198022f877de60bb8.tar.gz frameworks_base-78c1d400ae7b50efbf48da8198022f877de60bb8.tar.bz2 |
opengl/libs/EGL: Bring back eglRenderBufferANDROID extention
This change brings back the eglGetRenderBufferANDROID extension Define EGL_EGLEXT_PROTOTYPES in order to be able to use this extension.
Revert "cleanup EGL a bit. remove unused extension."
This reverts commit 9d75f1341524910b00d35dd4eeb426d7e7791f6e.
Change-Id: I8b3805157cb1f72af507bc823d16910b738cec4c
Diffstat (limited to 'opengl/libagl')
-rw-r--r-- | opengl/libagl/Android.mk | 3 | ||||
-rw-r--r-- | opengl/libagl/egl.cpp | 42 |
2 files changed, 45 insertions, 0 deletions
diff --git a/opengl/libagl/Android.mk b/opengl/libagl/Android.mk index ce55093..33ecbe8 100644 --- a/opengl/libagl/Android.mk +++ b/opengl/libagl/Android.mk @@ -47,6 +47,9 @@ endif ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true) LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451 endif +ifeq ($(BOARD_USES_QCOM_HARDWARE),true) + LOCAL_CFLAGS += -DQCOM_HARDWARE +endif LOCAL_C_INCLUDES += bionic/libc/private LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index 6d4098c..4c6d306 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp @@ -165,6 +165,9 @@ struct egl_surface_t virtual EGLint getSwapBehavior() const; virtual EGLBoolean swapBuffers(); virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLint h); +#ifdef QCOM_HARDWARE + virtual EGLClientBuffer getRenderBuffer() const; +#endif protected: GGLSurface depth; }; @@ -208,6 +211,11 @@ EGLBoolean egl_surface_t::setSwapRectangle( { return EGL_FALSE; } +#ifdef QCOM_HARDWARE +EGLClientBuffer egl_surface_t::getRenderBuffer() const { + return 0; +} +#endif // ---------------------------------------------------------------------------- @@ -233,6 +241,9 @@ struct egl_window_surface_v2_t : public egl_surface_t virtual EGLint getRefreshRate() const; virtual EGLint getSwapBehavior() const; virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLint h); +#ifdef QCOM_HARDWARE + virtual EGLClientBuffer getRenderBuffer() const; +#endif private: status_t lock(ANativeWindowBuffer* buf, int usage, void** vaddr); @@ -571,6 +582,13 @@ EGLBoolean egl_window_surface_v2_t::setSwapRectangle( return EGL_TRUE; } +#ifdef QCOM_HARDWARE +EGLClientBuffer egl_window_surface_v2_t::getRenderBuffer() const +{ + return buffer; +} +#endif + EGLBoolean egl_window_surface_v2_t::bindDrawSurface(ogles_context_t* gl) { GGLSurface buffer; @@ -800,6 +818,9 @@ static char const * const gExtensionsString = // "KHR_image_pixmap " "EGL_ANDROID_image_native_buffer " "EGL_ANDROID_swap_rectangle " +#ifdef QCOM_HARDWARE + "EGL_ANDROID_get_render_buffer " +#endif ; // ---------------------------------------------------------------------------- @@ -852,6 +873,10 @@ static const extention_map_t gExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR }, { "eglSetSwapRectangleANDROID", (__eglMustCastToProperFunctionPointerType)&eglSetSwapRectangleANDROID }, +#ifdef QCOM_HARDWARE + { "eglGetRenderBufferANDROID", + (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROID }, +#endif }; /* @@ -2077,3 +2102,20 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, return EGL_TRUE; } + +#ifdef QCOM_HARDWARE +EGLClientBuffer eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw) +{ + if (egl_display_t::is_valid(dpy) == EGL_FALSE) + return setError(EGL_BAD_DISPLAY, (EGLClientBuffer)0); + + egl_surface_t* d = static_cast<egl_surface_t*>(draw); + if (!d->isValid()) + return setError(EGL_BAD_SURFACE, (EGLClientBuffer)0); + if (d->dpy != dpy) + return setError(EGL_BAD_DISPLAY, (EGLClientBuffer)0); + + // post the surface + return d->getRenderBuffer(); +} +#endif |