summaryrefslogtreecommitdiffstats
path: root/emulator/opengl/host/libs/libOpenglRender
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/opengl/host/libs/libOpenglRender')
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/Android.mk82
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp352
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h60
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp88
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h72
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp259
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/FBConfig.h60
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp897
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h150
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp65
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h30
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp326
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/GLDispatch.h300
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp50
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m64
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h37
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp57
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp73
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h36
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp76
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderContext.h49
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp370
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderControl.h21
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp159
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderServer.h42
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp162
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/RenderThread.h44
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp42
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h37
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp238
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/WindowSurface.h71
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/egl_proc.h68
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/gl_proc.h296
-rw-r--r--emulator/opengl/host/libs/libOpenglRender/render_api.cpp267
34 files changed, 0 insertions, 5000 deletions
diff --git a/emulator/opengl/host/libs/libOpenglRender/Android.mk b/emulator/opengl/host/libs/libOpenglRender/Android.mk
deleted file mode 100644
index 20567f0fa..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/Android.mk
+++ /dev/null
@@ -1,82 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-host_OS_SRCS :=
-host_common_LDLIBS :=
-
-ifeq ($(HOST_OS),linux)
- host_OS_SRCS = NativeLinuxSubWindow.cpp
- host_common_LDLIBS += -lX11 -lrt
-endif
-
-ifeq ($(HOST_OS),darwin)
- host_OS_SRCS = NativeMacSubWindow.m
- host_common_LDLIBS += -Wl,-framework,AppKit
-endif
-
-ifeq ($(HOST_OS),windows)
- host_OS_SRCS = NativeWindowsSubWindow.cpp
-endif
-
-host_common_SRC_FILES := \
- $(host_OS_SRCS) \
- render_api.cpp \
- ColorBuffer.cpp \
- EGLDispatch.cpp \
- FBConfig.cpp \
- FrameBuffer.cpp \
- GLDispatch.cpp \
- GL2Dispatch.cpp \
- RenderContext.cpp \
- WindowSurface.cpp \
- RenderControl.cpp \
- ThreadInfo.cpp \
- RenderThread.cpp \
- ReadBuffer.cpp \
- RenderServer.cpp
-
-host_common_CFLAGS :=
-
-#For gl debbuging
-#host_common_CFLAGS += -DCHECK_GL_ERROR
-
-
-### host libOpenglRender #################################################
-$(call emugl-begin-host-shared-library,libOpenglRender)
-
-$(call emugl-import,libGLESv1_dec libGLESv2_dec lib_renderControl_dec libOpenglCodecCommon)
-
-LOCAL_LDLIBS += $(host_common_LDLIBS)
-
-LOCAL_SRC_FILES := $(host_common_SRC_FILES)
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-# use Translator's egl/gles headers
-LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include
-
-LOCAL_STATIC_LIBRARIES += libemugl_common
-
-$(call emugl-export,CFLAGS,$(host_common_CFLAGS))
-
-$(call emugl-end-module)
-
-
-### host libOpenglRender, 64-bit #########################################
-$(call emugl-begin-host64-shared-library,lib64OpenglRender)
-
-$(call emugl-import,lib64GLESv1_dec lib64GLESv2_dec lib64_renderControl_dec lib64OpenglCodecCommon)
-
-LOCAL_LDLIBS += $(host_common_LDLIBS)
-
-LOCAL_SRC_FILES := $(host_common_SRC_FILES)
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-# use Translator's egl/gles headers
-LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include
-
-LOCAL_STATIC_LIBRARIES += lib64emugl_common
-
-$(call emugl-export,CFLAGS,$(host_common_CFLAGS))
-
-$(call emugl-end-module)
diff --git a/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp b/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp
deleted file mode 100644
index e612294f6..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp
+++ /dev/null
@@ -1,352 +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.
-*/
-#include "ColorBuffer.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "ThreadInfo.h"
-#include "GLcommon/GLutils.h"
-#ifdef WITH_GLES2
-#include "GL2Dispatch.h"
-#endif
-#include <stdio.h>
-
-ColorBuffer *ColorBuffer::create(int p_width, int p_height,
- GLenum p_internalFormat)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
-
- GLenum texInternalFormat = 0;
-
- switch(p_internalFormat) {
- case GL_RGB:
- case GL_RGB565_OES:
- texInternalFormat = GL_RGB;
- break;
-
- case GL_RGBA:
- case GL_RGB5_A1_OES:
- case GL_RGBA4_OES:
- texInternalFormat = GL_RGBA;
- break;
-
- default:
- return NULL;
- break;
- }
-
- if (!fb->bind_locked()) {
- return NULL;
- }
-
- ColorBuffer *cb = new ColorBuffer();
-
-
- s_gl.glGenTextures(1, &cb->m_tex);
- s_gl.glBindTexture(GL_TEXTURE_2D, cb->m_tex);
- int nComp = (texInternalFormat == GL_RGB ? 3 : 4);
- char *zBuff = new char[nComp*p_width*p_height];
- if (zBuff) {
- memset(zBuff, 0, nComp*p_width*p_height);
- }
- s_gl.glTexImage2D(GL_TEXTURE_2D, 0, texInternalFormat,
- p_width, p_height, 0,
- texInternalFormat,
- GL_UNSIGNED_BYTE, zBuff);
- delete [] zBuff;
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- //
- // create another texture for that colorbuffer for blit
- //
- s_gl.glGenTextures(1, &cb->m_blitTex);
- s_gl.glBindTexture(GL_TEXTURE_2D, cb->m_blitTex);
- s_gl.glTexImage2D(GL_TEXTURE_2D, 0, texInternalFormat,
- p_width, p_height, 0,
- texInternalFormat,
- GL_UNSIGNED_BYTE, NULL);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- cb->m_width = p_width;
- cb->m_height = p_height;
- cb->m_internalFormat = texInternalFormat;
-
- if (fb->getCaps().has_eglimage_texture_2d) {
- cb->m_eglImage = s_egl.eglCreateImageKHR(
- fb->getDisplay(),
- s_egl.eglGetCurrentContext(),
- EGL_GL_TEXTURE_2D_KHR,
- (EGLClientBuffer)SafePointerFromUInt(cb->m_tex),
- NULL);
-
- cb->m_blitEGLImage = s_egl.eglCreateImageKHR(
- fb->getDisplay(),
- s_egl.eglGetCurrentContext(),
- EGL_GL_TEXTURE_2D_KHR,
- (EGLClientBuffer)SafePointerFromUInt(cb->m_blitTex),
- NULL);
- }
-
- fb->unbind_locked();
- return cb;
-}
-
-ColorBuffer::ColorBuffer() :
- m_tex(0),
- m_blitTex(0),
- m_eglImage(NULL),
- m_blitEGLImage(NULL),
- m_fbo(0),
- m_internalFormat(0)
-{
-}
-
-ColorBuffer::~ColorBuffer()
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- fb->bind_locked();
-
- if (m_blitEGLImage) {
- s_egl.eglDestroyImageKHR(fb->getDisplay(), m_blitEGLImage);
- }
- if (m_eglImage) {
- s_egl.eglDestroyImageKHR(fb->getDisplay(), m_eglImage);
- }
-
- if (m_fbo) {
- s_gl.glDeleteFramebuffersOES(1, &m_fbo);
- }
-
- GLuint tex[2] = {m_tex, m_blitTex};
- s_gl.glDeleteTextures(2, tex);
-
- fb->unbind_locked();
-}
-
-void ColorBuffer::subUpdate(int x, int y, int width, int height, GLenum p_format, GLenum p_type, void *pixels)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb->bind_locked()) return;
- s_gl.glBindTexture(GL_TEXTURE_2D, m_tex);
- s_gl.glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- s_gl.glTexSubImage2D(GL_TEXTURE_2D, 0, x, y,
- width, height, p_format, p_type, pixels);
- fb->unbind_locked();
-}
-
-bool ColorBuffer::blitFromCurrentReadBuffer()
-{
- RenderThreadInfo *tInfo = RenderThreadInfo::get();
- if (!tInfo->currContext.Ptr()) {
- // no Current context
- return false;
- }
-
- //
- // Create a temporary texture inside the current context
- // from the blit_texture EGLImage and copy the pixels
- // from the current read buffer to that texture
- //
- GLuint tmpTex;
- GLint currTexBind;
- if (tInfo->currContext->isGL2()) {
- s_gl2.glGetIntegerv(GL_TEXTURE_BINDING_2D, &currTexBind);
- s_gl2.glGenTextures(1,&tmpTex);
- s_gl2.glBindTexture(GL_TEXTURE_2D, tmpTex);
- s_gl2.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_blitEGLImage);
- s_gl2.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0,
- m_width, m_height);
- }
- else {
- s_gl.glGetIntegerv(GL_TEXTURE_BINDING_2D, &currTexBind);
- s_gl.glGenTextures(1,&tmpTex);
- s_gl.glBindTexture(GL_TEXTURE_2D, tmpTex);
- s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_blitEGLImage);
- s_gl.glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0,
- m_width, m_height);
- }
-
-
- //
- // Now bind the frame buffer context and blit from
- // m_blitTex into m_tex
- //
- FrameBuffer *fb = FrameBuffer::getFB();
- if (fb->bind_locked()) {
-
- //
- // bind FBO object which has this colorbuffer as render target
- //
- if (bind_fbo()) {
-
- //
- // save current viewport and match it to the current
- // colorbuffer size
- //
- GLint vport[4] = {};
- s_gl.glGetIntegerv(GL_VIEWPORT, vport);
- s_gl.glViewport(0, 0, m_width, m_height);
-
- // render m_blitTex
- s_gl.glBindTexture(GL_TEXTURE_2D, m_blitTex);
- s_gl.glEnable(GL_TEXTURE_2D);
- s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- drawTexQuad(); // this will render the texture flipped
-
- // unbind the fbo
- s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-
- // restrore previous viewport
- s_gl.glViewport(vport[0], vport[1], vport[2], vport[3]);
- }
-
- // unbind from the FrameBuffer context
- fb->unbind_locked();
- }
-
- //
- // delete the temporary texture and restore the texture binding
- // inside the current context
- //
- if (tInfo->currContext->isGL2()) {
- s_gl2.glDeleteTextures(1, &tmpTex);
- s_gl2.glBindTexture(GL_TEXTURE_2D, currTexBind);
- }
- else {
- s_gl.glDeleteTextures(1, &tmpTex);
- s_gl.glBindTexture(GL_TEXTURE_2D, currTexBind);
- }
-
- return true;
-}
-
-bool ColorBuffer::bindToTexture()
-{
- if (m_eglImage) {
- RenderThreadInfo *tInfo = RenderThreadInfo::get();
- if (tInfo->currContext.Ptr()) {
-#ifdef WITH_GLES2
- if (tInfo->currContext->isGL2()) {
- s_gl2.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
- }
- else {
- s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
- }
-#else
- s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
-#endif
- return true;
- }
- }
- return false;
-}
-
-bool ColorBuffer::bindToRenderbuffer()
-{
- if (m_eglImage) {
- RenderThreadInfo *tInfo = RenderThreadInfo::get();
- if (tInfo->currContext.Ptr()) {
-#ifdef WITH_GLES2
- if (tInfo->currContext->isGL2()) {
- s_gl2.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
- }
- else {
- s_gl.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
- }
-#else
- s_gl.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
-#endif
- return true;
- }
- }
- return false;
-}
-
-bool ColorBuffer::bind_fbo()
-{
- if (m_fbo) {
- // fbo already exist - just bind
- s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_fbo);
- return true;
- }
-
- s_gl.glGenFramebuffersOES(1, &m_fbo);
- s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_fbo);
- s_gl.glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES,
- GL_COLOR_ATTACHMENT0_OES,
- GL_TEXTURE_2D, m_tex, 0);
- GLenum status = s_gl.glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES);
- if (status != GL_FRAMEBUFFER_COMPLETE_OES) {
- ERR("ColorBuffer::bind_fbo: FBO not complete: %#x\n", status);
- s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
- s_gl.glDeleteFramebuffersOES(1, &m_fbo);
- m_fbo = 0;
- return false;
- }
-
- return true;
-}
-
-bool ColorBuffer::post()
-{
- s_gl.glBindTexture(GL_TEXTURE_2D, m_tex);
- s_gl.glEnable(GL_TEXTURE_2D);
- s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- drawTexQuad();
-
- return true;
-}
-
-void ColorBuffer::drawTexQuad()
-{
- GLfloat verts[] = { -1.0f, -1.0f, 0.0f,
- -1.0f, +1.0f, 0.0f,
- +1.0f, -1.0f, 0.0f,
- +1.0f, +1.0f, 0.0f };
-
- GLfloat tcoords[] = { 0.0f, 1.0f,
- 0.0f, 0.0f,
- 1.0f, 1.0f,
- 1.0f, 0.0f };
-
- s_gl.glClientActiveTexture(GL_TEXTURE0);
- s_gl.glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- s_gl.glTexCoordPointer(2, GL_FLOAT, 0, tcoords);
-
- s_gl.glEnableClientState(GL_VERTEX_ARRAY);
- s_gl.glVertexPointer(3, GL_FLOAT, 0, verts);
- s_gl.glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-}
-
-void ColorBuffer::readback(unsigned char* img)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (fb->bind_locked()) {
- if (bind_fbo()) {
- s_gl.glReadPixels(0, 0, m_width, m_height,
- GL_RGBA, GL_UNSIGNED_BYTE, img);
- }
- fb->unbind_locked();
- }
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h b/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h
deleted file mode 100644
index 9a919c367..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h
+++ /dev/null
@@ -1,60 +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_COLORBUFFER_H
-#define _LIBRENDER_COLORBUFFER_H
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include <GLES/gl.h>
-#include "emugl/common/smart_ptr.h"
-
-class ColorBuffer
-{
-public:
- static ColorBuffer *create(int p_width, int p_height,
- GLenum p_internalFormat);
- ~ColorBuffer();
-
- GLuint getGLTextureName() const { return m_tex; }
- GLuint getWidth() const { return m_width; }
- GLuint getHeight() const { return m_height; }
-
- void subUpdate(int x, int y, int width, int height, GLenum p_format, GLenum p_type, void *pixels);
- bool post();
- bool bindToTexture();
- bool bindToRenderbuffer();
- bool blitFromCurrentReadBuffer();
- void readback(unsigned char* img);
-
-private:
- ColorBuffer();
- void drawTexQuad();
- bool bind_fbo(); // binds a fbo which have this texture as render target
-
-private:
- GLuint m_tex;
- GLuint m_blitTex;
- EGLImageKHR m_eglImage;
- EGLImageKHR m_blitEGLImage;
- GLuint m_width;
- GLuint m_height;
- GLuint m_fbo;
- GLenum m_internalFormat;
-};
-
-typedef emugl::SmartPtr<ColorBuffer> ColorBufferPtr;
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp b/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp
deleted file mode 100644
index 7d514e89c..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp
+++ /dev/null
@@ -1,88 +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.
-*/
-#include "EGLDispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "emugl/common/shared_library.h"
-
-EGLDispatch s_egl;
-
-#define DEFAULT_EGL_LIB EMUGL_LIBNAME("EGL_translator")
-
-bool init_egl_dispatch()
-{
-
- const char *libName = getenv("ANDROID_EGL_LIB");
- if (!libName) libName = DEFAULT_EGL_LIB;
-
- emugl::SharedLibrary *lib = emugl::SharedLibrary::open(libName);
- if (!lib) {
- printf("Failed to open %s\n", libName);
- return NULL;
- }
- s_egl.eglGetError = (eglGetError_t) lib->findSymbol("eglGetError");
- s_egl.eglGetDisplay = (eglGetDisplay_t) lib->findSymbol("eglGetDisplay");
- s_egl.eglInitialize = (eglInitialize_t) lib->findSymbol("eglInitialize");
- s_egl.eglTerminate = (eglTerminate_t) lib->findSymbol("eglTerminate");
- s_egl.eglQueryString = (eglQueryString_t) lib->findSymbol("eglQueryString");
- s_egl.eglGetConfigs = (eglGetConfigs_t) lib->findSymbol("eglGetConfigs");
- s_egl.eglChooseConfig = (eglChooseConfig_t) lib->findSymbol("eglChooseConfig");
- s_egl.eglGetConfigAttrib = (eglGetConfigAttrib_t) lib->findSymbol("eglGetConfigAttrib");
- s_egl.eglCreateWindowSurface = (eglCreateWindowSurface_t) lib->findSymbol("eglCreateWindowSurface");
- s_egl.eglCreatePbufferSurface = (eglCreatePbufferSurface_t) lib->findSymbol("eglCreatePbufferSurface");
- s_egl.eglCreatePixmapSurface = (eglCreatePixmapSurface_t) lib->findSymbol("eglCreatePixmapSurface");
- s_egl.eglDestroySurface = (eglDestroySurface_t) lib->findSymbol("eglDestroySurface");
- s_egl.eglQuerySurface = (eglQuerySurface_t) lib->findSymbol("eglQuerySurface");
- s_egl.eglBindAPI = (eglBindAPI_t) lib->findSymbol("eglBindAPI");
- s_egl.eglQueryAPI = (eglQueryAPI_t) lib->findSymbol("eglQueryAPI");
- s_egl.eglWaitClient = (eglWaitClient_t) lib->findSymbol("eglWaitClient");
- s_egl.eglReleaseThread = (eglReleaseThread_t) lib->findSymbol("eglReleaseThread");
- s_egl.eglCreatePbufferFromClientBuffer = (eglCreatePbufferFromClientBuffer_t) lib->findSymbol("eglCreatePbufferFromClientBuffer");
- s_egl.eglSurfaceAttrib = (eglSurfaceAttrib_t) lib->findSymbol("eglSurfaceAttrib");
- s_egl.eglBindTexImage = (eglBindTexImage_t) lib->findSymbol("eglBindTexImage");
- s_egl.eglReleaseTexImage = (eglReleaseTexImage_t) lib->findSymbol("eglReleaseTexImage");
- s_egl.eglSwapInterval = (eglSwapInterval_t) lib->findSymbol("eglSwapInterval");
- s_egl.eglCreateContext = (eglCreateContext_t) lib->findSymbol("eglCreateContext");
- s_egl.eglDestroyContext = (eglDestroyContext_t) lib->findSymbol("eglDestroyContext");
- s_egl.eglMakeCurrent = (eglMakeCurrent_t) lib->findSymbol("eglMakeCurrent");
- s_egl.eglGetCurrentContext = (eglGetCurrentContext_t) lib->findSymbol("eglGetCurrentContext");
- s_egl.eglGetCurrentSurface = (eglGetCurrentSurface_t) lib->findSymbol("eglGetCurrentSurface");
- s_egl.eglGetCurrentDisplay = (eglGetCurrentDisplay_t) lib->findSymbol("eglGetCurrentDisplay");
- s_egl.eglQueryContext = (eglQueryContext_t) lib->findSymbol("eglQueryContext");
- s_egl.eglWaitGL = (eglWaitGL_t) lib->findSymbol("eglWaitGL");
- s_egl.eglWaitNative = (eglWaitNative_t) lib->findSymbol("eglWaitNative");
- s_egl.eglSwapBuffers = (eglSwapBuffers_t) lib->findSymbol("eglSwapBuffers");
- s_egl.eglCopyBuffers = (eglCopyBuffers_t) lib->findSymbol("eglCopyBuffers");
- s_egl.eglGetProcAddress = (eglGetProcAddress_t) lib->findSymbol("eglGetProcAddress");
-
-#define INIT_EGL_EXT_FUNC(name) \
- if (s_egl.eglGetProcAddress) s_egl.name = (name ## _t) s_egl.eglGetProcAddress(#name); \
- if (!s_egl.name || !s_egl.eglGetProcAddress) s_egl.name = (name ## _t) lib->findSymbol(#name)
-
- INIT_EGL_EXT_FUNC(eglLockSurfaceKHR);
- INIT_EGL_EXT_FUNC(eglUnlockSurfaceKHR);
- INIT_EGL_EXT_FUNC(eglCreateImageKHR);
- INIT_EGL_EXT_FUNC(eglDestroyImageKHR);
- INIT_EGL_EXT_FUNC(eglCreateSyncKHR);
- INIT_EGL_EXT_FUNC(eglDestroySyncKHR);
- INIT_EGL_EXT_FUNC(eglClientWaitSyncKHR);
- INIT_EGL_EXT_FUNC(eglSignalSyncKHR);
- INIT_EGL_EXT_FUNC(eglGetSyncAttribKHR);
- INIT_EGL_EXT_FUNC(eglSetSwapRectangleANDROID);
-
- return true;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h b/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h
deleted file mode 100644
index f74acba81..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h
+++ /dev/null
@@ -1,72 +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 _EGL_DISPATCH_H
-#define _EGL_DISPATCH_H
-
-#include "egl_proc.h"
-
-struct EGLDispatch {
- eglGetError_t eglGetError;
- eglGetDisplay_t eglGetDisplay;
- eglInitialize_t eglInitialize;
- eglTerminate_t eglTerminate;
- eglQueryString_t eglQueryString;
- eglGetConfigs_t eglGetConfigs;
- eglChooseConfig_t eglChooseConfig;
- eglGetConfigAttrib_t eglGetConfigAttrib;
- eglCreateWindowSurface_t eglCreateWindowSurface;
- eglCreatePbufferSurface_t eglCreatePbufferSurface;
- eglCreatePixmapSurface_t eglCreatePixmapSurface;
- eglDestroySurface_t eglDestroySurface;
- eglQuerySurface_t eglQuerySurface;
- eglBindAPI_t eglBindAPI;
- eglQueryAPI_t eglQueryAPI;
- eglWaitClient_t eglWaitClient;
- eglReleaseThread_t eglReleaseThread;
- eglCreatePbufferFromClientBuffer_t eglCreatePbufferFromClientBuffer;
- eglSurfaceAttrib_t eglSurfaceAttrib;
- eglBindTexImage_t eglBindTexImage;
- eglReleaseTexImage_t eglReleaseTexImage;
- eglSwapInterval_t eglSwapInterval;
- eglCreateContext_t eglCreateContext;
- eglDestroyContext_t eglDestroyContext;
- eglMakeCurrent_t eglMakeCurrent;
- eglGetCurrentContext_t eglGetCurrentContext;
- eglGetCurrentSurface_t eglGetCurrentSurface;
- eglGetCurrentDisplay_t eglGetCurrentDisplay;
- eglQueryContext_t eglQueryContext;
- eglWaitGL_t eglWaitGL;
- eglWaitNative_t eglWaitNative;
- eglSwapBuffers_t eglSwapBuffers;
- eglCopyBuffers_t eglCopyBuffers;
- eglGetProcAddress_t eglGetProcAddress;
- eglLockSurfaceKHR_t eglLockSurfaceKHR;
- eglUnlockSurfaceKHR_t eglUnlockSurfaceKHR;
- eglCreateImageKHR_t eglCreateImageKHR;
- eglDestroyImageKHR_t eglDestroyImageKHR;
- eglCreateSyncKHR_t eglCreateSyncKHR;
- eglDestroySyncKHR_t eglDestroySyncKHR;
- eglClientWaitSyncKHR_t eglClientWaitSyncKHR;
- eglSignalSyncKHR_t eglSignalSyncKHR;
- eglGetSyncAttribKHR_t eglGetSyncAttribKHR;
- eglSetSwapRectangleANDROID_t eglSetSwapRectangleANDROID;
-};
-
-bool init_egl_dispatch();
-
-extern EGLDispatch s_egl;
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp b/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp
deleted file mode 100644
index 08c71e8ba..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp
+++ /dev/null
@@ -1,259 +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.
-*/
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include <stdio.h>
-
-FBConfig **FBConfig::s_fbConfigs = NULL;
-int FBConfig::s_numConfigs = 0;
-
-const GLuint FBConfig::s_configAttribs[] = {
- EGL_DEPTH_SIZE, // must be first - see getDepthSize()
- EGL_STENCIL_SIZE, // must be second - see getStencilSize()
- EGL_RENDERABLE_TYPE,// must be third - see getRenderableType()
- EGL_SURFACE_TYPE, // must be fourth - see getSurfaceType()
- EGL_CONFIG_ID, // must be fifth - see chooseConfig()
- EGL_BUFFER_SIZE,
- EGL_ALPHA_SIZE,
- EGL_BLUE_SIZE,
- EGL_GREEN_SIZE,
- EGL_RED_SIZE,
- EGL_CONFIG_CAVEAT,
- EGL_LEVEL,
- EGL_MAX_PBUFFER_HEIGHT,
- EGL_MAX_PBUFFER_PIXELS,
- EGL_MAX_PBUFFER_WIDTH,
- EGL_NATIVE_RENDERABLE,
- EGL_NATIVE_VISUAL_ID,
- EGL_NATIVE_VISUAL_TYPE,
- EGL_SAMPLES,
- EGL_SAMPLE_BUFFERS,
- EGL_TRANSPARENT_TYPE,
- EGL_TRANSPARENT_BLUE_VALUE,
- EGL_TRANSPARENT_GREEN_VALUE,
- EGL_TRANSPARENT_RED_VALUE,
- EGL_BIND_TO_TEXTURE_RGB,
- EGL_BIND_TO_TEXTURE_RGBA,
- EGL_MIN_SWAP_INTERVAL,
- EGL_MAX_SWAP_INTERVAL,
- EGL_LUMINANCE_SIZE,
- EGL_ALPHA_MASK_SIZE,
- EGL_COLOR_BUFFER_TYPE,
- //EGL_MATCH_NATIVE_PIXMAP,
- EGL_CONFORMANT
-};
-
-const int FBConfig::s_numConfigAttribs = sizeof(FBConfig::s_configAttribs) / sizeof(GLuint);
-
-InitConfigStatus FBConfig::initConfigList(FrameBuffer *fb)
-{
- InitConfigStatus ret = INIT_CONFIG_FAILED;
-
- if (!fb) {
- return ret;
- }
-
- EGLDisplay dpy = fb->getDisplay();
-
- if (dpy == EGL_NO_DISPLAY) {
- fprintf(stderr,"Could not get EGL Display\n");
- return ret;
- }
-
- //
- // Query the set of configs in the EGL backend
- //
- EGLint nConfigs;
- if (!s_egl.eglGetConfigs(dpy, NULL, 0, &nConfigs)) {
- fprintf(stderr, "Could not get number of available configs\n");
- return ret;
- }
- EGLConfig *configs = new EGLConfig[nConfigs];
- s_egl.eglGetConfigs(dpy, configs, nConfigs, &nConfigs);
-
- //
- // copy the config attributes, filter out
- // configs we do not want to support.
- //
- int j = 0;
- s_fbConfigs = new FBConfig*[nConfigs];
- for (int i=0; i<nConfigs; i++) {
-
- //
- // filter out configs which does not support pbuffers.
- // we only support pbuffer configs since we use a pbuffer
- // handle to bind a guest created window object.
- //
- EGLint surfaceType;
- s_egl.eglGetConfigAttrib(dpy, configs[i],
- EGL_SURFACE_TYPE, &surfaceType);
- if (!(surfaceType & EGL_PBUFFER_BIT)) continue;
-
- //
- // Filter out not RGB configs
- //
- EGLint redSize, greenSize, blueSize;
- s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_RED_SIZE, &redSize);
- s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_BLUE_SIZE, &blueSize);
- s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_GREEN_SIZE, &greenSize);
- if (redSize==0 || greenSize==0 || blueSize==0) continue;
-
- s_fbConfigs[j++] = new FBConfig(dpy, configs[i]);
- }
- s_numConfigs = j;
-
- delete[] configs;
-
- return s_numConfigs > 0 ? INIT_CONFIG_PASSED : INIT_CONFIG_FAILED;
-}
-
-const FBConfig *FBConfig::get(int p_config)
-{
- if (p_config >= 0 && p_config < s_numConfigs) {
- return s_fbConfigs[p_config];
- }
- return NULL;
-}
-
-int FBConfig::getNumConfigs()
-{
- return s_numConfigs;
-}
-
-void FBConfig::packConfigsInfo(GLuint *buffer)
-{
- memcpy(buffer, s_configAttribs, s_numConfigAttribs * sizeof(GLuint));
- for (int i=0; i<s_numConfigs; i++) {
- memcpy(buffer+(i+1)*s_numConfigAttribs,
- s_fbConfigs[i]->m_attribValues,
- s_numConfigAttribs * sizeof(GLuint));
- }
-}
-
-int FBConfig::chooseConfig(FrameBuffer *fb, EGLint * attribs, uint32_t * configs, uint32_t configs_size)
-{
- EGLDisplay dpy = fb->getDisplay();
- int ret = 0;
-
- if (dpy == EGL_NO_DISPLAY) {
- fprintf(stderr,"Could not get EGL Display\n");
- return ret;
- }
- //
- // Query the num of configs in the EGL backend
- //
- EGLint nConfigs;
- if (!s_egl.eglGetConfigs(dpy, NULL, 0, &nConfigs)) {
- fprintf(stderr, "Could not get number of available configs\n");
- return ret;
- }
- //
- // Query the max matching configs in the backend
- //
- EGLConfig *matchedConfigs = new EGLConfig[nConfigs];
-
- //
- //Until we have EGLImage implementation, we force pbuf configs
- //
- bool needToAddPbufAttr = true;
- int attribCnt = 0;
- EGLint * attrib_p = attribs;
- if (attribs) {
- while (attrib_p[0] != EGL_NONE) {
- if (attrib_p[0] == EGL_SURFACE_TYPE) {
- attrib_p[1] = EGL_PBUFFER_BIT; //replace whatever was there before
- needToAddPbufAttr = false;
- }
- attrib_p += 2;
- attribCnt += 2;
- }
- }
- EGLint * newAttribs = new EGLint[attribCnt + 1 + ((needToAddPbufAttr) ? 2 : 0)];
- attrib_p = newAttribs;
- if (needToAddPbufAttr) {
- *(attrib_p++) = EGL_SURFACE_TYPE;
- *(attrib_p++) = EGL_PBUFFER_BIT;
- }
- memcpy(attrib_p, attribs, attribCnt*sizeof(EGLint));
- attrib_p += attribCnt;
- *attrib_p = EGL_NONE;
-
-#if 0
- if (newAttribs) {
- EGLint * attrib_p = newAttribs;
- while (attrib_p[0] != EGL_NONE) {
- DBG("attr: 0x%x %d, ", attrib_p[0], attrib_p[1]);
- attrib_p += 2;
- }
- }
-#endif
-
- if (!s_egl.eglChooseConfig(dpy, newAttribs, matchedConfigs, nConfigs, &nConfigs)) {
- nConfigs = 0;
- }
-
- delete[] newAttribs;
-
- //
- // From all matchedConfigs we need only config_size FBConfigs, so we intersect both lists compating the CONFIG_ID attribute
- //
- uint32_t nVerifiedCfgs = 0;
- for (int matchedIdx=0; matchedIdx<nConfigs; matchedIdx++) {
- if ((configs != NULL) && (configs_size > 0) && (nVerifiedCfgs >= configs_size)) break; //We have enouhgt configs
- int sCfgId;
- s_egl.eglGetConfigAttrib(dpy, matchedConfigs[matchedIdx], EGL_CONFIG_ID, &sCfgId);
- for (int fbIdx=0; fbIdx<s_numConfigs; fbIdx++) {
- int dCfgId = s_fbConfigs[fbIdx]->m_attribValues[4]; //CONFIG_ID
- if (sCfgId == dCfgId) {
- //This config matches the requested attributes and filtered into fbConfigs, so we're happy with it
- if (configs && nVerifiedCfgs < configs_size) {
- configs[nVerifiedCfgs] = fbIdx;
- }
- nVerifiedCfgs++;
- break;
- }
- }
- }
-
- delete[] matchedConfigs;
-
- return nVerifiedCfgs;
-}
-
-FBConfig::FBConfig(EGLDisplay p_eglDpy, EGLConfig p_eglCfg)
-{
- m_eglConfig = p_eglCfg;
- m_attribValues = new GLint[s_numConfigAttribs];
- for (int i=0; i<s_numConfigAttribs; i++) {
- m_attribValues[i] = 0;
- s_egl.eglGetConfigAttrib(p_eglDpy, p_eglCfg, s_configAttribs[i], &m_attribValues[i]);
-
- //
- // All exported configs supports android native window rendering
- //
- if (s_configAttribs[i] == EGL_SURFACE_TYPE) {
- m_attribValues[i] |= EGL_WINDOW_BIT;
- }
- }
-}
-
-FBConfig::~FBConfig()
-{
- if (m_attribValues) {
- delete[] m_attribValues;
- }
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/FBConfig.h b/emulator/opengl/host/libs/libOpenglRender/FBConfig.h
deleted file mode 100644
index 638854958..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/FBConfig.h
+++ /dev/null
@@ -1,60 +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_FBCONFIG_H
-#define _LIBRENDER_FBCONFIG_H
-
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-class FrameBuffer;
-
-enum InitConfigStatus {
- INIT_CONFIG_FAILED = 0,
- INIT_CONFIG_PASSED = 1
-};
-
-class FBConfig
-{
-public:
- static InitConfigStatus initConfigList(FrameBuffer *fb);
- static const FBConfig *get(int p_config);
- static int getNumConfigs();
- static int getNumAttribs() { return s_numConfigAttribs; }
- static void packConfigsInfo(GLuint *buffer);
- static int chooseConfig(FrameBuffer *fb, EGLint * attribs, uint32_t * configs, uint32_t configs_size);
- ~FBConfig();
-
- EGLConfig getEGLConfig() const { return m_eglConfig; }
- GLuint getDepthSize() const { return (m_attribValues ? m_attribValues[0] : 0); }
- GLuint getStencilSize() const { return (m_attribValues ? m_attribValues[1] : 0); }
- GLuint getRenderableType() const { return (m_attribValues ? m_attribValues[2] : 0); }
- GLuint getSurfaceType() const { return (m_attribValues ? m_attribValues[3] : 0); }
-
-private:
- FBConfig(EGLDisplay p_eglDpy, EGLConfig p_eglCfg);
-
-private:
- static FBConfig **s_fbConfigs;
- static int s_numConfigs;
- static const int s_numConfigAttribs;
- static const GLuint s_configAttribs[];
-
-private:
- EGLConfig m_eglConfig;
- GLint *m_attribValues;
-};
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp b/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp
deleted file mode 100644
index e7a79602c..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp
+++ /dev/null
@@ -1,897 +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.
-*/
-
-#include "FrameBuffer.h"
-#include "NativeSubWindow.h"
-#include "FBConfig.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "ThreadInfo.h"
-#include "TimeUtils.h"
-#include <stdio.h>
-
-FrameBuffer *FrameBuffer::s_theFrameBuffer = NULL;
-HandleType FrameBuffer::s_nextHandle = 0;
-
-#ifdef WITH_GLES2
-static char* getGLES2ExtensionString(EGLDisplay p_dpy)
-{
- EGLConfig config;
- EGLSurface surface;
-
- GLint configAttribs[] = {
- EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
- EGL_NONE
- };
-
- int n;
- if (!s_egl.eglChooseConfig(p_dpy, configAttribs,
- &config, 1, &n)) {
- return NULL;
- }
-
- EGLint pbufAttribs[] = {
- EGL_WIDTH, 1,
- EGL_HEIGHT, 1,
- EGL_NONE
- };
-
- surface = s_egl.eglCreatePbufferSurface(p_dpy, config, pbufAttribs);
- if (surface == EGL_NO_SURFACE) {
- return NULL;
- }
-
- GLint gl2ContextAttribs[] = {
- EGL_CONTEXT_CLIENT_VERSION, 2,
- EGL_NONE
- };
-
- EGLContext ctx = s_egl.eglCreateContext(p_dpy, config,
- EGL_NO_CONTEXT,
- gl2ContextAttribs);
- if (ctx == EGL_NO_CONTEXT) {
- s_egl.eglDestroySurface(p_dpy, surface);
- return NULL;
- }
-
- if (!s_egl.eglMakeCurrent(p_dpy, surface, surface, ctx)) {
- s_egl.eglDestroySurface(p_dpy, surface);
- s_egl.eglDestroyContext(p_dpy, ctx);
- return NULL;
- }
-
- // the string pointer may become invalid when the context is destroyed
- const char* s = (const char*)s_gl2.glGetString(GL_EXTENSIONS);
- char* extString = strdup(s ? s : "");
-
- s_egl.eglMakeCurrent(p_dpy, NULL, NULL, NULL);
- s_egl.eglDestroyContext(p_dpy, ctx);
- s_egl.eglDestroySurface(p_dpy, surface);
-
- return extString;
-}
-#endif
-
-void FrameBuffer::finalize(){
- if(s_theFrameBuffer){
- s_theFrameBuffer->removeSubWindow();
- s_theFrameBuffer->m_colorbuffers.clear();
- s_theFrameBuffer->m_windows.clear();
- s_theFrameBuffer->m_contexts.clear();
- s_egl.eglMakeCurrent(s_theFrameBuffer->m_eglDisplay, NULL, NULL, NULL);
- s_egl.eglDestroyContext(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_eglContext);
- s_egl.eglDestroyContext(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_pbufContext);
- s_egl.eglDestroySurface(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_pbufSurface);
- s_theFrameBuffer = NULL;
- }
-}
-
-bool FrameBuffer::initialize(int width, int height)
-{
- if (s_theFrameBuffer != NULL) {
- return true;
- }
-
- //
- // allocate space for the FrameBuffer object
- //
- FrameBuffer *fb = new FrameBuffer(width, height);
- if (!fb) {
- ERR("Failed to create fb\n");
- return false;
- }
-
-#ifdef WITH_GLES2
- //
- // Try to load GLES2 Plugin, not mandatory
- //
- if (getenv("ANDROID_NO_GLES2")) {
- fb->m_caps.hasGL2 = false;
- }
- else {
- fb->m_caps.hasGL2 = s_gl2_enabled;
- }
-#else
- fb->m_caps.hasGL2 = false;
-#endif
-
- //
- // Initialize backend EGL display
- //
- fb->m_eglDisplay = s_egl.eglGetDisplay(EGL_DEFAULT_DISPLAY);
- if (fb->m_eglDisplay == EGL_NO_DISPLAY) {
- ERR("Failed to Initialize backend EGL display\n");
- delete fb;
- return false;
- }
-
- if (!s_egl.eglInitialize(fb->m_eglDisplay, &fb->m_caps.eglMajor, &fb->m_caps.eglMinor)) {
- ERR("Failed to eglInitialize\n");
- delete fb;
- return false;
- }
-
- DBG("egl: %d %d\n", fb->m_caps.eglMajor, fb->m_caps.eglMinor);
- s_egl.eglBindAPI(EGL_OPENGL_ES_API);
-
- //
- // if GLES2 plugin has loaded - try to make GLES2 context and
- // get GLES2 extension string
- //
- char* gl2Extensions = NULL;
-#ifdef WITH_GLES2
- if (fb->m_caps.hasGL2) {
- gl2Extensions = getGLES2ExtensionString(fb->m_eglDisplay);
- if (!gl2Extensions) {
- // Could not create GLES2 context - drop GL2 capability
- fb->m_caps.hasGL2 = false;
- }
- }
-#endif
-
- //
- // Create EGL context for framebuffer post rendering.
- //
-#if 0
- GLint configAttribs[] = {
- EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT,
- EGL_NONE
- };
-#else
- GLint configAttribs[] = {
- EGL_RED_SIZE, 1,
- EGL_GREEN_SIZE, 1,
- EGL_BLUE_SIZE, 1,
- EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
- EGL_NONE
- };
-#endif
-
- int n;
- if (!s_egl.eglChooseConfig(fb->m_eglDisplay, configAttribs,
- &fb->m_eglConfig, 1, &n)) {
- ERR("Failed on eglChooseConfig\n");
- free(gl2Extensions);
- delete fb;
- return false;
- }
-
- GLint glContextAttribs[] = {
- EGL_CONTEXT_CLIENT_VERSION, 1,
- EGL_NONE
- };
-
- fb->m_eglContext = s_egl.eglCreateContext(fb->m_eglDisplay, fb->m_eglConfig,
- EGL_NO_CONTEXT,
- glContextAttribs);
- if (fb->m_eglContext == EGL_NO_CONTEXT) {
- printf("Failed to create Context 0x%x\n", s_egl.eglGetError());
- free(gl2Extensions);
- delete fb;
- return false;
- }
-
- //
- // Create another context which shares with the eglContext to be used
- // when we bind the pbuffer. That prevent switching drawable binding
- // back and forth on framebuffer context.
- // The main purpose of it is to solve a "blanking" behaviour we see on
- // on Mac platform when switching binded drawable for a context however
- // it is more efficient on other platforms as well.
- //
- fb->m_pbufContext = s_egl.eglCreateContext(fb->m_eglDisplay, fb->m_eglConfig,
- fb->m_eglContext,
- glContextAttribs);
- if (fb->m_pbufContext == EGL_NO_CONTEXT) {
- printf("Failed to create Pbuffer Context 0x%x\n", s_egl.eglGetError());
- free(gl2Extensions);
- delete fb;
- return false;
- }
-
- //
- // create a 1x1 pbuffer surface which will be used for binding
- // the FB context.
- // The FB output will go to a subwindow, if one exist.
- //
- EGLint pbufAttribs[] = {
- EGL_WIDTH, 1,
- EGL_HEIGHT, 1,
- EGL_NONE
- };
-
- fb->m_pbufSurface = s_egl.eglCreatePbufferSurface(fb->m_eglDisplay,
- fb->m_eglConfig,
- pbufAttribs);
- if (fb->m_pbufSurface == EGL_NO_SURFACE) {
- printf("Failed to create pbuf surface for FB 0x%x\n", s_egl.eglGetError());
- free(gl2Extensions);
- delete fb;
- return false;
- }
-
- // Make the context current
- if (!fb->bind_locked()) {
- ERR("Failed to make current\n");
- free(gl2Extensions);
- delete fb;
- return false;
- }
-
- //
- // Initilize framebuffer capabilities
- //
- const char *glExtensions = (const char *)s_gl.glGetString(GL_EXTENSIONS);
- bool has_gl_oes_image = false;
- if (glExtensions) {
- has_gl_oes_image = strstr(glExtensions, "GL_OES_EGL_image") != NULL;
- }
-
- if (fb->m_caps.hasGL2 && has_gl_oes_image) {
- has_gl_oes_image &= strstr(gl2Extensions, "GL_OES_EGL_image") != NULL;
- }
- free(gl2Extensions);
- gl2Extensions = NULL;
-
- const char *eglExtensions = s_egl.eglQueryString(fb->m_eglDisplay,
- EGL_EXTENSIONS);
-
- if (eglExtensions && has_gl_oes_image) {
- fb->m_caps.has_eglimage_texture_2d =
- strstr(eglExtensions, "EGL_KHR_gl_texture_2D_image") != NULL;
- fb->m_caps.has_eglimage_renderbuffer =
- strstr(eglExtensions, "EGL_KHR_gl_renderbuffer_image") != NULL;
- }
- else {
- fb->m_caps.has_eglimage_texture_2d = false;
- fb->m_caps.has_eglimage_renderbuffer = false;
- }
-
- //
- // Fail initialization if not all of the following extensions
- // exist:
- // EGL_KHR_gl_texture_2d_image
- // GL_OES_EGL_IMAGE (by both GLES implementations [1 and 2])
- //
- if (!fb->m_caps.has_eglimage_texture_2d) {
- ERR("Failed: Missing egl_image related extension(s)\n");
- delete fb;
- return false;
- }
-
- //
- // Initialize set of configs
- //
- InitConfigStatus configStatus = FBConfig::initConfigList(fb);
- if (configStatus == INIT_CONFIG_FAILED) {
- ERR("Failed: Initialize set of configs\n");
- delete fb;
- return false;
- }
-
- //
- // Check that we have config for each GLES and GLES2
- //
- int nConfigs = FBConfig::getNumConfigs();
- int nGLConfigs = 0;
- int nGL2Configs = 0;
- for (int i=0; i<nConfigs; i++) {
- GLint rtype = FBConfig::get(i)->getRenderableType();
- if (0 != (rtype & EGL_OPENGL_ES_BIT)) {
- nGLConfigs++;
- }
- if (0 != (rtype & EGL_OPENGL_ES2_BIT)) {
- nGL2Configs++;
- }
- }
-
- //
- // Fail initialization if no GLES configs exist
- //
- if (nGLConfigs == 0) {
- delete fb;
- return false;
- }
-
- //
- // If no GLES2 configs exist - not GLES2 capability
- //
- if (nGL2Configs == 0) {
- fb->m_caps.hasGL2 = false;
- }
-
- //
- // Initialize some GL state in the pbuffer context
- //
- fb->initGLState();
-
- //
- // Cache the GL strings so we don't have to think about threading or
- // current-context when asked for them.
- //
- fb->m_glVendor = (const char*)s_gl.glGetString(GL_VENDOR);
- fb->m_glRenderer = (const char*)s_gl.glGetString(GL_RENDERER);
- fb->m_glVersion = (const char*)s_gl.glGetString(GL_VERSION);
-
- // release the FB context
- fb->unbind_locked();
-
- //
- // Keep the singleton framebuffer pointer
- //
- s_theFrameBuffer = fb;
- return true;
-}
-
-FrameBuffer::FrameBuffer(int p_width, int p_height) :
- m_width(p_width),
- m_height(p_height),
- m_eglDisplay(EGL_NO_DISPLAY),
- m_eglSurface(EGL_NO_SURFACE),
- m_eglContext(EGL_NO_CONTEXT),
- m_pbufContext(EGL_NO_CONTEXT),
- m_prevContext(EGL_NO_CONTEXT),
- m_prevReadSurf(EGL_NO_SURFACE),
- m_prevDrawSurf(EGL_NO_SURFACE),
- m_subWin((EGLNativeWindowType)0),
- m_subWinDisplay(NULL),
- m_lastPostedColorBuffer(0),
- m_zRot(0.0f),
- m_eglContextInitialized(false),
- m_statsNumFrames(0),
- m_statsStartTime(0LL),
- m_onPost(NULL),
- m_onPostContext(NULL),
- m_fbImage(NULL),
- m_glVendor(NULL),
- m_glRenderer(NULL),
- m_glVersion(NULL)
-{
- m_fpsStats = getenv("SHOW_FPS_STATS") != NULL;
-}
-
-FrameBuffer::~FrameBuffer()
-{
- free(m_fbImage);
-}
-
-void FrameBuffer::setPostCallback(OnPostFn onPost, void* onPostContext)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- m_onPost = onPost;
- m_onPostContext = onPostContext;
- if (m_onPost && !m_fbImage) {
- m_fbImage = (unsigned char*)malloc(4 * m_width * m_height);
- if (!m_fbImage) {
- ERR("out of memory, cancelling OnPost callback");
- m_onPost = NULL;
- m_onPostContext = NULL;
- return;
- }
- }
-}
-
-bool FrameBuffer::setupSubWindow(FBNativeWindowType p_window,
- int p_x, int p_y,
- int p_width, int p_height, float zRot)
-{
- bool success = false;
-
- if (s_theFrameBuffer) {
- s_theFrameBuffer->m_lock.lock();
- FrameBuffer *fb = s_theFrameBuffer;
- if (!fb->m_subWin) {
-
- // create native subwindow for FB display output
- fb->m_subWin = createSubWindow(p_window,
- &fb->m_subWinDisplay,
- p_x,p_y,p_width,p_height);
- if (fb->m_subWin) {
- fb->m_nativeWindow = p_window;
-
- // create EGLSurface from the generated subwindow
- fb->m_eglSurface = s_egl.eglCreateWindowSurface(fb->m_eglDisplay,
- fb->m_eglConfig,
- fb->m_subWin,
- NULL);
-
- if (fb->m_eglSurface == EGL_NO_SURFACE) {
- ERR("Failed to create surface\n");
- destroySubWindow(fb->m_subWinDisplay, fb->m_subWin);
- fb->m_subWin = (EGLNativeWindowType)0;
- }
- else if (fb->bindSubwin_locked()) {
- // Subwin creation was successfull,
- // update viewport and z rotation and draw
- // the last posted color buffer.
- s_gl.glViewport(0, 0, p_width, p_height);
- fb->m_zRot = zRot;
- fb->post( fb->m_lastPostedColorBuffer, false );
- fb->unbind_locked();
- success = true;
- }
- }
- }
- s_theFrameBuffer->m_lock.unlock();
- }
-
- return success;
-}
-
-bool FrameBuffer::removeSubWindow()
-{
- bool removed = false;
- if (s_theFrameBuffer) {
- s_theFrameBuffer->m_lock.lock();
- if (s_theFrameBuffer->m_subWin) {
- s_egl.eglMakeCurrent(s_theFrameBuffer->m_eglDisplay, NULL, NULL, NULL);
- s_egl.eglDestroySurface(s_theFrameBuffer->m_eglDisplay,
- s_theFrameBuffer->m_eglSurface);
- destroySubWindow(s_theFrameBuffer->m_subWinDisplay,
- s_theFrameBuffer->m_subWin);
-
- s_theFrameBuffer->m_eglSurface = EGL_NO_SURFACE;
- s_theFrameBuffer->m_subWin = (EGLNativeWindowType)0;
- removed = true;
- }
- s_theFrameBuffer->m_lock.unlock();
- }
- return removed;
-}
-
-HandleType FrameBuffer::genHandle()
-{
- HandleType id;
- do {
- id = ++s_nextHandle;
- } while( id == 0 ||
- m_contexts.find(id) != m_contexts.end() ||
- m_windows.find(id) != m_windows.end() );
-
- return id;
-}
-
-HandleType FrameBuffer::createColorBuffer(int p_width, int p_height,
- GLenum p_internalFormat)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- HandleType ret = 0;
-
- ColorBufferPtr cb( ColorBuffer::create(p_width, p_height, p_internalFormat) );
- if (cb.Ptr() != NULL) {
- ret = genHandle();
- m_colorbuffers[ret].cb = cb;
- m_colorbuffers[ret].refcount = 1;
- }
- return ret;
-}
-
-HandleType FrameBuffer::createRenderContext(int p_config, HandleType p_share,
- bool p_isGL2)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- HandleType ret = 0;
-
- RenderContextPtr share(NULL);
- if (p_share != 0) {
- RenderContextMap::iterator s( m_contexts.find(p_share) );
- if (s == m_contexts.end()) {
- return 0;
- }
- share = (*s).second;
- }
-
- RenderContextPtr rctx( RenderContext::create(p_config, share, p_isGL2) );
- if (rctx.Ptr() != NULL) {
- ret = genHandle();
- m_contexts[ret] = rctx;
- }
- return ret;
-}
-
-HandleType FrameBuffer::createWindowSurface(int p_config, int p_width, int p_height)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- HandleType ret = 0;
- WindowSurfacePtr win( WindowSurface::create(p_config, p_width, p_height) );
- if (win.Ptr() != NULL) {
- ret = genHandle();
- m_windows[ret] = win;
- }
-
- return ret;
-}
-
-void FrameBuffer::DestroyRenderContext(HandleType p_context)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- m_contexts.erase(p_context);
-}
-
-void FrameBuffer::DestroyWindowSurface(HandleType p_surface)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- m_windows.erase(p_surface);
-}
-
-int FrameBuffer::openColorBuffer(HandleType p_colorbuffer)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- ColorBufferMap::iterator c(m_colorbuffers.find(p_colorbuffer));
- if (c == m_colorbuffers.end()) {
- // bad colorbuffer handle
- ERR("FB: openColorBuffer cb handle %#x not found\n", p_colorbuffer);
- return -1;
- }
- (*c).second.refcount++;
- return 0;
-}
-
-void FrameBuffer::closeColorBuffer(HandleType p_colorbuffer)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
- ColorBufferMap::iterator c(m_colorbuffers.find(p_colorbuffer));
- if (c == m_colorbuffers.end()) {
- ERR("FB: closeColorBuffer cb handle %#x not found\n", p_colorbuffer);
- // bad colorbuffer handle
- return;
- }
- if (--(*c).second.refcount == 0) {
- m_colorbuffers.erase(c);
- }
-}
-
-bool FrameBuffer::flushWindowSurfaceColorBuffer(HandleType p_surface)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- WindowSurfaceMap::iterator w( m_windows.find(p_surface) );
- if (w == m_windows.end()) {
- ERR("FB::flushWindowSurfaceColorBuffer: window handle %#x not found\n", p_surface);
- // bad surface handle
- return false;
- }
-
- return (*w).second->flushColorBuffer();
-}
-
-bool FrameBuffer::setWindowSurfaceColorBuffer(HandleType p_surface,
- HandleType p_colorbuffer)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- WindowSurfaceMap::iterator w( m_windows.find(p_surface) );
- if (w == m_windows.end()) {
- // bad surface handle
- ERR("%s: bad window surface handle %#x\n", __FUNCTION__, p_surface);
- return false;
- }
-
- ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
- if (c == m_colorbuffers.end()) {
- ERR("%s: bad color buffer handle %#x\n", __FUNCTION__, p_colorbuffer);
- // bad colorbuffer handle
- return false;
- }
-
- (*w).second->setColorBuffer( (*c).second.cb );
-
- return true;
-}
-
-bool FrameBuffer::updateColorBuffer(HandleType p_colorbuffer,
- int x, int y, int width, int height,
- GLenum format, GLenum type, void *pixels)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
- if (c == m_colorbuffers.end()) {
- // bad colorbuffer handle
- return false;
- }
-
- (*c).second.cb->subUpdate(x, y, width, height, format, type, pixels);
-
- return true;
-}
-
-bool FrameBuffer::bindColorBufferToTexture(HandleType p_colorbuffer)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
- if (c == m_colorbuffers.end()) {
- // bad colorbuffer handle
- return false;
- }
-
- return (*c).second.cb->bindToTexture();
-}
-
-bool FrameBuffer::bindColorBufferToRenderbuffer(HandleType p_colorbuffer)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
- if (c == m_colorbuffers.end()) {
- // bad colorbuffer handle
- return false;
- }
-
- return (*c).second.cb->bindToRenderbuffer();
-}
-
-bool FrameBuffer::bindContext(HandleType p_context,
- HandleType p_drawSurface,
- HandleType p_readSurface)
-{
- emugl::Mutex::AutoLock mutex(m_lock);
-
- WindowSurfacePtr draw(NULL), read(NULL);
- RenderContextPtr ctx(NULL);
-
- //
- // if this is not an unbind operation - make sure all handles are good
- //
- if (p_context || p_drawSurface || p_readSurface) {
- RenderContextMap::iterator r( m_contexts.find(p_context) );
- if (r == m_contexts.end()) {
- // bad context handle
- return false;
- }
-
- ctx = (*r).second;
- WindowSurfaceMap::iterator w( m_windows.find(p_drawSurface) );
- if (w == m_windows.end()) {
- // bad surface handle
- return false;
- }
- draw = (*w).second;
-
- if (p_readSurface != p_drawSurface) {
- WindowSurfaceMap::iterator w( m_windows.find(p_readSurface) );
- if (w == m_windows.end()) {
- // bad surface handle
- return false;
- }
- read = (*w).second;
- }
- else {
- read = draw;
- }
- }
-
- if (!s_egl.eglMakeCurrent(m_eglDisplay,
- draw ? draw->getEGLSurface() : EGL_NO_SURFACE,
- read ? read->getEGLSurface() : EGL_NO_SURFACE,
- ctx ? ctx->getEGLContext() : EGL_NO_CONTEXT)) {
- ERR("eglMakeCurrent failed\n");
- return false;
- }
-
- //
- // Bind the surface(s) to the context
- //
- RenderThreadInfo *tinfo = RenderThreadInfo::get();
- WindowSurfacePtr bindDraw, bindRead;
- if (draw.Ptr() == NULL && read.Ptr() == NULL) {
- // Unbind the current read and draw surfaces from the context
- bindDraw = tinfo->currDrawSurf;
- bindRead = tinfo->currReadSurf;
- } else {
- bindDraw = draw;
- bindRead = read;
- }
-
- if (bindDraw.Ptr() != NULL && bindRead.Ptr() != NULL) {
- if (bindDraw.Ptr() != bindRead.Ptr()) {
- bindDraw->bind(ctx, SURFACE_BIND_DRAW);
- bindRead->bind(ctx, SURFACE_BIND_READ);
- }
- else {
- bindDraw->bind(ctx, SURFACE_BIND_READDRAW);
- }
- }
-
- //
- // update thread info with current bound context
- //
- tinfo->currContext = ctx;
- tinfo->currDrawSurf = draw;
- tinfo->currReadSurf = read;
- if (ctx) {
- if (ctx->isGL2()) tinfo->m_gl2Dec.setContextData(&ctx->decoderContextData());
- else tinfo->m_glDec.setContextData(&ctx->decoderContextData());
- }
- else {
- tinfo->m_glDec.setContextData(NULL);
- tinfo->m_gl2Dec.setContextData(NULL);
- }
- return true;
-}
-
-//
-// The framebuffer lock should be held when calling this function !
-//
-bool FrameBuffer::bind_locked()
-{
- EGLContext prevContext = s_egl.eglGetCurrentContext();
- EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
- EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-
- if (!s_egl.eglMakeCurrent(m_eglDisplay, m_pbufSurface,
- m_pbufSurface, m_pbufContext)) {
- ERR("eglMakeCurrent failed\n");
- return false;
- }
-
- m_prevContext = prevContext;
- m_prevReadSurf = prevReadSurf;
- m_prevDrawSurf = prevDrawSurf;
- return true;
-}
-
-bool FrameBuffer::bindSubwin_locked()
-{
- EGLContext prevContext = s_egl.eglGetCurrentContext();
- EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
- EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-
- if (!s_egl.eglMakeCurrent(m_eglDisplay, m_eglSurface,
- m_eglSurface, m_eglContext)) {
- ERR("eglMakeCurrent failed\n");
- return false;
- }
-
- //
- // initialize GL state in eglContext if not yet initilaized
- //
- if (!m_eglContextInitialized) {
- initGLState();
- m_eglContextInitialized = true;
- }
-
- m_prevContext = prevContext;
- m_prevReadSurf = prevReadSurf;
- m_prevDrawSurf = prevDrawSurf;
- return true;
-}
-
-bool FrameBuffer::unbind_locked()
-{
- if (!s_egl.eglMakeCurrent(m_eglDisplay, m_prevDrawSurf,
- m_prevReadSurf, m_prevContext)) {
- return false;
- }
-
- m_prevContext = EGL_NO_CONTEXT;
- m_prevReadSurf = EGL_NO_SURFACE;
- m_prevDrawSurf = EGL_NO_SURFACE;
- return true;
-}
-
-bool FrameBuffer::post(HandleType p_colorbuffer, bool needLock)
-{
- if (needLock) m_lock.lock();
- bool ret = false;
-
- ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
- if (c != m_colorbuffers.end()) {
-
- m_lastPostedColorBuffer = p_colorbuffer;
- if (!m_subWin) {
- // no subwindow created for the FB output
- // cannot post the colorbuffer
- if (needLock) m_lock.unlock();
- return ret;
- }
-
-
- // bind the subwindow eglSurface
- if (!bindSubwin_locked()) {
- ERR("FrameBuffer::post eglMakeCurrent failed\n");
- if (needLock) m_lock.unlock();
- return false;
- }
-
- //
- // render the color buffer to the window
- //
- s_gl.glPushMatrix();
- s_gl.glRotatef(m_zRot, 0.0f, 0.0f, 1.0f);
- if (m_zRot != 0.0f) {
- s_gl.glClear(GL_COLOR_BUFFER_BIT);
- }
- ret = (*c).second.cb->post();
- s_gl.glPopMatrix();
-
- if (ret) {
- //
- // output FPS statistics
- //
- if (m_fpsStats) {
- long long currTime = GetCurrentTimeMS();
- m_statsNumFrames++;
- if (currTime - m_statsStartTime >= 1000) {
- float dt = (float)(currTime - m_statsStartTime) / 1000.0f;
- printf("FPS: %5.3f\n", (float)m_statsNumFrames / dt);
- m_statsStartTime = currTime;
- m_statsNumFrames = 0;
- }
- }
-
- s_egl.eglSwapBuffers(m_eglDisplay, m_eglSurface);
- }
-
- // restore previous binding
- unbind_locked();
-
- //
- // Send framebuffer (without FPS overlay) to callback
- //
- if (m_onPost) {
- (*c).second.cb->readback(m_fbImage);
- m_onPost(m_onPostContext, m_width, m_height, -1,
- GL_RGBA, GL_UNSIGNED_BYTE, m_fbImage);
- }
-
- }
-
- if (needLock) m_lock.unlock();
- return ret;
-}
-
-bool FrameBuffer::repost()
-{
- if (m_lastPostedColorBuffer) {
- return post( m_lastPostedColorBuffer );
- }
- return false;
-}
-
-void FrameBuffer::initGLState()
-{
- s_gl.glMatrixMode(GL_PROJECTION);
- s_gl.glLoadIdentity();
- s_gl.glOrthof(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
- s_gl.glMatrixMode(GL_MODELVIEW);
- s_gl.glLoadIdentity();
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h b/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h
deleted file mode 100644
index f8683b2b7..000000000
--- 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
diff --git a/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp b/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp
deleted file mode 100644
index 8c51a4e78..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp
+++ /dev/null
@@ -1,65 +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.
-*/
-#ifdef WITH_GLES2
-#include "GL2Dispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "emugl/common/shared_library.h"
-
-gl2_decoder_context_t s_gl2;
-int s_gl2_enabled;
-
-static emugl::SharedLibrary *s_gles2_lib = NULL;
-
-#define DEFAULT_GLES_V2_LIB EMUGL_LIBNAME("GLES_V2_translator")
-
-//
-// This function is called only once during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-bool init_gl2_dispatch()
-{
- const char *libName = getenv("ANDROID_GLESv2_LIB");
- if (!libName) libName = DEFAULT_GLES_V2_LIB;
-
- //
- // Load the GLES library
- //
- s_gles2_lib = emugl::SharedLibrary::open(libName);
- if (!s_gles2_lib) return false;
-
- //
- // init the GLES dispatch table
- //
- s_gl2.initDispatchByName( gl2_dispatch_get_proc_func, NULL );
- s_gl2_enabled = true;
- return true;
-}
-
-//
-// This function is called only during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-void *gl2_dispatch_get_proc_func(const char *name, void *userData)
-{
- if (!s_gles2_lib) {
- return NULL;
- }
- return (void *)s_gles2_lib->findSymbol(name);
-}
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h b/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h
deleted file mode 100644
index 89f36516f..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h
+++ /dev/null
@@ -1,30 +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 _GLES2_DISPATCH_H
-#define _GLES2_DISPATCH_H
-
-#ifdef WITH_GLES2
-
-#include "gl2_dec.h"
-
-bool init_gl2_dispatch();
-void *gl2_dispatch_get_proc_func(const char *name, void *userData);
-
-extern gl2_decoder_context_t s_gl2;
-extern int s_gl2_enabled;
-
-#endif
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp b/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp
deleted file mode 100644
index c127dc36e..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp
+++ /dev/null
@@ -1,326 +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.
-*/
-#include "GLDispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "emugl/common/shared_library.h"
-
-GLDispatch s_gl;
-
-static emugl::SharedLibrary *s_gles_lib = NULL;
-
-//
-// This function is called only once during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-
-#define DEFAULT_GLES_CM_LIB EMUGL_LIBNAME("GLES_CM_translator")
-
-bool init_gl_dispatch()
-{
- const char *libName = getenv("ANDROID_GLESv1_LIB");
- if (!libName) libName = DEFAULT_GLES_CM_LIB;
-
- s_gles_lib = emugl::SharedLibrary::open(libName);
- if (!s_gles_lib) return false;
-
- s_gl.glAlphaFunc = (glAlphaFunc_t) s_gles_lib->findSymbol("glAlphaFunc");
- s_gl.glClearColor = (glClearColor_t) s_gles_lib->findSymbol("glClearColor");
- s_gl.glClearDepthf = (glClearDepthf_t) s_gles_lib->findSymbol("glClearDepthf");
- s_gl.glClipPlanef = (glClipPlanef_t) s_gles_lib->findSymbol("glClipPlanef");
- s_gl.glColor4f = (glColor4f_t) s_gles_lib->findSymbol("glColor4f");
- s_gl.glDepthRangef = (glDepthRangef_t) s_gles_lib->findSymbol("glDepthRangef");
- s_gl.glFogf = (glFogf_t) s_gles_lib->findSymbol("glFogf");
- s_gl.glFogfv = (glFogfv_t) s_gles_lib->findSymbol("glFogfv");
- s_gl.glFrustumf = (glFrustumf_t) s_gles_lib->findSymbol("glFrustumf");
- s_gl.glGetClipPlanef = (glGetClipPlanef_t) s_gles_lib->findSymbol("glGetClipPlanef");
- s_gl.glGetFloatv = (glGetFloatv_t) s_gles_lib->findSymbol("glGetFloatv");
- s_gl.glGetLightfv = (glGetLightfv_t) s_gles_lib->findSymbol("glGetLightfv");
- s_gl.glGetMaterialfv = (glGetMaterialfv_t) s_gles_lib->findSymbol("glGetMaterialfv");
- s_gl.glGetTexEnvfv = (glGetTexEnvfv_t) s_gles_lib->findSymbol("glGetTexEnvfv");
- s_gl.glGetTexParameterfv = (glGetTexParameterfv_t) s_gles_lib->findSymbol("glGetTexParameterfv");
- s_gl.glLightModelf = (glLightModelf_t) s_gles_lib->findSymbol("glLightModelf");
- s_gl.glLightModelfv = (glLightModelfv_t) s_gles_lib->findSymbol("glLightModelfv");
- s_gl.glLightf = (glLightf_t) s_gles_lib->findSymbol("glLightf");
- s_gl.glLightfv = (glLightfv_t) s_gles_lib->findSymbol("glLightfv");
- s_gl.glLineWidth = (glLineWidth_t) s_gles_lib->findSymbol("glLineWidth");
- s_gl.glLoadMatrixf = (glLoadMatrixf_t) s_gles_lib->findSymbol("glLoadMatrixf");
- s_gl.glMaterialf = (glMaterialf_t) s_gles_lib->findSymbol("glMaterialf");
- s_gl.glMaterialfv = (glMaterialfv_t) s_gles_lib->findSymbol("glMaterialfv");
- s_gl.glMultMatrixf = (glMultMatrixf_t) s_gles_lib->findSymbol("glMultMatrixf");
- s_gl.glMultiTexCoord4f = (glMultiTexCoord4f_t) s_gles_lib->findSymbol("glMultiTexCoord4f");
- s_gl.glNormal3f = (glNormal3f_t) s_gles_lib->findSymbol("glNormal3f");
- s_gl.glOrthof = (glOrthof_t) s_gles_lib->findSymbol("glOrthof");
- s_gl.glPointParameterf = (glPointParameterf_t) s_gles_lib->findSymbol("glPointParameterf");
- s_gl.glPointParameterfv = (glPointParameterfv_t) s_gles_lib->findSymbol("glPointParameterfv");
- s_gl.glPointSize = (glPointSize_t) s_gles_lib->findSymbol("glPointSize");
- s_gl.glPolygonOffset = (glPolygonOffset_t) s_gles_lib->findSymbol("glPolygonOffset");
- s_gl.glRotatef = (glRotatef_t) s_gles_lib->findSymbol("glRotatef");
- s_gl.glScalef = (glScalef_t) s_gles_lib->findSymbol("glScalef");
- s_gl.glTexEnvf = (glTexEnvf_t) s_gles_lib->findSymbol("glTexEnvf");
- s_gl.glTexEnvfv = (glTexEnvfv_t) s_gles_lib->findSymbol("glTexEnvfv");
- s_gl.glTexParameterf = (glTexParameterf_t) s_gles_lib->findSymbol("glTexParameterf");
- s_gl.glTexParameterfv = (glTexParameterfv_t) s_gles_lib->findSymbol("glTexParameterfv");
- s_gl.glTranslatef = (glTranslatef_t) s_gles_lib->findSymbol("glTranslatef");
- s_gl.glActiveTexture = (glActiveTexture_t) s_gles_lib->findSymbol("glActiveTexture");
- s_gl.glAlphaFuncx = (glAlphaFuncx_t) s_gles_lib->findSymbol("glAlphaFuncx");
- s_gl.glBindBuffer = (glBindBuffer_t) s_gles_lib->findSymbol("glBindBuffer");
- s_gl.glBindTexture = (glBindTexture_t) s_gles_lib->findSymbol("glBindTexture");
- s_gl.glBlendFunc = (glBlendFunc_t) s_gles_lib->findSymbol("glBlendFunc");
- s_gl.glBufferData = (glBufferData_t) s_gles_lib->findSymbol("glBufferData");
- s_gl.glBufferSubData = (glBufferSubData_t) s_gles_lib->findSymbol("glBufferSubData");
- s_gl.glClear = (glClear_t) s_gles_lib->findSymbol("glClear");
- s_gl.glClearColorx = (glClearColorx_t) s_gles_lib->findSymbol("glClearColorx");
- s_gl.glClearDepthx = (glClearDepthx_t) s_gles_lib->findSymbol("glClearDepthx");
- s_gl.glClearStencil = (glClearStencil_t) s_gles_lib->findSymbol("glClearStencil");
- s_gl.glClientActiveTexture = (glClientActiveTexture_t) s_gles_lib->findSymbol("glClientActiveTexture");
- s_gl.glClipPlanex = (glClipPlanex_t) s_gles_lib->findSymbol("glClipPlanex");
- s_gl.glColor4ub = (glColor4ub_t) s_gles_lib->findSymbol("glColor4ub");
- s_gl.glColor4x = (glColor4x_t) s_gles_lib->findSymbol("glColor4x");
- s_gl.glColorMask = (glColorMask_t) s_gles_lib->findSymbol("glColorMask");
- s_gl.glColorPointer = (glColorPointer_t) s_gles_lib->findSymbol("glColorPointer");
- s_gl.glCompressedTexImage2D = (glCompressedTexImage2D_t) s_gles_lib->findSymbol("glCompressedTexImage2D");
- s_gl.glCompressedTexSubImage2D = (glCompressedTexSubImage2D_t) s_gles_lib->findSymbol("glCompressedTexSubImage2D");
- s_gl.glCopyTexImage2D = (glCopyTexImage2D_t) s_gles_lib->findSymbol("glCopyTexImage2D");
- s_gl.glCopyTexSubImage2D = (glCopyTexSubImage2D_t) s_gles_lib->findSymbol("glCopyTexSubImage2D");
- s_gl.glCullFace = (glCullFace_t) s_gles_lib->findSymbol("glCullFace");
- s_gl.glDeleteBuffers = (glDeleteBuffers_t) s_gles_lib->findSymbol("glDeleteBuffers");
- s_gl.glDeleteTextures = (glDeleteTextures_t) s_gles_lib->findSymbol("glDeleteTextures");
- s_gl.glDepthFunc = (glDepthFunc_t) s_gles_lib->findSymbol("glDepthFunc");
- s_gl.glDepthMask = (glDepthMask_t) s_gles_lib->findSymbol("glDepthMask");
- s_gl.glDepthRangex = (glDepthRangex_t) s_gles_lib->findSymbol("glDepthRangex");
- s_gl.glDisable = (glDisable_t) s_gles_lib->findSymbol("glDisable");
- s_gl.glDisableClientState = (glDisableClientState_t) s_gles_lib->findSymbol("glDisableClientState");
- s_gl.glDrawArrays = (glDrawArrays_t) s_gles_lib->findSymbol("glDrawArrays");
- s_gl.glDrawElements = (glDrawElements_t) s_gles_lib->findSymbol("glDrawElements");
- s_gl.glEnable = (glEnable_t) s_gles_lib->findSymbol("glEnable");
- s_gl.glEnableClientState = (glEnableClientState_t) s_gles_lib->findSymbol("glEnableClientState");
- s_gl.glFinish = (glFinish_t) s_gles_lib->findSymbol("glFinish");
- s_gl.glFlush = (glFlush_t) s_gles_lib->findSymbol("glFlush");
- s_gl.glFogx = (glFogx_t) s_gles_lib->findSymbol("glFogx");
- s_gl.glFogxv = (glFogxv_t) s_gles_lib->findSymbol("glFogxv");
- s_gl.glFrontFace = (glFrontFace_t) s_gles_lib->findSymbol("glFrontFace");
- s_gl.glFrustumx = (glFrustumx_t) s_gles_lib->findSymbol("glFrustumx");
- s_gl.glGetBooleanv = (glGetBooleanv_t) s_gles_lib->findSymbol("glGetBooleanv");
- s_gl.glGetBufferParameteriv = (glGetBufferParameteriv_t) s_gles_lib->findSymbol("glGetBufferParameteriv");
- s_gl.glGetClipPlanex = (glGetClipPlanex_t) s_gles_lib->findSymbol("glGetClipPlanex");
- s_gl.glGenBuffers = (glGenBuffers_t) s_gles_lib->findSymbol("glGenBuffers");
- s_gl.glGenTextures = (glGenTextures_t) s_gles_lib->findSymbol("glGenTextures");
- s_gl.glGetError = (glGetError_t) s_gles_lib->findSymbol("glGetError");
- s_gl.glGetFixedv = (glGetFixedv_t) s_gles_lib->findSymbol("glGetFixedv");
- s_gl.glGetIntegerv = (glGetIntegerv_t) s_gles_lib->findSymbol("glGetIntegerv");
- s_gl.glGetLightxv = (glGetLightxv_t) s_gles_lib->findSymbol("glGetLightxv");
- s_gl.glGetMaterialxv = (glGetMaterialxv_t) s_gles_lib->findSymbol("glGetMaterialxv");
- s_gl.glGetPointerv = (glGetPointerv_t) s_gles_lib->findSymbol("glGetPointerv");
- s_gl.glGetString = (glGetString_t) s_gles_lib->findSymbol("glGetString");
- s_gl.glGetTexEnviv = (glGetTexEnviv_t) s_gles_lib->findSymbol("glGetTexEnviv");
- s_gl.glGetTexEnvxv = (glGetTexEnvxv_t) s_gles_lib->findSymbol("glGetTexEnvxv");
- s_gl.glGetTexParameteriv = (glGetTexParameteriv_t) s_gles_lib->findSymbol("glGetTexParameteriv");
- s_gl.glGetTexParameterxv = (glGetTexParameterxv_t) s_gles_lib->findSymbol("glGetTexParameterxv");
- s_gl.glHint = (glHint_t) s_gles_lib->findSymbol("glHint");
- s_gl.glIsBuffer = (glIsBuffer_t) s_gles_lib->findSymbol("glIsBuffer");
- s_gl.glIsEnabled = (glIsEnabled_t) s_gles_lib->findSymbol("glIsEnabled");
- s_gl.glIsTexture = (glIsTexture_t) s_gles_lib->findSymbol("glIsTexture");
- s_gl.glLightModelx = (glLightModelx_t) s_gles_lib->findSymbol("glLightModelx");
- s_gl.glLightModelxv = (glLightModelxv_t) s_gles_lib->findSymbol("glLightModelxv");
- s_gl.glLightx = (glLightx_t) s_gles_lib->findSymbol("glLightx");
- s_gl.glLightxv = (glLightxv_t) s_gles_lib->findSymbol("glLightxv");
- s_gl.glLineWidthx = (glLineWidthx_t) s_gles_lib->findSymbol("glLineWidthx");
- s_gl.glLoadIdentity = (glLoadIdentity_t) s_gles_lib->findSymbol("glLoadIdentity");
- s_gl.glLoadMatrixx = (glLoadMatrixx_t) s_gles_lib->findSymbol("glLoadMatrixx");
- s_gl.glLogicOp = (glLogicOp_t) s_gles_lib->findSymbol("glLogicOp");
- s_gl.glMaterialx = (glMaterialx_t) s_gles_lib->findSymbol("glMaterialx");
- s_gl.glMaterialxv = (glMaterialxv_t) s_gles_lib->findSymbol("glMaterialxv");
- s_gl.glMatrixMode = (glMatrixMode_t) s_gles_lib->findSymbol("glMatrixMode");
- s_gl.glMultMatrixx = (glMultMatrixx_t) s_gles_lib->findSymbol("glMultMatrixx");
- s_gl.glMultiTexCoord4x = (glMultiTexCoord4x_t) s_gles_lib->findSymbol("glMultiTexCoord4x");
- s_gl.glNormal3x = (glNormal3x_t) s_gles_lib->findSymbol("glNormal3x");
- s_gl.glNormalPointer = (glNormalPointer_t) s_gles_lib->findSymbol("glNormalPointer");
- s_gl.glOrthox = (glOrthox_t) s_gles_lib->findSymbol("glOrthox");
- s_gl.glPixelStorei = (glPixelStorei_t) s_gles_lib->findSymbol("glPixelStorei");
- s_gl.glPointParameterx = (glPointParameterx_t) s_gles_lib->findSymbol("glPointParameterx");
- s_gl.glPointParameterxv = (glPointParameterxv_t) s_gles_lib->findSymbol("glPointParameterxv");
- s_gl.glPointSizex = (glPointSizex_t) s_gles_lib->findSymbol("glPointSizex");
- s_gl.glPolygonOffsetx = (glPolygonOffsetx_t) s_gles_lib->findSymbol("glPolygonOffsetx");
- s_gl.glPopMatrix = (glPopMatrix_t) s_gles_lib->findSymbol("glPopMatrix");
- s_gl.glPushMatrix = (glPushMatrix_t) s_gles_lib->findSymbol("glPushMatrix");
- s_gl.glReadPixels = (glReadPixels_t) s_gles_lib->findSymbol("glReadPixels");
- s_gl.glRotatex = (glRotatex_t) s_gles_lib->findSymbol("glRotatex");
- s_gl.glSampleCoverage = (glSampleCoverage_t) s_gles_lib->findSymbol("glSampleCoverage");
- s_gl.glSampleCoveragex = (glSampleCoveragex_t) s_gles_lib->findSymbol("glSampleCoveragex");
- s_gl.glScalex = (glScalex_t) s_gles_lib->findSymbol("glScalex");
- s_gl.glScissor = (glScissor_t) s_gles_lib->findSymbol("glScissor");
- s_gl.glShadeModel = (glShadeModel_t) s_gles_lib->findSymbol("glShadeModel");
- s_gl.glStencilFunc = (glStencilFunc_t) s_gles_lib->findSymbol("glStencilFunc");
- s_gl.glStencilMask = (glStencilMask_t) s_gles_lib->findSymbol("glStencilMask");
- s_gl.glStencilOp = (glStencilOp_t) s_gles_lib->findSymbol("glStencilOp");
- s_gl.glTexCoordPointer = (glTexCoordPointer_t) s_gles_lib->findSymbol("glTexCoordPointer");
- s_gl.glTexEnvi = (glTexEnvi_t) s_gles_lib->findSymbol("glTexEnvi");
- s_gl.glTexEnvx = (glTexEnvx_t) s_gles_lib->findSymbol("glTexEnvx");
- s_gl.glTexEnviv = (glTexEnviv_t) s_gles_lib->findSymbol("glTexEnviv");
- s_gl.glTexEnvxv = (glTexEnvxv_t) s_gles_lib->findSymbol("glTexEnvxv");
- s_gl.glTexImage2D = (glTexImage2D_t) s_gles_lib->findSymbol("glTexImage2D");
- s_gl.glTexParameteri = (glTexParameteri_t) s_gles_lib->findSymbol("glTexParameteri");
- s_gl.glTexParameterx = (glTexParameterx_t) s_gles_lib->findSymbol("glTexParameterx");
- s_gl.glTexParameteriv = (glTexParameteriv_t) s_gles_lib->findSymbol("glTexParameteriv");
- s_gl.glTexParameterxv = (glTexParameterxv_t) s_gles_lib->findSymbol("glTexParameterxv");
- s_gl.glTexSubImage2D = (glTexSubImage2D_t) s_gles_lib->findSymbol("glTexSubImage2D");
- s_gl.glTranslatex = (glTranslatex_t) s_gles_lib->findSymbol("glTranslatex");
- s_gl.glVertexPointer = (glVertexPointer_t) s_gles_lib->findSymbol("glVertexPointer");
- s_gl.glViewport = (glViewport_t) s_gles_lib->findSymbol("glViewport");
- s_gl.glPointSizePointerOES = (glPointSizePointerOES_t) s_gles_lib->findSymbol("glPointSizePointerOES");
- s_gl.glBlendEquationSeparateOES = (glBlendEquationSeparateOES_t) s_gles_lib->findSymbol("glBlendEquationSeparateOES");
- s_gl.glBlendFuncSeparateOES = (glBlendFuncSeparateOES_t) s_gles_lib->findSymbol("glBlendFuncSeparateOES");
- s_gl.glBlendEquationOES = (glBlendEquationOES_t) s_gles_lib->findSymbol("glBlendEquationOES");
- s_gl.glDrawTexsOES = (glDrawTexsOES_t) s_gles_lib->findSymbol("glDrawTexsOES");
- s_gl.glDrawTexiOES = (glDrawTexiOES_t) s_gles_lib->findSymbol("glDrawTexiOES");
- s_gl.glDrawTexxOES = (glDrawTexxOES_t) s_gles_lib->findSymbol("glDrawTexxOES");
- s_gl.glDrawTexsvOES = (glDrawTexsvOES_t) s_gles_lib->findSymbol("glDrawTexsvOES");
- s_gl.glDrawTexivOES = (glDrawTexivOES_t) s_gles_lib->findSymbol("glDrawTexivOES");
- s_gl.glDrawTexxvOES = (glDrawTexxvOES_t) s_gles_lib->findSymbol("glDrawTexxvOES");
- s_gl.glDrawTexfOES = (glDrawTexfOES_t) s_gles_lib->findSymbol("glDrawTexfOES");
- s_gl.glDrawTexfvOES = (glDrawTexfvOES_t) s_gles_lib->findSymbol("glDrawTexfvOES");
- s_gl.glEGLImageTargetTexture2DOES = (glEGLImageTargetTexture2DOES_t) s_gles_lib->findSymbol("glEGLImageTargetTexture2DOES");
- s_gl.glEGLImageTargetRenderbufferStorageOES = (glEGLImageTargetRenderbufferStorageOES_t) s_gles_lib->findSymbol("glEGLImageTargetRenderbufferStorageOES");
- s_gl.glAlphaFuncxOES = (glAlphaFuncxOES_t) s_gles_lib->findSymbol("glAlphaFuncxOES");
- s_gl.glClearColorxOES = (glClearColorxOES_t) s_gles_lib->findSymbol("glClearColorxOES");
- s_gl.glClearDepthxOES = (glClearDepthxOES_t) s_gles_lib->findSymbol("glClearDepthxOES");
- s_gl.glClipPlanexOES = (glClipPlanexOES_t) s_gles_lib->findSymbol("glClipPlanexOES");
- s_gl.glColor4xOES = (glColor4xOES_t) s_gles_lib->findSymbol("glColor4xOES");
- s_gl.glDepthRangexOES = (glDepthRangexOES_t) s_gles_lib->findSymbol("glDepthRangexOES");
- s_gl.glFogxOES = (glFogxOES_t) s_gles_lib->findSymbol("glFogxOES");
- s_gl.glFogxvOES = (glFogxvOES_t) s_gles_lib->findSymbol("glFogxvOES");
- s_gl.glFrustumxOES = (glFrustumxOES_t) s_gles_lib->findSymbol("glFrustumxOES");
- s_gl.glGetClipPlanexOES = (glGetClipPlanexOES_t) s_gles_lib->findSymbol("glGetClipPlanexOES");
- s_gl.glGetFixedvOES = (glGetFixedvOES_t) s_gles_lib->findSymbol("glGetFixedvOES");
- s_gl.glGetLightxvOES = (glGetLightxvOES_t) s_gles_lib->findSymbol("glGetLightxvOES");
- s_gl.glGetMaterialxvOES = (glGetMaterialxvOES_t) s_gles_lib->findSymbol("glGetMaterialxvOES");
- s_gl.glGetTexEnvxvOES = (glGetTexEnvxvOES_t) s_gles_lib->findSymbol("glGetTexEnvxvOES");
- s_gl.glGetTexParameterxvOES = (glGetTexParameterxvOES_t) s_gles_lib->findSymbol("glGetTexParameterxvOES");
- s_gl.glLightModelxOES = (glLightModelxOES_t) s_gles_lib->findSymbol("glLightModelxOES");
- s_gl.glLightModelxvOES = (glLightModelxvOES_t) s_gles_lib->findSymbol("glLightModelxvOES");
- s_gl.glLightxOES = (glLightxOES_t) s_gles_lib->findSymbol("glLightxOES");
- s_gl.glLightxvOES = (glLightxvOES_t) s_gles_lib->findSymbol("glLightxvOES");
- s_gl.glLineWidthxOES = (glLineWidthxOES_t) s_gles_lib->findSymbol("glLineWidthxOES");
- s_gl.glLoadMatrixxOES = (glLoadMatrixxOES_t) s_gles_lib->findSymbol("glLoadMatrixxOES");
- s_gl.glMaterialxOES = (glMaterialxOES_t) s_gles_lib->findSymbol("glMaterialxOES");
- s_gl.glMaterialxvOES = (glMaterialxvOES_t) s_gles_lib->findSymbol("glMaterialxvOES");
- s_gl.glMultMatrixxOES = (glMultMatrixxOES_t) s_gles_lib->findSymbol("glMultMatrixxOES");
- s_gl.glMultiTexCoord4xOES = (glMultiTexCoord4xOES_t) s_gles_lib->findSymbol("glMultiTexCoord4xOES");
- s_gl.glNormal3xOES = (glNormal3xOES_t) s_gles_lib->findSymbol("glNormal3xOES");
- s_gl.glOrthoxOES = (glOrthoxOES_t) s_gles_lib->findSymbol("glOrthoxOES");
- s_gl.glPointParameterxOES = (glPointParameterxOES_t) s_gles_lib->findSymbol("glPointParameterxOES");
- s_gl.glPointParameterxvOES = (glPointParameterxvOES_t) s_gles_lib->findSymbol("glPointParameterxvOES");
- s_gl.glPointSizexOES = (glPointSizexOES_t) s_gles_lib->findSymbol("glPointSizexOES");
- s_gl.glPolygonOffsetxOES = (glPolygonOffsetxOES_t) s_gles_lib->findSymbol("glPolygonOffsetxOES");
- s_gl.glRotatexOES = (glRotatexOES_t) s_gles_lib->findSymbol("glRotatexOES");
- s_gl.glSampleCoveragexOES = (glSampleCoveragexOES_t) s_gles_lib->findSymbol("glSampleCoveragexOES");
- s_gl.glScalexOES = (glScalexOES_t) s_gles_lib->findSymbol("glScalexOES");
- s_gl.glTexEnvxOES = (glTexEnvxOES_t) s_gles_lib->findSymbol("glTexEnvxOES");
- s_gl.glTexEnvxvOES = (glTexEnvxvOES_t) s_gles_lib->findSymbol("glTexEnvxvOES");
- s_gl.glTexParameterxOES = (glTexParameterxOES_t) s_gles_lib->findSymbol("glTexParameterxOES");
- s_gl.glTexParameterxvOES = (glTexParameterxvOES_t) s_gles_lib->findSymbol("glTexParameterxvOES");
- s_gl.glTranslatexOES = (glTranslatexOES_t) s_gles_lib->findSymbol("glTranslatexOES");
- s_gl.glIsRenderbufferOES = (glIsRenderbufferOES_t) s_gles_lib->findSymbol("glIsRenderbufferOES");
- s_gl.glBindRenderbufferOES = (glBindRenderbufferOES_t) s_gles_lib->findSymbol("glBindRenderbufferOES");
- s_gl.glDeleteRenderbuffersOES = (glDeleteRenderbuffersOES_t) s_gles_lib->findSymbol("glDeleteRenderbuffersOES");
- s_gl.glGenRenderbuffersOES = (glGenRenderbuffersOES_t) s_gles_lib->findSymbol("glGenRenderbuffersOES");
- s_gl.glRenderbufferStorageOES = (glRenderbufferStorageOES_t) s_gles_lib->findSymbol("glRenderbufferStorageOES");
- s_gl.glGetRenderbufferParameterivOES = (glGetRenderbufferParameterivOES_t) s_gles_lib->findSymbol("glGetRenderbufferParameterivOES");
- s_gl.glIsFramebufferOES = (glIsFramebufferOES_t) s_gles_lib->findSymbol("glIsFramebufferOES");
- s_gl.glBindFramebufferOES = (glBindFramebufferOES_t) s_gles_lib->findSymbol("glBindFramebufferOES");
- s_gl.glDeleteFramebuffersOES = (glDeleteFramebuffersOES_t) s_gles_lib->findSymbol("glDeleteFramebuffersOES");
- s_gl.glGenFramebuffersOES = (glGenFramebuffersOES_t) s_gles_lib->findSymbol("glGenFramebuffersOES");
- s_gl.glCheckFramebufferStatusOES = (glCheckFramebufferStatusOES_t) s_gles_lib->findSymbol("glCheckFramebufferStatusOES");
- s_gl.glFramebufferRenderbufferOES = (glFramebufferRenderbufferOES_t) s_gles_lib->findSymbol("glFramebufferRenderbufferOES");
- s_gl.glFramebufferTexture2DOES = (glFramebufferTexture2DOES_t) s_gles_lib->findSymbol("glFramebufferTexture2DOES");
- s_gl.glGetFramebufferAttachmentParameterivOES = (glGetFramebufferAttachmentParameterivOES_t) s_gles_lib->findSymbol("glGetFramebufferAttachmentParameterivOES");
- s_gl.glGenerateMipmapOES = (glGenerateMipmapOES_t) s_gles_lib->findSymbol("glGenerateMipmapOES");
- s_gl.glMapBufferOES = (glMapBufferOES_t) s_gles_lib->findSymbol("glMapBufferOES");
- s_gl.glUnmapBufferOES = (glUnmapBufferOES_t) s_gles_lib->findSymbol("glUnmapBufferOES");
- s_gl.glGetBufferPointervOES = (glGetBufferPointervOES_t) s_gles_lib->findSymbol("glGetBufferPointervOES");
- s_gl.glCurrentPaletteMatrixOES = (glCurrentPaletteMatrixOES_t) s_gles_lib->findSymbol("glCurrentPaletteMatrixOES");
- s_gl.glLoadPaletteFromModelViewMatrixOES = (glLoadPaletteFromModelViewMatrixOES_t) s_gles_lib->findSymbol("glLoadPaletteFromModelViewMatrixOES");
- s_gl.glMatrixIndexPointerOES = (glMatrixIndexPointerOES_t) s_gles_lib->findSymbol("glMatrixIndexPointerOES");
- s_gl.glWeightPointerOES = (glWeightPointerOES_t) s_gles_lib->findSymbol("glWeightPointerOES");
- s_gl.glQueryMatrixxOES = (glQueryMatrixxOES_t) s_gles_lib->findSymbol("glQueryMatrixxOES");
- s_gl.glDepthRangefOES = (glDepthRangefOES_t) s_gles_lib->findSymbol("glDepthRangefOES");
- s_gl.glFrustumfOES = (glFrustumfOES_t) s_gles_lib->findSymbol("glFrustumfOES");
- s_gl.glOrthofOES = (glOrthofOES_t) s_gles_lib->findSymbol("glOrthofOES");
- s_gl.glClipPlanefOES = (glClipPlanefOES_t) s_gles_lib->findSymbol("glClipPlanefOES");
- s_gl.glGetClipPlanefOES = (glGetClipPlanefOES_t) s_gles_lib->findSymbol("glGetClipPlanefOES");
- s_gl.glClearDepthfOES = (glClearDepthfOES_t) s_gles_lib->findSymbol("glClearDepthfOES");
- s_gl.glTexGenfOES = (glTexGenfOES_t) s_gles_lib->findSymbol("glTexGenfOES");
- s_gl.glTexGenfvOES = (glTexGenfvOES_t) s_gles_lib->findSymbol("glTexGenfvOES");
- s_gl.glTexGeniOES = (glTexGeniOES_t) s_gles_lib->findSymbol("glTexGeniOES");
- s_gl.glTexGenivOES = (glTexGenivOES_t) s_gles_lib->findSymbol("glTexGenivOES");
- s_gl.glTexGenxOES = (glTexGenxOES_t) s_gles_lib->findSymbol("glTexGenxOES");
- s_gl.glTexGenxvOES = (glTexGenxvOES_t) s_gles_lib->findSymbol("glTexGenxvOES");
- s_gl.glGetTexGenfvOES = (glGetTexGenfvOES_t) s_gles_lib->findSymbol("glGetTexGenfvOES");
- s_gl.glGetTexGenivOES = (glGetTexGenivOES_t) s_gles_lib->findSymbol("glGetTexGenivOES");
- s_gl.glGetTexGenxvOES = (glGetTexGenxvOES_t) s_gles_lib->findSymbol("glGetTexGenxvOES");
- s_gl.glBindVertexArrayOES = (glBindVertexArrayOES_t) s_gles_lib->findSymbol("glBindVertexArrayOES");
- s_gl.glDeleteVertexArraysOES = (glDeleteVertexArraysOES_t) s_gles_lib->findSymbol("glDeleteVertexArraysOES");
- s_gl.glGenVertexArraysOES = (glGenVertexArraysOES_t) s_gles_lib->findSymbol("glGenVertexArraysOES");
- s_gl.glIsVertexArrayOES = (glIsVertexArrayOES_t) s_gles_lib->findSymbol("glIsVertexArrayOES");
- s_gl.glDiscardFramebufferEXT = (glDiscardFramebufferEXT_t) s_gles_lib->findSymbol("glDiscardFramebufferEXT");
- s_gl.glMultiDrawArraysEXT = (glMultiDrawArraysEXT_t) s_gles_lib->findSymbol("glMultiDrawArraysEXT");
- s_gl.glMultiDrawElementsEXT = (glMultiDrawElementsEXT_t) s_gles_lib->findSymbol("glMultiDrawElementsEXT");
- s_gl.glClipPlanefIMG = (glClipPlanefIMG_t) s_gles_lib->findSymbol("glClipPlanefIMG");
- s_gl.glClipPlanexIMG = (glClipPlanexIMG_t) s_gles_lib->findSymbol("glClipPlanexIMG");
- s_gl.glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_t) s_gles_lib->findSymbol("glRenderbufferStorageMultisampleIMG");
- s_gl.glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_t) s_gles_lib->findSymbol("glFramebufferTexture2DMultisampleIMG");
- s_gl.glDeleteFencesNV = (glDeleteFencesNV_t) s_gles_lib->findSymbol("glDeleteFencesNV");
- s_gl.glGenFencesNV = (glGenFencesNV_t) s_gles_lib->findSymbol("glGenFencesNV");
- s_gl.glIsFenceNV = (glIsFenceNV_t) s_gles_lib->findSymbol("glIsFenceNV");
- s_gl.glTestFenceNV = (glTestFenceNV_t) s_gles_lib->findSymbol("glTestFenceNV");
- s_gl.glGetFenceivNV = (glGetFenceivNV_t) s_gles_lib->findSymbol("glGetFenceivNV");
- s_gl.glFinishFenceNV = (glFinishFenceNV_t) s_gles_lib->findSymbol("glFinishFenceNV");
- s_gl.glSetFenceNV = (glSetFenceNV_t) s_gles_lib->findSymbol("glSetFenceNV");
- s_gl.glGetDriverControlsQCOM = (glGetDriverControlsQCOM_t) s_gles_lib->findSymbol("glGetDriverControlsQCOM");
- s_gl.glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_t) s_gles_lib->findSymbol("glGetDriverControlStringQCOM");
- s_gl.glEnableDriverControlQCOM = (glEnableDriverControlQCOM_t) s_gles_lib->findSymbol("glEnableDriverControlQCOM");
- s_gl.glDisableDriverControlQCOM = (glDisableDriverControlQCOM_t) s_gles_lib->findSymbol("glDisableDriverControlQCOM");
- s_gl.glExtGetTexturesQCOM = (glExtGetTexturesQCOM_t) s_gles_lib->findSymbol("glExtGetTexturesQCOM");
- s_gl.glExtGetBuffersQCOM = (glExtGetBuffersQCOM_t) s_gles_lib->findSymbol("glExtGetBuffersQCOM");
- s_gl.glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_t) s_gles_lib->findSymbol("glExtGetRenderbuffersQCOM");
- s_gl.glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_t) s_gles_lib->findSymbol("glExtGetFramebuffersQCOM");
- s_gl.glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_t) s_gles_lib->findSymbol("glExtGetTexLevelParameterivQCOM");
- s_gl.glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_t) s_gles_lib->findSymbol("glExtTexObjectStateOverrideiQCOM");
- s_gl.glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_t) s_gles_lib->findSymbol("glExtGetTexSubImageQCOM");
- s_gl.glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_t) s_gles_lib->findSymbol("glExtGetBufferPointervQCOM");
- s_gl.glExtGetShadersQCOM = (glExtGetShadersQCOM_t) s_gles_lib->findSymbol("glExtGetShadersQCOM");
- s_gl.glExtGetProgramsQCOM = (glExtGetProgramsQCOM_t) s_gles_lib->findSymbol("glExtGetProgramsQCOM");
- s_gl.glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_t) s_gles_lib->findSymbol("glExtIsProgramBinaryQCOM");
- s_gl.glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_t) s_gles_lib->findSymbol("glExtGetProgramBinarySourceQCOM");
- s_gl.glStartTilingQCOM = (glStartTilingQCOM_t) s_gles_lib->findSymbol("glStartTilingQCOM");
- s_gl.glEndTilingQCOM = (glEndTilingQCOM_t) s_gles_lib->findSymbol("glEndTilingQCOM");
-
- return true;
-}
-
-//
-// This function is called only during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-void *gl_dispatch_get_proc_func(const char *name, void *userData)
-{
- if (!s_gles_lib) {
- return NULL;
- }
- return (void *)s_gles_lib->findSymbol(name);
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h b/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h
deleted file mode 100644
index 5fe98f145..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h
+++ /dev/null
@@ -1,300 +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 _GLES_DISPATCH_H
-#define _GLES_DISPATCH_H
-
-#include "gl_proc.h"
-
-
-struct GLDispatch {
- glAlphaFunc_t glAlphaFunc;
- glClearColor_t glClearColor;
- glClearDepthf_t glClearDepthf;
- glClipPlanef_t glClipPlanef;
- glColor4f_t glColor4f;
- glDepthRangef_t glDepthRangef;
- glFogf_t glFogf;
- glFogfv_t glFogfv;
- glFrustumf_t glFrustumf;
- glGetClipPlanef_t glGetClipPlanef;
- glGetFloatv_t glGetFloatv;
- glGetLightfv_t glGetLightfv;
- glGetMaterialfv_t glGetMaterialfv;
- glGetTexEnvfv_t glGetTexEnvfv;
- glGetTexParameterfv_t glGetTexParameterfv;
- glLightModelf_t glLightModelf;
- glLightModelfv_t glLightModelfv;
- glLightf_t glLightf;
- glLightfv_t glLightfv;
- glLineWidth_t glLineWidth;
- glLoadMatrixf_t glLoadMatrixf;
- glMaterialf_t glMaterialf;
- glMaterialfv_t glMaterialfv;
- glMultMatrixf_t glMultMatrixf;
- glMultiTexCoord4f_t glMultiTexCoord4f;
- glNormal3f_t glNormal3f;
- glOrthof_t glOrthof;
- glPointParameterf_t glPointParameterf;
- glPointParameterfv_t glPointParameterfv;
- glPointSize_t glPointSize;
- glPolygonOffset_t glPolygonOffset;
- glRotatef_t glRotatef;
- glScalef_t glScalef;
- glTexEnvf_t glTexEnvf;
- glTexEnvfv_t glTexEnvfv;
- glTexParameterf_t glTexParameterf;
- glTexParameterfv_t glTexParameterfv;
- glTranslatef_t glTranslatef;
- glActiveTexture_t glActiveTexture;
- glAlphaFuncx_t glAlphaFuncx;
- glBindBuffer_t glBindBuffer;
- glBindTexture_t glBindTexture;
- glBlendFunc_t glBlendFunc;
- glBufferData_t glBufferData;
- glBufferSubData_t glBufferSubData;
- glClear_t glClear;
- glClearColorx_t glClearColorx;
- glClearDepthx_t glClearDepthx;
- glClearStencil_t glClearStencil;
- glClientActiveTexture_t glClientActiveTexture;
- glClipPlanex_t glClipPlanex;
- glColor4ub_t glColor4ub;
- glColor4x_t glColor4x;
- glColorMask_t glColorMask;
- glColorPointer_t glColorPointer;
- glCompressedTexImage2D_t glCompressedTexImage2D;
- glCompressedTexSubImage2D_t glCompressedTexSubImage2D;
- glCopyTexImage2D_t glCopyTexImage2D;
- glCopyTexSubImage2D_t glCopyTexSubImage2D;
- glCullFace_t glCullFace;
- glDeleteBuffers_t glDeleteBuffers;
- glDeleteTextures_t glDeleteTextures;
- glDepthFunc_t glDepthFunc;
- glDepthMask_t glDepthMask;
- glDepthRangex_t glDepthRangex;
- glDisable_t glDisable;
- glDisableClientState_t glDisableClientState;
- glDrawArrays_t glDrawArrays;
- glDrawElements_t glDrawElements;
- glEnable_t glEnable;
- glEnableClientState_t glEnableClientState;
- glFinish_t glFinish;
- glFlush_t glFlush;
- glFogx_t glFogx;
- glFogxv_t glFogxv;
- glFrontFace_t glFrontFace;
- glFrustumx_t glFrustumx;
- glGetBooleanv_t glGetBooleanv;
- glGetBufferParameteriv_t glGetBufferParameteriv;
- glGetClipPlanex_t glGetClipPlanex;
- glGenBuffers_t glGenBuffers;
- glGenTextures_t glGenTextures;
- glGetError_t glGetError;
- glGetFixedv_t glGetFixedv;
- glGetIntegerv_t glGetIntegerv;
- glGetLightxv_t glGetLightxv;
- glGetMaterialxv_t glGetMaterialxv;
- glGetPointerv_t glGetPointerv;
- glGetString_t glGetString;
- glGetTexEnviv_t glGetTexEnviv;
- glGetTexEnvxv_t glGetTexEnvxv;
- glGetTexParameteriv_t glGetTexParameteriv;
- glGetTexParameterxv_t glGetTexParameterxv;
- glHint_t glHint;
- glIsBuffer_t glIsBuffer;
- glIsEnabled_t glIsEnabled;
- glIsTexture_t glIsTexture;
- glLightModelx_t glLightModelx;
- glLightModelxv_t glLightModelxv;
- glLightx_t glLightx;
- glLightxv_t glLightxv;
- glLineWidthx_t glLineWidthx;
- glLoadIdentity_t glLoadIdentity;
- glLoadMatrixx_t glLoadMatrixx;
- glLogicOp_t glLogicOp;
- glMaterialx_t glMaterialx;
- glMaterialxv_t glMaterialxv;
- glMatrixMode_t glMatrixMode;
- glMultMatrixx_t glMultMatrixx;
- glMultiTexCoord4x_t glMultiTexCoord4x;
- glNormal3x_t glNormal3x;
- glNormalPointer_t glNormalPointer;
- glOrthox_t glOrthox;
- glPixelStorei_t glPixelStorei;
- glPointParameterx_t glPointParameterx;
- glPointParameterxv_t glPointParameterxv;
- glPointSizex_t glPointSizex;
- glPolygonOffsetx_t glPolygonOffsetx;
- glPopMatrix_t glPopMatrix;
- glPushMatrix_t glPushMatrix;
- glReadPixels_t glReadPixels;
- glRotatex_t glRotatex;
- glSampleCoverage_t glSampleCoverage;
- glSampleCoveragex_t glSampleCoveragex;
- glScalex_t glScalex;
- glScissor_t glScissor;
- glShadeModel_t glShadeModel;
- glStencilFunc_t glStencilFunc;
- glStencilMask_t glStencilMask;
- glStencilOp_t glStencilOp;
- glTexCoordPointer_t glTexCoordPointer;
- glTexEnvi_t glTexEnvi;
- glTexEnvx_t glTexEnvx;
- glTexEnviv_t glTexEnviv;
- glTexEnvxv_t glTexEnvxv;
- glTexImage2D_t glTexImage2D;
- glTexParameteri_t glTexParameteri;
- glTexParameterx_t glTexParameterx;
- glTexParameteriv_t glTexParameteriv;
- glTexParameterxv_t glTexParameterxv;
- glTexSubImage2D_t glTexSubImage2D;
- glTranslatex_t glTranslatex;
- glVertexPointer_t glVertexPointer;
- glViewport_t glViewport;
- glPointSizePointerOES_t glPointSizePointerOES;
- glBlendEquationSeparateOES_t glBlendEquationSeparateOES;
- glBlendFuncSeparateOES_t glBlendFuncSeparateOES;
- glBlendEquationOES_t glBlendEquationOES;
- glDrawTexsOES_t glDrawTexsOES;
- glDrawTexiOES_t glDrawTexiOES;
- glDrawTexxOES_t glDrawTexxOES;
- glDrawTexsvOES_t glDrawTexsvOES;
- glDrawTexivOES_t glDrawTexivOES;
- glDrawTexxvOES_t glDrawTexxvOES;
- glDrawTexfOES_t glDrawTexfOES;
- glDrawTexfvOES_t glDrawTexfvOES;
- glEGLImageTargetTexture2DOES_t glEGLImageTargetTexture2DOES;
- glEGLImageTargetRenderbufferStorageOES_t glEGLImageTargetRenderbufferStorageOES;
- glAlphaFuncxOES_t glAlphaFuncxOES;
- glClearColorxOES_t glClearColorxOES;
- glClearDepthxOES_t glClearDepthxOES;
- glClipPlanexOES_t glClipPlanexOES;
- glColor4xOES_t glColor4xOES;
- glDepthRangexOES_t glDepthRangexOES;
- glFogxOES_t glFogxOES;
- glFogxvOES_t glFogxvOES;
- glFrustumxOES_t glFrustumxOES;
- glGetClipPlanexOES_t glGetClipPlanexOES;
- glGetFixedvOES_t glGetFixedvOES;
- glGetLightxvOES_t glGetLightxvOES;
- glGetMaterialxvOES_t glGetMaterialxvOES;
- glGetTexEnvxvOES_t glGetTexEnvxvOES;
- glGetTexParameterxvOES_t glGetTexParameterxvOES;
- glLightModelxOES_t glLightModelxOES;
- glLightModelxvOES_t glLightModelxvOES;
- glLightxOES_t glLightxOES;
- glLightxvOES_t glLightxvOES;
- glLineWidthxOES_t glLineWidthxOES;
- glLoadMatrixxOES_t glLoadMatrixxOES;
- glMaterialxOES_t glMaterialxOES;
- glMaterialxvOES_t glMaterialxvOES;
- glMultMatrixxOES_t glMultMatrixxOES;
- glMultiTexCoord4xOES_t glMultiTexCoord4xOES;
- glNormal3xOES_t glNormal3xOES;
- glOrthoxOES_t glOrthoxOES;
- glPointParameterxOES_t glPointParameterxOES;
- glPointParameterxvOES_t glPointParameterxvOES;
- glPointSizexOES_t glPointSizexOES;
- glPolygonOffsetxOES_t glPolygonOffsetxOES;
- glRotatexOES_t glRotatexOES;
- glSampleCoveragexOES_t glSampleCoveragexOES;
- glScalexOES_t glScalexOES;
- glTexEnvxOES_t glTexEnvxOES;
- glTexEnvxvOES_t glTexEnvxvOES;
- glTexParameterxOES_t glTexParameterxOES;
- glTexParameterxvOES_t glTexParameterxvOES;
- glTranslatexOES_t glTranslatexOES;
- glIsRenderbufferOES_t glIsRenderbufferOES;
- glBindRenderbufferOES_t glBindRenderbufferOES;
- glDeleteRenderbuffersOES_t glDeleteRenderbuffersOES;
- glGenRenderbuffersOES_t glGenRenderbuffersOES;
- glRenderbufferStorageOES_t glRenderbufferStorageOES;
- glGetRenderbufferParameterivOES_t glGetRenderbufferParameterivOES;
- glIsFramebufferOES_t glIsFramebufferOES;
- glBindFramebufferOES_t glBindFramebufferOES;
- glDeleteFramebuffersOES_t glDeleteFramebuffersOES;
- glGenFramebuffersOES_t glGenFramebuffersOES;
- glCheckFramebufferStatusOES_t glCheckFramebufferStatusOES;
- glFramebufferRenderbufferOES_t glFramebufferRenderbufferOES;
- glFramebufferTexture2DOES_t glFramebufferTexture2DOES;
- glGetFramebufferAttachmentParameterivOES_t glGetFramebufferAttachmentParameterivOES;
- glGenerateMipmapOES_t glGenerateMipmapOES;
- glMapBufferOES_t glMapBufferOES;
- glUnmapBufferOES_t glUnmapBufferOES;
- glGetBufferPointervOES_t glGetBufferPointervOES;
- glCurrentPaletteMatrixOES_t glCurrentPaletteMatrixOES;
- glLoadPaletteFromModelViewMatrixOES_t glLoadPaletteFromModelViewMatrixOES;
- glMatrixIndexPointerOES_t glMatrixIndexPointerOES;
- glWeightPointerOES_t glWeightPointerOES;
- glQueryMatrixxOES_t glQueryMatrixxOES;
- glDepthRangefOES_t glDepthRangefOES;
- glFrustumfOES_t glFrustumfOES;
- glOrthofOES_t glOrthofOES;
- glClipPlanefOES_t glClipPlanefOES;
- glGetClipPlanefOES_t glGetClipPlanefOES;
- glClearDepthfOES_t glClearDepthfOES;
- glTexGenfOES_t glTexGenfOES;
- glTexGenfvOES_t glTexGenfvOES;
- glTexGeniOES_t glTexGeniOES;
- glTexGenivOES_t glTexGenivOES;
- glTexGenxOES_t glTexGenxOES;
- glTexGenxvOES_t glTexGenxvOES;
- glGetTexGenfvOES_t glGetTexGenfvOES;
- glGetTexGenivOES_t glGetTexGenivOES;
- glGetTexGenxvOES_t glGetTexGenxvOES;
- glBindVertexArrayOES_t glBindVertexArrayOES;
- glDeleteVertexArraysOES_t glDeleteVertexArraysOES;
- glGenVertexArraysOES_t glGenVertexArraysOES;
- glIsVertexArrayOES_t glIsVertexArrayOES;
- glDiscardFramebufferEXT_t glDiscardFramebufferEXT;
- glMultiDrawArraysEXT_t glMultiDrawArraysEXT;
- glMultiDrawElementsEXT_t glMultiDrawElementsEXT;
- glClipPlanefIMG_t glClipPlanefIMG;
- glClipPlanexIMG_t glClipPlanexIMG;
- glRenderbufferStorageMultisampleIMG_t glRenderbufferStorageMultisampleIMG;
- glFramebufferTexture2DMultisampleIMG_t glFramebufferTexture2DMultisampleIMG;
- glDeleteFencesNV_t glDeleteFencesNV;
- glGenFencesNV_t glGenFencesNV;
- glIsFenceNV_t glIsFenceNV;
- glTestFenceNV_t glTestFenceNV;
- glGetFenceivNV_t glGetFenceivNV;
- glFinishFenceNV_t glFinishFenceNV;
- glSetFenceNV_t glSetFenceNV;
- glGetDriverControlsQCOM_t glGetDriverControlsQCOM;
- glGetDriverControlStringQCOM_t glGetDriverControlStringQCOM;
- glEnableDriverControlQCOM_t glEnableDriverControlQCOM;
- glDisableDriverControlQCOM_t glDisableDriverControlQCOM;
- glExtGetTexturesQCOM_t glExtGetTexturesQCOM;
- glExtGetBuffersQCOM_t glExtGetBuffersQCOM;
- glExtGetRenderbuffersQCOM_t glExtGetRenderbuffersQCOM;
- glExtGetFramebuffersQCOM_t glExtGetFramebuffersQCOM;
- glExtGetTexLevelParameterivQCOM_t glExtGetTexLevelParameterivQCOM;
- glExtTexObjectStateOverrideiQCOM_t glExtTexObjectStateOverrideiQCOM;
- glExtGetTexSubImageQCOM_t glExtGetTexSubImageQCOM;
- glExtGetBufferPointervQCOM_t glExtGetBufferPointervQCOM;
- glExtGetShadersQCOM_t glExtGetShadersQCOM;
- glExtGetProgramsQCOM_t glExtGetProgramsQCOM;
- glExtIsProgramBinaryQCOM_t glExtIsProgramBinaryQCOM;
- glExtGetProgramBinarySourceQCOM_t glExtGetProgramBinarySourceQCOM;
- glStartTilingQCOM_t glStartTilingQCOM;
- glEndTilingQCOM_t glEndTilingQCOM;
-};
-
-bool init_gl_dispatch();
-void *gl_dispatch_get_proc_func(const char *name, void *userData);
-
-extern GLDispatch s_gl;
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp b/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp
deleted file mode 100644
index 5f7184960..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp
+++ /dev/null
@@ -1,50 +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.
-*/
-#include "NativeSubWindow.h"
-
-#include <stdio.h>
-
-static Bool WaitForMapNotify(Display *d, XEvent *e, char *arg)
-{
- if (e->type == MapNotify && e->xmap.window == (Window)arg) {
- return 1;
- }
- return 0;
-}
-
-static Display *s_display = NULL;
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
- EGLNativeDisplayType* display_out,
- int x, int y,int width, int height){
-
- // The call to this function is protected by a lock
- // in FrameBuffer so it is safe to check and initialize s_display here
- if (!s_display) s_display = XOpenDisplay(NULL);
- *display_out = s_display;
-
- XSetWindowAttributes wa;
- wa.event_mask = StructureNotifyMask;
- Window win = XCreateWindow(*display_out,p_window,x,y, width,height,0,CopyFromParent,CopyFromParent,CopyFromParent,CWEventMask,&wa);
- XMapWindow(*display_out,win);
- XEvent e;
- XIfEvent(*display_out, &e, WaitForMapNotify, (char *)win);
- return win;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
- XDestroyWindow(dis, win);
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m b/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
deleted file mode 100644
index f57f661fb..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
+++ /dev/null
@@ -1,64 +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.
-*/
-#include "NativeSubWindow.h"
-#include <Cocoa/Cocoa.h>
-
-/*
- * EmuGLView inherit from NSView and override the isOpaque
- * method to return YES. That prevents drawing of underlying window/view
- * when the view needs to be redrawn.
- */
-@interface EmuGLView : NSView {
-} @end
-
-@implementation EmuGLView
-
- - (BOOL)isOpaque {
- return YES;
- }
-
-@end
-
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
- EGLNativeDisplayType* display_out,
- int x, int y,int width, int height){
- NSWindow *win = (NSWindow *)p_window;
- if (!win) {
- return NULL;
- }
-
- /* (x,y) assume an upper-left origin, but Cocoa uses a lower-left origin */
- NSRect content_rect = [win contentRectForFrameRect:[win frame]];
- int cocoa_y = (int)content_rect.size.height - (y + height);
- NSRect contentRect = NSMakeRect(x, cocoa_y, width, height);
-
- NSView *glView = [[EmuGLView alloc] initWithFrame:contentRect];
- if (glView) {
- [[win contentView] addSubview:glView];
- [win makeKeyAndOrderFront:nil];
- }
-
- return (EGLNativeWindowType)glView;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
- if(win){
- NSView *glView = (NSView *)win;
- [glView removeFromSuperview];
- [glView release];
- }
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h b/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h
deleted file mode 100644
index 196597844..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h
+++ /dev/null
@@ -1,37 +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 NATIVE_SUB_WINDOW_H
-#define NATIVE_SUB_WINDOW_H
-
-#include <EGL/egl.h>
-#include "libOpenglRender/render_api_platform_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
- EGLNativeDisplayType* display_out,
- int x, int y,int width, int height);
-
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp b/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp
deleted file mode 100644
index e519b688f..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp
+++ /dev/null
@@ -1,57 +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.
-*/
-#include "NativeSubWindow.h"
-#include <stdio.h>
-
-LRESULT CALLBACK myWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
-{
- return DefWindowProc(hwnd, uMsg, wParam, lParam);
-}
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
- EGLNativeDisplayType* display_out,
- int x, int y,int width, int height){
- WNDCLASS wc;
- wc.style = CS_OWNDC |CS_HREDRAW |CS_VREDRAW; // redraw if size changes
- wc.lpfnWndProc = myWndProc; // points to window procedure
- wc.cbClsExtra = 0; // no extra class memory
- wc.cbWndExtra = sizeof(void*); // save extra window memory, to store VasWindow instance
- wc.hInstance = NULL; // handle to instance
- wc.hIcon = NULL; // predefined app. icon
- wc.hCursor = NULL;
- wc.hbrBackground = NULL; // no background brush
- wc.lpszMenuName = NULL; // name of menu resource
- wc.lpszClassName = "subWin"; // name of window class
-
- RegisterClass(&wc);
- printf("creating window %d %d %d %d\n",x,y,width,height);
- EGLNativeWindowType ret = CreateWindowEx(
- WS_EX_NOPARENTNOTIFY, // do not bother our parent window
- "subWin",
- "sub",
- WS_CHILD|WS_DISABLED,
- x,y,width,height,
- p_window,
- NULL,
- NULL,
- NULL);
- ShowWindow(ret,SW_SHOW);
- return ret;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
- PostMessage(win, WM_CLOSE, 0, 0);
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp b/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp
deleted file mode 100644
index 837b0943b..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp
+++ /dev/null
@@ -1,73 +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.
-*/
-#include "ReadBuffer.h"
-#include <string.h>
-#include <assert.h>
-#include <limits.h>
-#include "ErrorLog.h"
-
-ReadBuffer::ReadBuffer(IOStream *stream, size_t bufsize)
-{
- m_size = bufsize;
- m_stream = stream;
- m_buf = (unsigned char*)malloc(m_size*sizeof(unsigned char));
- m_validData = 0;
- m_readPtr = m_buf;
-}
-
-ReadBuffer::~ReadBuffer()
-{
- free(m_buf);
-}
-
-int ReadBuffer::getData()
-{
- if ((m_validData > 0) && (m_readPtr > m_buf)) {
- memmove(m_buf, m_readPtr, m_validData);
- }
- // get fresh data into the buffer;
- size_t len = m_size - m_validData;
- if (len==0) {
- //we need to inc our buffer
- size_t new_size = m_size*2;
- unsigned char* new_buf;
- if (new_size < m_size) { // overflow check
- new_size = INT_MAX;
- }
-
- new_buf = (unsigned char*)realloc(m_buf, new_size);
- if (!new_buf) {
- ERR("Failed to alloc %zu bytes for ReadBuffer\n", new_size);
- return -1;
- }
- m_size = new_size;
- m_buf = new_buf;
- len = m_size - m_validData;
- }
- m_readPtr = m_buf;
- if (NULL != m_stream->read(m_buf + m_validData, &len)) {
- m_validData += len;
- return len;
- }
- return -1;
-}
-
-void ReadBuffer::consume(size_t amount)
-{
- assert(amount <= m_validData);
- m_validData -= amount;
- m_readPtr += amount;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h b/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h
deleted file mode 100644
index f2dfbce7e..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h
+++ /dev/null
@@ -1,36 +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 _READ_BUFFER_H
-#define _READ_BUFFER_H
-
-#include "IOStream.h"
-
-class ReadBuffer {
-public:
- ReadBuffer(IOStream *stream, size_t bufSize);
- ~ReadBuffer();
- int getData(); // get fresh data from the stream
- unsigned char *buf() { return m_readPtr; } // return the next read location
- size_t validData() { return m_validData; } // return the amount of valid data in readptr
- void consume(size_t amount); // notify that 'amount' data has been consumed;
-private:
- unsigned char *m_buf;
- unsigned char *m_readPtr;
- size_t m_size;
- size_t m_validData;
- IOStream *m_stream;
-};
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp b/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp
deleted file mode 100644
index f5cbd672e..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp
+++ /dev/null
@@ -1,76 +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.
-*/
-#include "RenderContext.h"
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-
-RenderContext *RenderContext::create(int p_config,
- RenderContextPtr p_shareContext,
- bool p_isGL2)
-{
- const FBConfig *fbconf = FBConfig::get(p_config);
- if (!fbconf) {
- return NULL;
- }
-
- RenderContext *c = new RenderContext();
- if (!c) {
- return NULL;
- }
-
- EGLContext share = EGL_NO_CONTEXT;
- if (p_shareContext.Ptr() != NULL) {
- share = p_shareContext->getEGLContext();
- }
-
- GLint glContextAttribs[] = {
- EGL_CONTEXT_CLIENT_VERSION, 1,
- EGL_NONE
- };
-
- if (p_isGL2) {
- glContextAttribs[1] = 2;
- c->m_isGL2 = true;
- }
-
- c->m_ctx = s_egl.eglCreateContext(FrameBuffer::getFB()->getDisplay(),
- fbconf->getEGLConfig(), share,
- glContextAttribs);
-
- if (c->m_ctx == EGL_NO_CONTEXT) {
- delete c;
- return NULL;
- }
-
- c->m_config = p_config;
- return c;
-}
-
-RenderContext::RenderContext() :
- m_ctx(EGL_NO_CONTEXT),
- m_config(0),
- m_isGL2(false)
-{
-}
-
-RenderContext::~RenderContext()
-{
- if (m_ctx != EGL_NO_CONTEXT) {
- s_egl.eglDestroyContext(FrameBuffer::getFB()->getDisplay(), m_ctx);
- }
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderContext.h b/emulator/opengl/host/libs/libOpenglRender/RenderContext.h
deleted file mode 100644
index 80ac43fe1..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderContext.h
+++ /dev/null
@@ -1,49 +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_RENDERCONTEXT_H
-#define _LIBRENDER_RENDERCONTEXT_H
-
-#include "emugl/common/smart_ptr.h"
-#include <EGL/egl.h>
-#include "GLDecoderContextData.h"
-
-class RenderContext;
-typedef emugl::SmartPtr<RenderContext> RenderContextPtr;
-
-class RenderContext
-{
-public:
- static RenderContext *create(int p_config, RenderContextPtr p_shareContext,
- bool p_isGL2 = false);
- ~RenderContext();
- int getConfig() const { return m_config; }
-
- EGLContext getEGLContext() const { return m_ctx; }
- bool isGL2() const { return m_isGL2; }
-
- GLDecoderContextData & decoderContextData() { return m_contextData; }
-
-private:
- RenderContext();
-
-private:
- EGLContext m_ctx;
- int m_config;
- bool m_isGL2;
- GLDecoderContextData m_contextData;
-};
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp b/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp
deleted file mode 100644
index c7c792aa4..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp
+++ /dev/null
@@ -1,370 +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.
-*/
-#include "renderControl_dec.h"
-#include "FrameBuffer.h"
-#include "FBConfig.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "ThreadInfo.h"
-
-static const GLint rendererVersion = 1;
-
-static GLint rcGetRendererVersion()
-{
- return rendererVersion;
-}
-
-static EGLint rcGetEGLVersion(EGLint* major, EGLint* minor)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return EGL_FALSE;
- }
- *major = (EGLint)fb->getCaps().eglMajor;
- *minor = (EGLint)fb->getCaps().eglMinor;
-
- return EGL_TRUE;
-}
-
-static EGLint rcQueryEGLString(EGLenum name, void* buffer, EGLint bufferSize)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- const char *str = s_egl.eglQueryString(fb->getDisplay(), name);
- if (!str) {
- return 0;
- }
-
- int len = strlen(str) + 1;
- if (!buffer || len > bufferSize) {
- return -len;
- }
-
- strcpy((char *)buffer, str);
- return len;
-}
-
-static EGLint rcGetGLString(EGLenum name, void* buffer, EGLint bufferSize)
-{
- RenderThreadInfo *tInfo = RenderThreadInfo::get();
- if (!tInfo || !tInfo->currContext.Ptr()) {
- return 0;
- }
-
- const char *str = NULL;
-#ifdef WITH_GLES2
- if (tInfo->currContext->isGL2()) {
- str = (const char *)s_gl2.glGetString(name);
- }
- else {
-#endif
- str = (const char *)s_gl.glGetString(name);
-#ifdef WITH_GLES2
- }
-#endif
-
- if (!str) {
- return 0;
- }
-
- int len = strlen(str) + 1;
- if (!buffer || len > bufferSize) {
- return -len;
- }
-
- strcpy((char *)buffer, str);
- return len;
-}
-
-static EGLint rcGetNumConfigs(uint32_t* numAttribs)
-{
- if (numAttribs) {
- *numAttribs = FBConfig::getNumAttribs();
- }
- return FBConfig::getNumConfigs();
-}
-
-static EGLint rcGetConfigs(uint32_t bufSize, GLuint* buffer)
-{
- int configSize = FBConfig::getNumAttribs();
- int nConfigs = FBConfig::getNumConfigs();
- uint32_t neededSize = (nConfigs + 1) * configSize * sizeof(GLuint);
- if (!buffer || bufSize < neededSize) {
- return -neededSize;
- }
- FBConfig::packConfigsInfo(buffer);
- return nConfigs;
-}
-
-static EGLint rcChooseConfig(EGLint *attribs, uint32_t attribs_size, uint32_t *configs, uint32_t configs_size)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- return FBConfig::chooseConfig(fb, attribs, configs, configs_size);
-}
-
-static EGLint rcGetFBParam(EGLint param)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- EGLint ret = 0;
-
- switch(param) {
- case FB_WIDTH:
- ret = fb->getWidth();
- break;
- case FB_HEIGHT:
- ret = fb->getHeight();
- break;
- case FB_XDPI:
- ret = 72; // XXX: should be implemented
- break;
- case FB_YDPI:
- ret = 72; // XXX: should be implemented
- break;
- case FB_FPS:
- ret = 60;
- break;
- case FB_MIN_SWAP_INTERVAL:
- ret = 1; // XXX: should be implemented
- break;
- case FB_MAX_SWAP_INTERVAL:
- ret = 1; // XXX: should be implemented
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-static uint32_t rcCreateContext(uint32_t config,
- uint32_t share, uint32_t glVersion)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- HandleType ret = fb->createRenderContext(config, share, glVersion == 2);
- return ret;
-}
-
-static void rcDestroyContext(uint32_t context)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
-
- fb->DestroyRenderContext(context);
-}
-
-static uint32_t rcCreateWindowSurface(uint32_t config,
- uint32_t width, uint32_t height)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- return fb->createWindowSurface(config, width, height);
-}
-
-static void rcDestroyWindowSurface(uint32_t windowSurface)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
-
- fb->DestroyWindowSurface( windowSurface );
-}
-
-static uint32_t rcCreateColorBuffer(uint32_t width,
- uint32_t height, GLenum internalFormat)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return 0;
- }
-
- return fb->createColorBuffer(width, height, internalFormat);
-}
-
-static int rcOpenColorBuffer2(uint32_t colorbuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return -1;
- }
- return fb->openColorBuffer( colorbuffer );
-}
-
-// Deprecated, kept for compatibility with old system images only.
-// Use rcOpenColorBuffer2 instead.
-static void rcOpenColorBuffer(uint32_t colorbuffer)
-{
- (void) rcOpenColorBuffer2(colorbuffer);
-}
-
-static void rcCloseColorBuffer(uint32_t colorbuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
- fb->closeColorBuffer( colorbuffer );
-}
-
-static int rcFlushWindowColorBuffer(uint32_t windowSurface)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return -1;
- }
- if (!fb->flushWindowSurfaceColorBuffer(windowSurface)) {
- return -1;
- }
- return 0;
-}
-
-static void rcSetWindowColorBuffer(uint32_t windowSurface,
- uint32_t colorBuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
- fb->setWindowSurfaceColorBuffer(windowSurface, colorBuffer);
-}
-
-static EGLint rcMakeCurrent(uint32_t context,
- uint32_t drawSurf, uint32_t readSurf)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return EGL_FALSE;
- }
-
- bool ret = fb->bindContext(context, drawSurf, readSurf);
-
- return (ret ? EGL_TRUE : EGL_FALSE);
-}
-
-static void rcFBPost(uint32_t colorBuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
-
- fb->post(colorBuffer);
-}
-
-static void rcFBSetSwapInterval(EGLint interval)
-{
- // XXX: TBD - should be implemented
-}
-
-static void rcBindTexture(uint32_t colorBuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
-
- fb->bindColorBufferToTexture(colorBuffer);
-}
-
-static void rcBindRenderbuffer(uint32_t colorBuffer)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return;
- }
-
- fb->bindColorBufferToRenderbuffer(colorBuffer);
-}
-
-static EGLint rcColorBufferCacheFlush(uint32_t colorBuffer,
- EGLint postCount, int forRead)
-{
- // XXX: TBD - should be implemented
- return 0;
-}
-
-static void rcReadColorBuffer(uint32_t colorBuffer,
- GLint x, GLint y,
- GLint width, GLint height,
- GLenum format, GLenum type, void* pixels)
-{
- // XXX: TBD - should be implemented
-}
-
-static int rcUpdateColorBuffer(uint32_t colorBuffer,
- GLint x, GLint y,
- GLint width, GLint height,
- GLenum format, GLenum type, void* pixels)
-{
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!fb) {
- return -1;
- }
-
- fb->updateColorBuffer(colorBuffer, x, y, width, height, format, type, pixels);
- return 0;
-}
-
-void initRenderControlContext(renderControl_decoder_context_t *dec)
-{
- dec->rcGetRendererVersion = rcGetRendererVersion;
- dec->rcGetEGLVersion = rcGetEGLVersion;
- dec->rcQueryEGLString = rcQueryEGLString;
- dec->rcGetGLString = rcGetGLString;
- dec->rcGetNumConfigs = rcGetNumConfigs;
- dec->rcGetConfigs = rcGetConfigs;
- dec->rcChooseConfig = rcChooseConfig;
- dec->rcGetFBParam = rcGetFBParam;
- dec->rcCreateContext = rcCreateContext;
- dec->rcDestroyContext = rcDestroyContext;
- dec->rcCreateWindowSurface = rcCreateWindowSurface;
- dec->rcDestroyWindowSurface = rcDestroyWindowSurface;
- dec->rcCreateColorBuffer = rcCreateColorBuffer;
- dec->rcOpenColorBuffer = rcOpenColorBuffer;
- dec->rcCloseColorBuffer = rcCloseColorBuffer;
- dec->rcSetWindowColorBuffer = rcSetWindowColorBuffer;
- dec->rcFlushWindowColorBuffer = rcFlushWindowColorBuffer;
- dec->rcMakeCurrent = rcMakeCurrent;
- dec->rcFBPost = rcFBPost;
- dec->rcFBSetSwapInterval = rcFBSetSwapInterval;
- dec->rcBindTexture = rcBindTexture;
- dec->rcBindRenderbuffer = rcBindRenderbuffer;
- dec->rcColorBufferCacheFlush = rcColorBufferCacheFlush;
- dec->rcReadColorBuffer = rcReadColorBuffer;
- dec->rcUpdateColorBuffer = rcUpdateColorBuffer;
- dec->rcOpenColorBuffer2 = rcOpenColorBuffer2;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderControl.h b/emulator/opengl/host/libs/libOpenglRender/RenderControl.h
deleted file mode 100644
index 233e809a6..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderControl.h
+++ /dev/null
@@ -1,21 +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 _RENDER_CONTROL_H
-#define _RENDER_CONTROL_H
-
-void initRenderControlContext(renderControl_decoder_context_t *dec);
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp b/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp
deleted file mode 100644
index 53c65eeb2..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp
+++ /dev/null
@@ -1,159 +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.
-*/
-#include "RenderServer.h"
-#include "TcpStream.h"
-#ifdef _WIN32
-#include "Win32PipeStream.h"
-#else
-#include "UnixStream.h"
-#endif
-#include "RenderThread.h"
-#include "FrameBuffer.h"
-#include <set>
-
-typedef std::set<RenderThread *> RenderThreadsSet;
-
-RenderServer::RenderServer() :
- m_lock(),
- m_listenSock(NULL),
- m_exiting(false)
-{
-}
-
-RenderServer::~RenderServer()
-{
- delete m_listenSock;
-}
-
-
-extern "C" int gRendererStreamMode;
-
-RenderServer *RenderServer::create(char* addr, size_t addrLen)
-{
- RenderServer *server = new RenderServer();
- if (!server) {
- return NULL;
- }
-
- if (gRendererStreamMode == STREAM_MODE_TCP) {
- server->m_listenSock = new TcpStream();
- } else {
-#ifdef _WIN32
- server->m_listenSock = new Win32PipeStream();
-#else
- server->m_listenSock = new UnixStream();
-#endif
- }
-
- char addrstr[SocketStream::MAX_ADDRSTR_LEN];
- if (server->m_listenSock->listen(addrstr) < 0) {
- ERR("RenderServer::create failed to listen\n");
- delete server;
- return NULL;
- }
-
- size_t len = strlen(addrstr) + 1;
- if (len > addrLen) {
- ERR("RenderServer address name too big for provided buffer: %zu > %zu\n",
- len, addrLen);
- delete server;
- return NULL;
- }
- memcpy(addr, addrstr, len);
-
- return server;
-}
-
-intptr_t RenderServer::main()
-{
- RenderThreadsSet threads;
-
- while(1) {
- SocketStream *stream = m_listenSock->accept();
- if (!stream) {
- fprintf(stderr,"Error accepting connection, aborting\n");
- break;
- }
-
- unsigned int clientFlags;
- if (!stream->readFully(&clientFlags, sizeof(unsigned int))) {
- fprintf(stderr,"Error reading clientFlags\n");
- delete stream;
- continue;
- }
-
- DBG("RenderServer: Got new stream!\n");
-
- // check if we have been requested to exit while waiting on accept
- if ((clientFlags & IOSTREAM_CLIENT_EXIT_SERVER) != 0) {
- m_exiting = true;
- break;
- }
-
- RenderThread *rt = RenderThread::create(stream, &m_lock);
- if (!rt) {
- fprintf(stderr,"Failed to create RenderThread\n");
- delete stream;
- stream = NULL;
- } else if (!rt->start()) {
- fprintf(stderr,"Failed to start RenderThread\n");
- delete rt;
- rt = NULL;
- }
-
- //
- // remove from the threads list threads which are
- // no longer running
- //
- for (RenderThreadsSet::iterator n,t = threads.begin();
- t != threads.end();
- t = n) {
- // first find next iterator
- n = t;
- n++;
-
- // delete and erase the current iterator
- // if thread is no longer running
- if ((*t)->isFinished()) {
- delete (*t);
- threads.erase(t);
- }
- }
-
- // if the thread has been created and started, insert it to the list
- if (rt) {
- threads.insert(rt);
- DBG("Started new RenderThread\n");
- }
- }
-
- //
- // Wait for all threads to finish
- //
- for (RenderThreadsSet::iterator t = threads.begin();
- t != threads.end();
- t++) {
- (*t)->wait(NULL);
- delete (*t);
- }
- threads.clear();
-
- //
- // de-initialize the FrameBuffer object
- //
- FrameBuffer::finalize();
- return 0;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderServer.h b/emulator/opengl/host/libs/libOpenglRender/RenderServer.h
deleted file mode 100644
index 8be8a17bb..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderServer.h
+++ /dev/null
@@ -1,42 +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 _LIB_OPENGL_RENDER_RENDER_SERVER_H
-#define _LIB_OPENGL_RENDER_RENDER_SERVER_H
-
-#include "SocketStream.h"
-#include "emugl/common/mutex.h"
-#include "emugl/common/thread.h"
-
-class RenderServer : public emugl::Thread
-{
-public:
- static RenderServer *create(char* addr, size_t addrLen);
- virtual ~RenderServer();
-
- virtual intptr_t main();
-
- bool isExiting() const { return m_exiting; }
-
-private:
- RenderServer();
-
-private:
- emugl::Mutex m_lock;
- SocketStream *m_listenSock;
- bool m_exiting;
-};
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp b/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
deleted file mode 100644
index 3dcfdb514..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
+++ /dev/null
@@ -1,162 +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.
-*/
-#include "RenderThread.h"
-#include "RenderControl.h"
-#include "ThreadInfo.h"
-#include "ReadBuffer.h"
-#include "TimeUtils.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "EGLDispatch.h"
-#include "FrameBuffer.h"
-
-#define STREAM_BUFFER_SIZE 4*1024*1024
-
-RenderThread::RenderThread(IOStream *stream, emugl::Mutex *lock) :
- emugl::Thread(),
- m_lock(lock),
- m_stream(stream),
- m_finished(false)
-{
-}
-
-RenderThread::~RenderThread()
-{
- delete m_stream;
-}
-
-RenderThread *RenderThread::create(IOStream *p_stream, emugl::Mutex *lock)
-{
- return new RenderThread(p_stream, lock);
-}
-
-intptr_t RenderThread::main()
-{
- RenderThreadInfo tInfo;
-
- //
- // initialize decoders
- //
- tInfo.m_glDec.initGL( gl_dispatch_get_proc_func, NULL );
- tInfo.m_gl2Dec.initGL( gl2_dispatch_get_proc_func, NULL );
- initRenderControlContext( &m_rcDec );
-
- ReadBuffer readBuf(m_stream, STREAM_BUFFER_SIZE);
-
- int stats_totalBytes = 0;
- long long stats_t0 = GetCurrentTimeMS();
-
- //
- // open dump file if RENDER_DUMP_DIR is defined
- //
- const char *dump_dir = getenv("RENDERER_DUMP_DIR");
- FILE *dumpFP = NULL;
- if (dump_dir) {
- size_t bsize = strlen(dump_dir) + 32;
- char *fname = new char[bsize];
- snprintf(fname,bsize,"%s/stream_%p", dump_dir, this);
- dumpFP = fopen(fname, "wb");
- if (!dumpFP) {
- fprintf(stderr,"Warning: stream dump failed to open file %s\n",fname);
- }
- delete [] fname;
- }
-
- while (1) {
-
- int stat = readBuf.getData();
- if (stat <= 0) {
- break;
- }
-
- //
- // log received bandwidth statistics
- //
- stats_totalBytes += readBuf.validData();
- long long dt = GetCurrentTimeMS() - stats_t0;
- if (dt > 1000) {
- //float dts = (float)dt / 1000.0f;
- //printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
- stats_totalBytes = 0;
- stats_t0 = GetCurrentTimeMS();
- }
-
- //
- // dump stream to file if needed
- //
- if (dumpFP) {
- int skip = readBuf.validData() - stat;
- fwrite(readBuf.buf()+skip, 1, readBuf.validData()-skip, dumpFP);
- fflush(dumpFP);
- }
-
- bool progress;
- do {
- progress = false;
-
- m_lock->lock();
- //
- // try to process some of the command buffer using the GLESv1 decoder
- //
- size_t last = tInfo.m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
- if (last > 0) {
- progress = true;
- readBuf.consume(last);
- }
-
- //
- // try to process some of the command buffer using the GLESv2 decoder
- //
- last = tInfo.m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
- if (last > 0) {
- progress = true;
- readBuf.consume(last);
- }
-
- //
- // try to process some of the command buffer using the
- // renderControl decoder
- //
- last = m_rcDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
- if (last > 0) {
- readBuf.consume(last);
- progress = true;
- }
-
- m_lock->unlock();
-
- } while( progress );
-
- }
-
- if (dumpFP) {
- fclose(dumpFP);
- }
-
- //
- // Release references to the current thread's context/surfaces if any
- //
- FrameBuffer::getFB()->bindContext(0, 0, 0);
- if (tInfo.currContext || tInfo.currDrawSurf || tInfo.currReadSurf) {
- fprintf(stderr, "ERROR: RenderThread exiting with current context/surfaces\n");
- }
-
- //
- // flag that this thread has finished execution
- m_finished = true;
-
- return 0;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/RenderThread.h b/emulator/opengl/host/libs/libOpenglRender/RenderThread.h
deleted file mode 100644
index c1f919a14..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/RenderThread.h
+++ /dev/null
@@ -1,44 +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 _LIB_OPENGL_RENDER_RENDER_THREAD_H
-#define _LIB_OPENGL_RENDER_RENDER_THREAD_H
-
-#include "IOStream.h"
-#include "GLDecoder.h"
-#include "renderControl_dec.h"
-
-#include "emugl/common/mutex.h"
-#include "emugl/common/thread.h"
-
-class RenderThread : public emugl::Thread
-{
-public:
- static RenderThread* create(IOStream* p_stream, emugl::Mutex* mutex);
- virtual ~RenderThread();
- bool isFinished() const { return m_finished; }
-
-private:
- RenderThread(IOStream* p_stream, emugl::Mutex* mutex);
- virtual intptr_t main();
-
-private:
- emugl::Mutex *m_lock;
- IOStream *m_stream;
- renderControl_decoder_context_t m_rcDec;
- bool m_finished;
-};
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp b/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp
deleted file mode 100644
index 5337009f8..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp
+++ /dev/null
@@ -1,42 +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.
-*/
-
-#include "ThreadInfo.h"
-#include "emugl/common/lazy_instance.h"
-#include "emugl/common/thread_store.h"
-
-namespace {
-
-class ThreadInfoStore : public ::emugl::ThreadStore {
-public:
- ThreadInfoStore() : ::emugl::ThreadStore(NULL) {}
-};
-
-} // namespace
-
-static ::emugl::LazyInstance<ThreadInfoStore> s_tls = LAZY_INSTANCE_INIT;
-
-RenderThreadInfo::RenderThreadInfo() {
- s_tls->set(this);
-}
-
-RenderThreadInfo::~RenderThreadInfo() {
- s_tls->set(NULL);
-}
-
-RenderThreadInfo* RenderThreadInfo::get() {
- return static_cast<RenderThreadInfo*>(s_tls->get());
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h b/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h
deleted file mode 100644
index 2e6752170..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h
+++ /dev/null
@@ -1,37 +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 _LIB_OPENGL_RENDER_THREAD_INFO_H
-#define _LIB_OPENGL_RENDER_THREAD_INFO_H
-
-#include "RenderContext.h"
-#include "WindowSurface.h"
-#include "GLDecoder.h"
-#include "GL2Decoder.h"
-
-struct RenderThreadInfo
-{
- RenderThreadInfo();
- ~RenderThreadInfo();
- static RenderThreadInfo* get();
-
- RenderContextPtr currContext;
- WindowSurfacePtr currDrawSurf;
- WindowSurfacePtr currReadSurf;
- GLDecoder m_glDec;
- GL2Decoder m_gl2Dec;
-};
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp b/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp
deleted file mode 100644
index bdda01a78..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp
+++ /dev/null
@@ -1,238 +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.
-*/
-#include "WindowSurface.h"
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include <GLES/glext.h>
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include <stdio.h>
-#include <string.h>
-#include "GLErrorLog.h"
-
-WindowSurface::WindowSurface() :
- m_fbObj(0),
- m_depthRB(0),
- m_stencilRB(0),
- m_eglSurface(NULL),
- m_attachedColorBuffer(NULL),
- m_readContext(NULL),
- m_drawContext(NULL),
- m_width(0),
- m_height(0),
- m_pbufWidth(0),
- m_pbufHeight(0)
-{
-}
-
-WindowSurface::~WindowSurface()
-{
- s_egl.eglDestroySurface(FrameBuffer::getFB()->getDisplay(), m_eglSurface);
-}
-
-WindowSurface *WindowSurface::create(int p_config, int p_width, int p_height)
-{
- const FBConfig *fbconf = FBConfig::get(p_config);
- if (!fbconf) {
- return NULL;
- }
-
- // allocate space for the WindowSurface object
- WindowSurface *win = new WindowSurface();
- if (!win) {
- return NULL;
- }
- win->m_fbconf = fbconf;
-
- //
- // Create a pbuffer to be used as the egl surface
- // for that window.
- //
- if (!win->resizePbuffer(p_width, p_height)) {
- delete win;
- return NULL;
- }
-
- win->m_width = p_width;
- win->m_height = p_height;
-
- return win;
-}
-
-//
-// flushColorBuffer - The function makes sure that the
-// previous attached color buffer is updated, if copy or blit should be done
-// in order to update it - it is being done here.
-//
-bool WindowSurface::flushColorBuffer()
-{
- if (m_attachedColorBuffer.Ptr() != NULL) {
- return blitToColorBuffer();
- }
- return true;
-}
-
-//
-// setColorBuffer - this function is called when a new color buffer needs to
-// be attached to the surface. The function doesn't make sure that the
-// previous attached color buffer is updated, this is done by flushColorBuffer
-//
-void WindowSurface::setColorBuffer(ColorBufferPtr p_colorBuffer)
-{
- m_attachedColorBuffer = p_colorBuffer;
-
- //
- // resize the window if the attached color buffer is of different
- // size
- //
- unsigned int cbWidth = m_attachedColorBuffer->getWidth();
- unsigned int cbHeight = m_attachedColorBuffer->getHeight();
-
- if (cbWidth != m_width || cbHeight != m_height) {
-
- if (m_pbufWidth && m_pbufHeight) {
- // if we use pbuffer, need to resize it
- resizePbuffer(cbWidth, cbHeight);
- }
-
- m_width = cbWidth;
- m_height = cbHeight;
- }
-}
-
-//
-// This function is called after the context and eglSurface is already
-// bound in the current thread (eglMakeCurrent has been called).
-// This function should take actions required on the other surface objects
-// when being bind/unbound
-//
-void WindowSurface::bind(RenderContextPtr p_ctx, SurfaceBindType p_bindType)
-{
- if (p_bindType == SURFACE_BIND_READ) {
- m_readContext = p_ctx;
- }
- else if (p_bindType == SURFACE_BIND_DRAW) {
- m_drawContext = p_ctx;
- }
- else if (p_bindType == SURFACE_BIND_READDRAW) {
- m_readContext = p_ctx;
- m_drawContext = p_ctx;
- }
- else {
- return; // bad param
- }
-
-}
-
-bool WindowSurface::blitToColorBuffer()
-{
- if (!m_width && !m_height) return false;
-
- if (m_attachedColorBuffer->getWidth() != m_width ||
- m_attachedColorBuffer->getHeight() != m_height) {
- // XXX: should never happen - how this needs to be handled?
- fprintf(stderr, "Dimensions do not match\n");
- return false;
- }
-
- //
- // Make the surface current
- //
- EGLContext prevContext = s_egl.eglGetCurrentContext();
- EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
- EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
- FrameBuffer *fb = FrameBuffer::getFB();
- if (!m_drawContext.Ptr()) {
- fprintf(stderr, "Draw context is NULL\n");
- return false;
- }
- if (!s_egl.eglMakeCurrent(fb->getDisplay(), m_eglSurface,
- m_eglSurface, m_drawContext->getEGLContext())) {
- fprintf(stderr, "Error making draw context current\n");
- return false;
- }
-
- m_attachedColorBuffer->blitFromCurrentReadBuffer();
-
- // restore current context/surface
- s_egl.eglMakeCurrent(fb->getDisplay(), prevDrawSurf,
- prevReadSurf, prevContext);
- return true;
-}
-
-bool WindowSurface::resizePbuffer(unsigned int p_width, unsigned int p_height)
-{
- if (m_eglSurface &&
- m_pbufWidth == p_width &&
- m_pbufHeight == p_height) {
- // no need to resize
- return true;
- }
-
- FrameBuffer *fb = FrameBuffer::getFB();
-
- EGLContext prevContext = s_egl.eglGetCurrentContext();
- EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
- EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
- EGLSurface prevPbuf = m_eglSurface;
- bool needRebindContext = m_eglSurface &&
- (prevReadSurf == m_eglSurface ||
- prevDrawSurf == m_eglSurface);
-
- if (needRebindContext) {
- s_egl.eglMakeCurrent(fb->getDisplay(), EGL_NO_SURFACE,
- EGL_NO_SURFACE, EGL_NO_CONTEXT);
- }
-
- //
- // Destroy previous surface
- //
- if (m_eglSurface) {
- s_egl.eglDestroySurface(fb->getDisplay(), m_eglSurface);
- m_eglSurface = NULL;
- }
-
- //
- // Create pbuffer surface.
- //
- EGLint pbufAttribs[5];
- pbufAttribs[0] = EGL_WIDTH;
- pbufAttribs[1] = p_width;
- pbufAttribs[2] = EGL_HEIGHT;
- pbufAttribs[3] = p_height;
- pbufAttribs[4] = EGL_NONE;
-
- m_eglSurface = s_egl.eglCreatePbufferSurface(fb->getDisplay(),
- m_fbconf->getEGLConfig(),
- pbufAttribs);
- if (m_eglSurface == EGL_NO_SURFACE) {
- fprintf(stderr, "Renderer error: failed to create/resize pbuffer!!\n");
- return false;
- }
-
- m_pbufWidth = p_width;
- m_pbufHeight = p_height;
-
- if (needRebindContext) {
- s_egl.eglMakeCurrent(fb->getDisplay(),
- (prevDrawSurf==prevPbuf) ? m_eglSurface : prevDrawSurf,
- (prevReadSurf==prevPbuf) ? m_eglSurface : prevReadSurf,
- prevContext);
- }
-
- return true;
-}
diff --git a/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h b/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h
deleted file mode 100644
index fe35a94a6..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h
+++ /dev/null
@@ -1,71 +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_WINDOWSURFACE_H
-#define _LIBRENDER_WINDOWSURFACE_H
-
-#include "ColorBuffer.h"
-#include "RenderContext.h"
-#include "FBConfig.h"
-#include "emugl/common/smart_ptr.h"
-#include "FixedBuffer.h"
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-enum SurfaceBindType {
- SURFACE_BIND_READ,
- SURFACE_BIND_DRAW,
- SURFACE_BIND_READDRAW
-};
-
-class WindowSurface
-{
-public:
- static WindowSurface *create(int p_config, int p_width, int p_height);
- ~WindowSurface();
- EGLSurface getEGLSurface() const { return m_eglSurface; }
-
- void setColorBuffer(ColorBufferPtr p_colorBuffer);
- bool flushColorBuffer();
- void bind(RenderContextPtr p_ctx, SurfaceBindType p_bindType);
-
-private:
- WindowSurface();
-
- bool blitToColorBuffer(); // copy pbuffer content with texload and blit
- bool resizePbuffer(unsigned int p_width, unsigned int p_height);
-
-private:
- GLuint m_fbObj; // GLES Framebuffer object (when EGLimage is used)
- GLuint m_depthRB;
- GLuint m_stencilRB;
- EGLSurface m_eglSurface;
- ColorBufferPtr m_attachedColorBuffer;
- RenderContextPtr m_readContext;
- RenderContextPtr m_drawContext;
- GLuint m_width;
- GLuint m_height;
- GLuint m_pbufWidth;
- GLuint m_pbufHeight;
- bool m_useEGLImage;
- bool m_useBindToTexture;
- FixedBuffer m_xferBuffer;
- FixedBuffer m_xUpdateBuf;
- const FBConfig *m_fbconf;
-};
-
-typedef emugl::SmartPtr<WindowSurface> WindowSurfacePtr;
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/egl_proc.h b/emulator/opengl/host/libs/libOpenglRender/egl_proc.h
deleted file mode 100644
index 01dc4ae24..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/egl_proc.h
+++ /dev/null
@@ -1,68 +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 _EGL_PROC_H
-#define _EGL_PROC_H
-
-#include <EGL/egl.h>
-#define EGL_EGLEXT_PROTOTYPES
-#include <EGL/eglext.h>
-
-typedef EGLint (EGLAPIENTRY *eglGetError_t) ();
-typedef EGLDisplay (EGLAPIENTRY *eglGetDisplay_t) (EGLNativeDisplayType);
-typedef EGLBoolean (EGLAPIENTRY *eglInitialize_t) (EGLDisplay, EGLint*, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglTerminate_t) (EGLDisplay);
-typedef char* (EGLAPIENTRY *eglQueryString_t) (EGLDisplay, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglGetConfigs_t) (EGLDisplay, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglChooseConfig_t) (EGLDisplay, const EGLint*, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglGetConfigAttrib_t) (EGLDisplay, EGLConfig, EGLint, EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreateWindowSurface_t) (EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreatePbufferSurface_t) (EGLDisplay, EGLConfig, const EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreatePixmapSurface_t) (EGLDisplay, EGLConfig, EGLNativePixmapType, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroySurface_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (EGLAPIENTRY *eglQuerySurface_t) (EGLDisplay, EGLSurface, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglBindAPI_t) (EGLenum);
-typedef EGLenum (* eglQueryAPI_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglWaitClient_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglReleaseThread_t) ();
-typedef EGLSurface (EGLAPIENTRY *eglCreatePbufferFromClientBuffer_t) (EGLDisplay, EGLenum, EGLClientBuffer, EGLConfig, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglSurfaceAttrib_t) (EGLDisplay, EGLSurface, EGLint, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglBindTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglReleaseTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglSwapInterval_t) (EGLDisplay, EGLint);
-typedef EGLContext (EGLAPIENTRY *eglCreateContext_t) (EGLDisplay, EGLConfig, EGLContext, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroyContext_t) (EGLDisplay, EGLContext);
-typedef EGLBoolean (EGLAPIENTRY *eglMakeCurrent_t) (EGLDisplay, EGLSurface, EGLSurface, EGLContext);
-typedef EGLContext (EGLAPIENTRY *eglGetCurrentContext_t) ();
-typedef EGLSurface (EGLAPIENTRY *eglGetCurrentSurface_t) (EGLint);
-typedef EGLDisplay (EGLAPIENTRY *eglGetCurrentDisplay_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglQueryContext_t) (EGLDisplay, EGLContext, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglWaitGL_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglWaitNative_t) (EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglSwapBuffers_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (EGLAPIENTRY *eglCopyBuffers_t) (EGLDisplay, EGLSurface, EGLNativePixmapType);
-typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRY *eglGetProcAddress_t) (const char*);
-typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHR_t) (EGLDisplay, EGLSurface, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHR_t) (EGLDisplay, EGLSurface);
-typedef EGLImageKHR (EGLAPIENTRY *eglCreateImageKHR_t) (EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroyImageKHR_t) (EGLDisplay, EGLImageKHR image);
-typedef EGLSyncKHR (EGLAPIENTRY *eglCreateSyncKHR_t) (EGLDisplay, EGLenum, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroySyncKHR_t) (EGLDisplay, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRY *eglClientWaitSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRY *eglSignalSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLenum);
-typedef EGLBoolean (EGLAPIENTRY *eglGetSyncAttribKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglSetSwapRectangleANDROID_t) (EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint);
-
-#endif // of _EGL_PROC_H
diff --git a/emulator/opengl/host/libs/libOpenglRender/gl_proc.h b/emulator/opengl/host/libs/libOpenglRender/gl_proc.h
deleted file mode 100644
index 465a10dfe..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/gl_proc.h
+++ /dev/null
@@ -1,296 +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 _GLES_PROC_H
-#define _GLES_PROC_H
-
-#include <GLES/gl.h>
-#define GL_GLEXT_PROTOTYPES
-#include <GLES/glext.h>
-
-typedef void (GL_APIENTRY *glAlphaFunc_t) (GLenum, GLclampf);
-typedef void (GL_APIENTRY *glClearColor_t) (GLclampf, GLclampf, GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glClearDepthf_t) (GLclampf);
-typedef void (GL_APIENTRY *glClipPlanef_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glColor4f_t) (GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glDepthRangef_t) (GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glFogf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glFogfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glFrustumf_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glGetClipPlanef_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glGetFloatv_t) (GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetLightfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetMaterialfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexEnvfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexParameterfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glLightModelf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glLightModelfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glLightf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glLightfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glLineWidth_t) (GLfloat);
-typedef void (GL_APIENTRY *glLoadMatrixf_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glMaterialf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glMaterialfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glMultMatrixf_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glMultiTexCoord4f_t) (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glNormal3f_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glOrthof_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glPointParameterf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glPointParameterfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glPointSize_t) (GLfloat);
-typedef void (GL_APIENTRY *glPolygonOffset_t) (GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glRotatef_t) (GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glScalef_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glTexEnvf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexEnvfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTexParameterf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexParameterfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTranslatef_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glActiveTexture_t) (GLenum);
-typedef void (GL_APIENTRY *glAlphaFuncx_t) (GLenum, GLclampx);
-typedef void (GL_APIENTRY *glBindBuffer_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glBindTexture_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glBlendFunc_t) (GLenum, GLenum);
-typedef void (GL_APIENTRY *glBufferData_t) (GLenum, GLsizeiptr, const GLvoid*, GLenum);
-typedef void (GL_APIENTRY *glBufferSubData_t) (GLenum, GLintptr, GLsizeiptr, const GLvoid*);
-typedef void (GL_APIENTRY *glClear_t) (GLbitfield);
-typedef void (GL_APIENTRY *glClearColorx_t) (GLclampx, GLclampx, GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glClearDepthx_t) (GLclampx);
-typedef void (GL_APIENTRY *glClearStencil_t) (GLint);
-typedef void (GL_APIENTRY *glClientActiveTexture_t) (GLenum);
-typedef void (GL_APIENTRY *glClipPlanex_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glColor4ub_t) (GLubyte, GLubyte, GLubyte, GLubyte);
-typedef void (GL_APIENTRY *glColor4x_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glColorMask_t) (GLboolean, GLboolean, GLboolean, GLboolean);
-typedef void (GL_APIENTRY *glColorPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCompressedTexImage2D_t) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCompressedTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCopyTexImage2D_t) (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-typedef void (GL_APIENTRY *glCopyTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glCullFace_t) (GLenum);
-typedef void (GL_APIENTRY *glDeleteBuffers_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glDeleteTextures_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glDepthFunc_t) (GLenum);
-typedef void (GL_APIENTRY *glDepthMask_t) (GLboolean);
-typedef void (GL_APIENTRY *glDepthRangex_t) (GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glDisable_t) (GLenum);
-typedef void (GL_APIENTRY *glDisableClientState_t) (GLenum);
-typedef void (GL_APIENTRY *glDrawArrays_t) (GLenum, GLint, GLsizei);
-typedef void (GL_APIENTRY *glDrawElements_t) (GLenum, GLsizei, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glEnable_t) (GLenum);
-typedef void (GL_APIENTRY *glEnableClientState_t) (GLenum);
-typedef void (GL_APIENTRY *glFinish_t) ();
-typedef void (GL_APIENTRY *glFlush_t) ();
-typedef void (GL_APIENTRY *glFogx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glFogxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glFrontFace_t) (GLenum);
-typedef void (GL_APIENTRY *glFrustumx_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glGetBooleanv_t) (GLenum, GLboolean*);
-typedef void (GL_APIENTRY *glGetBufferParameteriv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetClipPlanex_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glGenBuffers_t) (GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glGenTextures_t) (GLsizei, GLuint*);
-typedef GLenum (GL_APIENTRY *glGetError_t) ();
-typedef void (GL_APIENTRY *glGetFixedv_t) (GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetIntegerv_t) (GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetLightxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetMaterialxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetPointerv_t) (GLenum, GLvoid*);
-typedef const GLubyte* (GL_APIENTRY *glGetString_t) (GLenum);
-typedef void (GL_APIENTRY *glGetTexEnviv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexEnvxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexParameteriv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexParameterxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glHint_t) (GLenum, GLenum);
-typedef GLboolean (GL_APIENTRY *glIsBuffer_t) (GLuint);
-typedef GLboolean (GL_APIENTRY *glIsEnabled_t) (GLenum);
-typedef GLboolean (GL_APIENTRY *glIsTexture_t) (GLuint);
-typedef void (GL_APIENTRY *glLightModelx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightModelxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLightx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLineWidthx_t) (GLfixed);
-typedef void (GL_APIENTRY *glLoadIdentity_t) ();
-typedef void (GL_APIENTRY *glLoadMatrixx_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glLogicOp_t) (GLenum);
-typedef void (GL_APIENTRY *glMaterialx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glMaterialxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glMatrixMode_t) (GLenum);
-typedef void (GL_APIENTRY *glMultMatrixx_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMultiTexCoord4x_t) (GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormal3x_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormalPointer_t) (GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glOrthox_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPixelStorei_t) (GLenum, GLint);
-typedef void (GL_APIENTRY *glPointParameterx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glPointSizex_t) (GLfixed);
-typedef void (GL_APIENTRY *glPolygonOffsetx_t) (GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPopMatrix_t) ();
-typedef void (GL_APIENTRY *glPushMatrix_t) ();
-typedef void (GL_APIENTRY *glReadPixels_t) (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glRotatex_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glSampleCoverage_t) (GLclampf, GLboolean);
-typedef void (GL_APIENTRY *glSampleCoveragex_t) (GLclampx, GLboolean);
-typedef void (GL_APIENTRY *glScalex_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glScissor_t) (GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glShadeModel_t) (GLenum);
-typedef void (GL_APIENTRY *glStencilFunc_t) (GLenum, GLint, GLuint);
-typedef void (GL_APIENTRY *glStencilMask_t) (GLuint);
-typedef void (GL_APIENTRY *glStencilOp_t) (GLenum, GLenum, GLenum);
-typedef void (GL_APIENTRY *glTexCoordPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glTexEnvi_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexEnvx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexEnviv_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexEnvxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexImage2D_t) (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glTexParameteri_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexParameterx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexParameteriv_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexParameterxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glTranslatex_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glVertexPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glViewport_t) (GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glPointSizePointerOES_t) (GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glBlendEquationSeparateOES_t) (GLenum, GLenum);
-typedef void (GL_APIENTRY *glBlendFuncSeparateOES_t) (GLenum, GLenum, GLenum, GLenum);
-typedef void (GL_APIENTRY *glBlendEquationOES_t) (GLenum);
-typedef void (GL_APIENTRY *glDrawTexsOES_t) (GLshort, GLshort, GLshort, GLshort, GLshort);
-typedef void (GL_APIENTRY *glDrawTexiOES_t) (GLint, GLint, GLint, GLint, GLint);
-typedef void (GL_APIENTRY *glDrawTexxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glDrawTexsvOES_t) (const GLshort*);
-typedef void (GL_APIENTRY *glDrawTexivOES_t) (const GLint*);
-typedef void (GL_APIENTRY *glDrawTexxvOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glDrawTexfOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glDrawTexfvOES_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glEGLImageTargetTexture2DOES_t) (GLenum, GLeglImageOES);
-typedef void (GL_APIENTRY *glEGLImageTargetRenderbufferStorageOES_t) (GLenum, GLeglImageOES);
-typedef void (GL_APIENTRY *glAlphaFuncxOES_t) (GLenum, GLclampx);
-typedef void (GL_APIENTRY *glClearColorxOES_t) (GLclampx, GLclampx, GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glClearDepthxOES_t) (GLclampx);
-typedef void (GL_APIENTRY *glClipPlanexOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glColor4xOES_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glDepthRangexOES_t) (GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glFogxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glFogxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glFrustumxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glGetClipPlanexOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glGetFixedvOES_t) (GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetLightxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetMaterialxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexEnvxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexParameterxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glLightModelxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightModelxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLightxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLineWidthxOES_t) (GLfixed);
-typedef void (GL_APIENTRY *glLoadMatrixxOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMaterialxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glMaterialxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glMultMatrixxOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMultiTexCoord4xOES_t) (GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormal3xOES_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glOrthoxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glPointSizexOES_t) (GLfixed);
-typedef void (GL_APIENTRY *glPolygonOffsetxOES_t) (GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glRotatexOES_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glSampleCoveragexOES_t) (GLclampx, GLboolean);
-typedef void (GL_APIENTRY *glScalexOES_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glTexEnvxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexEnvxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexParameterxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexParameterxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTranslatexOES_t) (GLfixed, GLfixed, GLfixed);
-typedef GLboolean (GL_APIENTRY *glIsRenderbufferOES_t) (GLuint);
-typedef void (GL_APIENTRY *glBindRenderbufferOES_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glDeleteRenderbuffersOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenRenderbuffersOES_t) (GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glRenderbufferStorageOES_t) (GLenum, GLenum, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glGetRenderbufferParameterivOES_t) (GLenum, GLenum, GLint*);
-typedef GLboolean (GL_APIENTRY *glIsFramebufferOES_t) (GLuint);
-typedef void (GL_APIENTRY *glBindFramebufferOES_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glDeleteFramebuffersOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenFramebuffersOES_t) (GLsizei, GLuint*);
-typedef GLenum (GL_APIENTRY *glCheckFramebufferStatusOES_t) (GLenum);
-typedef void (GL_APIENTRY *glFramebufferRenderbufferOES_t) (GLenum, GLenum, GLenum, GLuint);
-typedef void (GL_APIENTRY *glFramebufferTexture2DOES_t) (GLenum, GLenum, GLenum, GLuint, GLint);
-typedef void (GL_APIENTRY *glGetFramebufferAttachmentParameterivOES_t) (GLenum, GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGenerateMipmapOES_t) (GLenum);
-typedef void* (GL_APIENTRY *glMapBufferOES_t) (GLenum, GLenum);
-typedef GLboolean (GL_APIENTRY *glUnmapBufferOES_t) (GLenum);
-typedef void (GL_APIENTRY *glGetBufferPointervOES_t) (GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glCurrentPaletteMatrixOES_t) (GLuint);
-typedef void (GL_APIENTRY *glLoadPaletteFromModelViewMatrixOES_t) ();
-typedef void (GL_APIENTRY *glMatrixIndexPointerOES_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glWeightPointerOES_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef GLbitfield (GL_APIENTRY *glQueryMatrixxOES_t) (GLfixed, GLint);
-typedef void (GL_APIENTRY *glDepthRangefOES_t) (GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glFrustumfOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glOrthofOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glClipPlanefOES_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glGetClipPlanefOES_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glClearDepthfOES_t) (GLclampf);
-typedef void (GL_APIENTRY *glTexGenfOES_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexGenfvOES_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTexGeniOES_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexGenivOES_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexGenxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexGenxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glGetTexGenfvOES_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexGenivOES_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexGenxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glBindVertexArrayOES_t) (GLuint);
-typedef void (GL_APIENTRY *glDeleteVertexArraysOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenVertexArraysOES_t) (GLsizei, GLuint*);
-typedef GLboolean (GL_APIENTRY *glIsVertexArrayOES_t) (GLuint);
-typedef void (GL_APIENTRY *glDiscardFramebufferEXT_t) (GLenum, GLsizei, const GLenum*);
-typedef void (GL_APIENTRY *glMultiDrawArraysEXT_t) (GLenum, GLint*, GLsizei*, GLsizei);
-typedef void (GL_APIENTRY *glMultiDrawElementsEXT_t) (GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei);
-typedef void (GL_APIENTRY *glClipPlanefIMG_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glClipPlanexIMG_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glRenderbufferStorageMultisampleIMG_t) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glFramebufferTexture2DMultisampleIMG_t) (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
-typedef void (GL_APIENTRY *glDeleteFencesNV_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenFencesNV_t) (GLsizei, GLuint*);
-typedef GLboolean (GL_APIENTRY *glIsFenceNV_t) (GLuint);
-typedef GLboolean (GL_APIENTRY *glTestFenceNV_t) (GLuint);
-typedef void (GL_APIENTRY *glGetFenceivNV_t) (GLuint, GLenum, GLint*);
-typedef void (GL_APIENTRY *glFinishFenceNV_t) (GLuint);
-typedef void (GL_APIENTRY *glSetFenceNV_t) (GLuint, GLenum);
-typedef void (GL_APIENTRY *glGetDriverControlsQCOM_t) (GLint*, GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glGetDriverControlStringQCOM_t) (GLuint, GLsizei, GLsizei*, GLchar*);
-typedef void (GL_APIENTRY *glEnableDriverControlQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glDisableDriverControlQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glExtGetTexturesQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetBuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetRenderbuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetFramebuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetTexLevelParameterivQCOM_t) (GLuint, GLenum, GLint, GLenum, GLint*);
-typedef void (GL_APIENTRY *glExtTexObjectStateOverrideiQCOM_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glExtGetTexSubImageQCOM_t) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glExtGetBufferPointervQCOM_t) (GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glExtGetShadersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetProgramsQCOM_t) (GLuint*, GLint, GLint*);
-typedef GLboolean (GL_APIENTRY *glExtIsProgramBinaryQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glExtGetProgramBinarySourceQCOM_t) (GLuint, GLenum, GLchar*, GLint*);
-typedef void (GL_APIENTRY *glStartTilingQCOM_t) (GLuint, GLuint, GLuint, GLuint, GLbitfield);
-typedef void (GL_APIENTRY *glEndTilingQCOM_t) (GLbitfield);
-
-
-#endif
diff --git a/emulator/opengl/host/libs/libOpenglRender/render_api.cpp b/emulator/opengl/host/libs/libOpenglRender/render_api.cpp
deleted file mode 100644
index 95860918e..000000000
--- a/emulator/opengl/host/libs/libOpenglRender/render_api.cpp
+++ /dev/null
@@ -1,267 +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.
-*/
-#include "libOpenglRender/render_api.h"
-#include "IOStream.h"
-#include "FrameBuffer.h"
-#include "RenderServer.h"
-#include "TimeUtils.h"
-
-#include "TcpStream.h"
-#ifdef _WIN32
-#include "Win32PipeStream.h"
-#else
-#include "UnixStream.h"
-#endif
-
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-
-static RenderServer *s_renderThread = NULL;
-static char s_renderAddr[256];
-
-static IOStream *createRenderThread(int p_stream_buffer_size,
- unsigned int clientFlags);
-
-int initLibrary(void)
-{
- //
- // Load EGL Plugin
- //
- if (!init_egl_dispatch()) {
- // Failed to load EGL
- printf("Failed to init_egl_dispatch\n");
- return false;
- }
-
- //
- // Load GLES Plugin
- //
- if (!init_gl_dispatch()) {
- // Failed to load GLES
- ERR("Failed to init_gl_dispatch\n");
- return false;
- }
-
- /* failure to init the GLES2 dispatch table is not fatal */
- init_gl2_dispatch();
-
- return true;
-}
-
-int initOpenGLRenderer(int width, int height, char* addr, size_t addrLen)
-{
-
- //
- // Fail if renderer is already initialized
- //
- if (s_renderThread) {
- return false;
- }
-
- //
- // initialize the renderer and listen to connections
- // on a thread in the current process.
- //
- bool inited = FrameBuffer::initialize(width, height);
- if (!inited) {
- return false;
- }
-
- s_renderThread = RenderServer::create(addr, addrLen);
- if (!s_renderThread) {
- return false;
- }
- strncpy(s_renderAddr, addr, sizeof(s_renderAddr));
-
- s_renderThread->start();
-
- return true;
-}
-
-void setPostCallback(OnPostFn onPost, void* onPostContext)
-{
- FrameBuffer* fb = FrameBuffer::getFB();
- if (fb) {
- fb->setPostCallback(onPost, onPostContext);
- }
-}
-
-void getHardwareStrings(const char** vendor, const char** renderer, const char** version)
-{
- FrameBuffer* fb = FrameBuffer::getFB();
- if (fb) {
- fb->getGLStrings(vendor, renderer, version);
- } else {
- *vendor = *renderer = *version = NULL;
- }
-}
-
-int stopOpenGLRenderer(void)
-{
- bool ret = false;
-
- // open a dummy connection to the renderer to make it
- // realize the exit request.
- // (send the exit request in clientFlags)
- IOStream *dummy = createRenderThread(8, IOSTREAM_CLIENT_EXIT_SERVER);
- if (!dummy) return false;
-
- if (s_renderThread) {
-
- // wait for the thread to exit
- ret = s_renderThread->wait(NULL);
-
- delete s_renderThread;
- s_renderThread = NULL;
- }
-
- return ret;
-}
-
-int createOpenGLSubwindow(FBNativeWindowType window,
- int x, int y, int width, int height, float zRot)
-{
- if (s_renderThread) {
- return FrameBuffer::setupSubWindow(window,x,y,width,height, zRot);
- }
- else {
- //
- // XXX: should be implemented by sending the renderer process
- // a request
- ERR("%s not implemented for separate renderer process !!!\n",
- __FUNCTION__);
- }
- return false;
-}
-
-int destroyOpenGLSubwindow(void)
-{
- if (s_renderThread) {
- return FrameBuffer::removeSubWindow();
- }
- else {
- //
- // XXX: should be implemented by sending the renderer process
- // a request
- ERR("%s not implemented for separate renderer process !!!\n",
- __FUNCTION__);
- return false;
- }
-}
-
-void setOpenGLDisplayRotation(float zRot)
-{
- if (s_renderThread) {
- FrameBuffer *fb = FrameBuffer::getFB();
- if (fb) {
- fb->setDisplayRotation(zRot);
- }
- }
- else {
- //
- // XXX: should be implemented by sending the renderer process
- // a request
- ERR("%s not implemented for separate renderer process !!!\n",
- __FUNCTION__);
- }
-}
-
-void repaintOpenGLDisplay(void)
-{
- if (s_renderThread) {
- FrameBuffer *fb = FrameBuffer::getFB();
- if (fb) {
- fb->repost();
- }
- }
- else {
- //
- // XXX: should be implemented by sending the renderer process
- // a request
- ERR("%s not implemented for separate renderer process !!!\n",
- __FUNCTION__);
- }
-}
-
-
-/* NOTE: For now, always use TCP mode by default, until the emulator
- * has been updated to support Unix and Win32 pipes
- */
-#define DEFAULT_STREAM_MODE STREAM_MODE_TCP
-
-int gRendererStreamMode = DEFAULT_STREAM_MODE;
-
-IOStream *createRenderThread(int p_stream_buffer_size, unsigned int clientFlags)
-{
- SocketStream* stream = NULL;
-
- if (gRendererStreamMode == STREAM_MODE_TCP) {
- stream = new TcpStream(p_stream_buffer_size);
- } else {
-#ifdef _WIN32
- stream = new Win32PipeStream(p_stream_buffer_size);
-#else /* !_WIN32 */
- stream = new UnixStream(p_stream_buffer_size);
-#endif
- }
-
- if (!stream) {
- ERR("createRenderThread failed to create stream\n");
- return NULL;
- }
- if (stream->connect(s_renderAddr) < 0) {
- ERR("createRenderThread failed to connect\n");
- delete stream;
- return NULL;
- }
-
- //
- // send clientFlags to the renderer
- //
- unsigned int *pClientFlags =
- (unsigned int *)stream->allocBuffer(sizeof(unsigned int));
- *pClientFlags = clientFlags;
- stream->commitBuffer(sizeof(unsigned int));
-
- return stream;
-}
-
-int
-setStreamMode(int mode)
-{
- switch (mode) {
- case STREAM_MODE_DEFAULT:
- mode = DEFAULT_STREAM_MODE;
- break;
-
- case STREAM_MODE_TCP:
- break;
-
-#ifndef _WIN32
- case STREAM_MODE_UNIX:
- break;
-#else /* _WIN32 */
- case STREAM_MODE_PIPE:
- break;
-#endif /* _WIN32 */
- default:
- // Invalid stream mode
- return false;
- }
- gRendererStreamMode = mode;
- return true;
-}