Loading opengl/include/EGL/eglext.h +10 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETRENDERBUFFERANDROIDPROC) (EGLDisplay dpy, EGLSurface draw); #endif #ifndef EGL_KHR_fence_sync Loading Loading @@ -262,6 +263,15 @@ typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); #endif /* EGL_ANDROID_get_render_buffer */ #ifndef EGL_ANDROID_get_render_buffer #define EGL_ANDROID_get_render_buffer 1 #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLClientBuffer EGLAPIENTRY eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw); #endif #endif /* EGL_IMG_hibernate_process */ #ifndef EGL_IMG_hibernate_process Loading opengl/libagl/egl.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ struct egl_surface_t virtual EGLint getSwapBehavior() const; virtual EGLBoolean swapBuffers(); virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLint h); virtual EGLClientBuffer getRenderBuffer() const; protected: GGLSurface depth; }; Loading Loading @@ -208,6 +209,9 @@ EGLBoolean egl_surface_t::setSwapRectangle( { return EGL_FALSE; } EGLClientBuffer egl_surface_t::getRenderBuffer() const { return 0; } // ---------------------------------------------------------------------------- Loading @@ -233,6 +237,7 @@ 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); virtual EGLClientBuffer getRenderBuffer() const; private: status_t lock(ANativeWindowBuffer* buf, int usage, void** vaddr); Loading Loading @@ -571,6 +576,11 @@ EGLBoolean egl_window_surface_v2_t::setSwapRectangle( return EGL_TRUE; } EGLClientBuffer egl_window_surface_v2_t::getRenderBuffer() const { return buffer; } EGLBoolean egl_window_surface_v2_t::bindDrawSurface(ogles_context_t* gl) { GGLSurface buffer; Loading Loading @@ -801,6 +811,7 @@ static char const * const gExtensionsString = // "KHR_image_pixmap " "EGL_ANDROID_image_native_buffer " "EGL_ANDROID_swap_rectangle " "EGL_ANDROID_get_render_buffer " ; // ---------------------------------------------------------------------------- Loading Loading @@ -861,6 +872,8 @@ static const extention_map_t gExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglGetSyncAttribKHR }, { "eglSetSwapRectangleANDROID", (__eglMustCastToProperFunctionPointerType)&eglSetSwapRectangleANDROID }, { "eglGetRenderBufferANDROID", (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROID }, }; /* Loading Loading @@ -2154,3 +2167,18 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, return EGL_TRUE; } 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(); } opengl/libs/EGL/eglApi.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,8 @@ static const extention_map_t sExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglCreateImageKHR }, { "eglDestroyImageKHR", (__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR }, { "eglGetRenderBufferANDROID", (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROID }, { "eglGetSystemTimeFrequencyNV", (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeFrequencyNV }, { "eglGetSystemTimeNV", Loading Loading @@ -1191,7 +1193,21 @@ EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, // ANDROID extensions // ---------------------------------------------------------------------------- /* ANDROID extensions entry-point go here */ EGLClientBuffer eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw) { clearError(); const egl_display_ptr dp = validate_display(dpy); if (!dp) return EGL_FALSE; egl_surface_t const * const s = get_surface(draw); egl_connection_t* const cnx = &gEGLImpl; if (cnx->dso && cnx->egl.eglGetRenderBufferANDROID) { return cnx->egl.eglGetRenderBufferANDROID(dp->disp.dpy, s->surface); } return setError(EGL_BAD_DISPLAY, (EGLClientBuffer*)0); } // ---------------------------------------------------------------------------- // NVIDIA extensions Loading Loading
opengl/include/EGL/eglext.h +10 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETRENDERBUFFERANDROIDPROC) (EGLDisplay dpy, EGLSurface draw); #endif #ifndef EGL_KHR_fence_sync Loading Loading @@ -262,6 +263,15 @@ typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); #endif /* EGL_ANDROID_get_render_buffer */ #ifndef EGL_ANDROID_get_render_buffer #define EGL_ANDROID_get_render_buffer 1 #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLClientBuffer EGLAPIENTRY eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw); #endif #endif /* EGL_IMG_hibernate_process */ #ifndef EGL_IMG_hibernate_process Loading
opengl/libagl/egl.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ struct egl_surface_t virtual EGLint getSwapBehavior() const; virtual EGLBoolean swapBuffers(); virtual EGLBoolean setSwapRectangle(EGLint l, EGLint t, EGLint w, EGLint h); virtual EGLClientBuffer getRenderBuffer() const; protected: GGLSurface depth; }; Loading Loading @@ -208,6 +209,9 @@ EGLBoolean egl_surface_t::setSwapRectangle( { return EGL_FALSE; } EGLClientBuffer egl_surface_t::getRenderBuffer() const { return 0; } // ---------------------------------------------------------------------------- Loading @@ -233,6 +237,7 @@ 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); virtual EGLClientBuffer getRenderBuffer() const; private: status_t lock(ANativeWindowBuffer* buf, int usage, void** vaddr); Loading Loading @@ -571,6 +576,11 @@ EGLBoolean egl_window_surface_v2_t::setSwapRectangle( return EGL_TRUE; } EGLClientBuffer egl_window_surface_v2_t::getRenderBuffer() const { return buffer; } EGLBoolean egl_window_surface_v2_t::bindDrawSurface(ogles_context_t* gl) { GGLSurface buffer; Loading Loading @@ -801,6 +811,7 @@ static char const * const gExtensionsString = // "KHR_image_pixmap " "EGL_ANDROID_image_native_buffer " "EGL_ANDROID_swap_rectangle " "EGL_ANDROID_get_render_buffer " ; // ---------------------------------------------------------------------------- Loading Loading @@ -861,6 +872,8 @@ static const extention_map_t gExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglGetSyncAttribKHR }, { "eglSetSwapRectangleANDROID", (__eglMustCastToProperFunctionPointerType)&eglSetSwapRectangleANDROID }, { "eglGetRenderBufferANDROID", (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROID }, }; /* Loading Loading @@ -2154,3 +2167,18 @@ EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, return EGL_TRUE; } 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(); }
opengl/libs/EGL/eglApi.cpp +17 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,8 @@ static const extention_map_t sExtentionMap[] = { (__eglMustCastToProperFunctionPointerType)&eglCreateImageKHR }, { "eglDestroyImageKHR", (__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR }, { "eglGetRenderBufferANDROID", (__eglMustCastToProperFunctionPointerType)&eglGetRenderBufferANDROID }, { "eglGetSystemTimeFrequencyNV", (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeFrequencyNV }, { "eglGetSystemTimeNV", Loading Loading @@ -1191,7 +1193,21 @@ EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, // ANDROID extensions // ---------------------------------------------------------------------------- /* ANDROID extensions entry-point go here */ EGLClientBuffer eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw) { clearError(); const egl_display_ptr dp = validate_display(dpy); if (!dp) return EGL_FALSE; egl_surface_t const * const s = get_surface(draw); egl_connection_t* const cnx = &gEGLImpl; if (cnx->dso && cnx->egl.eglGetRenderBufferANDROID) { return cnx->egl.eglGetRenderBufferANDROID(dp->disp.dpy, s->surface); } return setError(EGL_BAD_DISPLAY, (EGLClientBuffer*)0); } // ---------------------------------------------------------------------------- // NVIDIA extensions Loading