diff options
Diffstat (limited to 'emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h')
-rw-r--r-- | emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h b/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h deleted file mode 100644 index f8683b2..0000000 --- a/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _LIBRENDER_FRAMEBUFFER_H -#define _LIBRENDER_FRAMEBUFFER_H - -#include "libOpenglRender/render_api.h" -#include "ColorBuffer.h" -#include "RenderContext.h" -#include "WindowSurface.h" -#include "emugl/common/mutex.h" - -#include <map> -#include <EGL/egl.h> -#include <stdint.h> - -typedef uint32_t HandleType; -struct ColorBufferRef { - ColorBufferPtr cb; - uint32_t refcount; // number of client-side references -}; -typedef std::map<HandleType, RenderContextPtr> RenderContextMap; -typedef std::map<HandleType, WindowSurfacePtr> WindowSurfaceMap; -typedef std::map<HandleType, ColorBufferRef> ColorBufferMap; - -struct FrameBufferCaps -{ - bool hasGL2; - bool has_eglimage_texture_2d; - bool has_eglimage_renderbuffer; - EGLint eglMajor; - EGLint eglMinor; -}; - -class FrameBuffer -{ -public: - static bool initialize(int width, int height); - static bool setupSubWindow(FBNativeWindowType p_window, - int x, int y, - int width, int height, float zRot); - static bool removeSubWindow(); - static void finalize(); - static FrameBuffer *getFB() { return s_theFrameBuffer; } - - const FrameBufferCaps &getCaps() const { return m_caps; } - - int getWidth() const { return m_width; } - int getHeight() const { return m_height; } - - void setPostCallback(OnPostFn onPost, void* onPostContext); - - void getGLStrings(const char** vendor, const char** renderer, const char** version) const { - *vendor = m_glVendor; - *renderer = m_glRenderer; - *version = m_glVersion; - } - - HandleType createRenderContext(int p_config, HandleType p_share, bool p_isGL2 = false); - HandleType createWindowSurface(int p_config, int p_width, int p_height); - HandleType createColorBuffer(int p_width, int p_height, GLenum p_internalFormat); - void DestroyRenderContext(HandleType p_context); - void DestroyWindowSurface(HandleType p_surface); - int openColorBuffer(HandleType p_colorbuffer); - void closeColorBuffer(HandleType p_colorbuffer); - - bool bindContext(HandleType p_context, HandleType p_drawSurface, HandleType p_readSurface); - bool setWindowSurfaceColorBuffer(HandleType p_surface, HandleType p_colorbuffer); - bool flushWindowSurfaceColorBuffer(HandleType p_surface); - bool bindColorBufferToTexture(HandleType p_colorbuffer); - bool bindColorBufferToRenderbuffer(HandleType p_colorbuffer); - bool updateColorBuffer(HandleType p_colorbuffer, - int x, int y, int width, int height, - GLenum format, GLenum type, void *pixels); - - bool post(HandleType p_colorbuffer, bool needLock = true); - bool repost(); - - EGLDisplay getDisplay() const { return m_eglDisplay; } - EGLNativeWindowType getSubWindow() const { return m_subWin; } - bool bind_locked(); - bool unbind_locked(); - - void setDisplayRotation(float zRot) { - m_zRot = zRot; - repost(); - } - -private: - FrameBuffer(int p_width, int p_height); - ~FrameBuffer(); - HandleType genHandle(); - bool bindSubwin_locked(); - void initGLState(); - -private: - static FrameBuffer *s_theFrameBuffer; - static HandleType s_nextHandle; - int m_x; - int m_y; - int m_width; - int m_height; - emugl::Mutex m_lock; - FBNativeWindowType m_nativeWindow; - FrameBufferCaps m_caps; - EGLDisplay m_eglDisplay; - RenderContextMap m_contexts; - WindowSurfaceMap m_windows; - ColorBufferMap m_colorbuffers; - - EGLSurface m_eglSurface; - EGLContext m_eglContext; - EGLSurface m_pbufSurface; - EGLContext m_pbufContext; - - EGLContext m_prevContext; - EGLSurface m_prevReadSurf; - EGLSurface m_prevDrawSurf; - EGLNativeWindowType m_subWin; - EGLNativeDisplayType m_subWinDisplay; - EGLConfig m_eglConfig; - HandleType m_lastPostedColorBuffer; - float m_zRot; - bool m_eglContextInitialized; - - int m_statsNumFrames; - long long m_statsStartTime; - bool m_fpsStats; - - OnPostFn m_onPost; - void* m_onPostContext; - unsigned char* m_fbImage; - - const char* m_glVendor; - const char* m_glRenderer; - const char* m_glVersion; -}; -#endif |