Files
android_development/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h
Guy Zadikario 1f0d3939ed emulatgor opengl: First commit of the host renderer library.
This is a library which includes all the OpenGL renderer functionality,
it is packaged in a library so that both the renderer process and the emulator
program will be able to use that functionality.

NOTES:
   1) gl_proc.h and GLDispatch.{h,cpp} in this commit will be replaced
      with the decoder auto-generated dispatch in a later commit, the
      auto-generated dispatch is currently missing some extension functions
      required for the renderer.
   2) look at host/include/libOpenglRender/render_api.h for the external
      interface defined for this library (to be used by the emulator).

The following is a description of each component:

FrameBuffer - The main object which manages the framebuffer and color buffers.
              This is a singleton which get initialized through its initialize
              static function. It initializes the OpenGL renderer and must be
              called first. This initialization function is not thread safe so
              it must be called before any thread that is calling to this
              library is created.

FBConfig - Includes a static set of configs supported by the renderer which get
           initialized during FrameBuffer initialization phase. Also,
           an instance of this class includes the a description of one frame
           buffer configuration supported by the renderer.

RenderContext - encapsulate a rendering context state.

ColorBuffer - implements a color buffer object as a texture which can be bind
              as render target or source.

WindowSurface - implements the functionality of a native window which can be
                bound to a rendering context and its target ColorBuffer can
                be specified and replaced.

ThreadInfo - holds per-thread information.

EGLDispatch - loads the EGL plugin library, all egl calls are made through
              this dispatch table which get initialized during initialization
              phase.

GLDispatch - loads the GLES plugin library, all GLES calls are made through
             this dispatch table which get initialized during initialization
             phase - This will be replaced by the auto-generated code of the
             decoder ...

RenderThread - implements a thread that reads command tokens from an IOStream
               and decode it.

RenderControl - implements the host side implementation of the renderControl
                API, when a renderControl token is decoded from the stream
                it is dispatched to this implementation.

RenderServer - implements a TCP server which listens to port number and
               launcges a RenderThread for each new connection.

Change-Id: I9f34d17bdfcb715893a13cd30086c767f499df87
2011-04-16 10:45:39 +03:00

73 lines
2.5 KiB
C

/*
* 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