This sample program simulates the use of the renderer api as it should
be used from the emulator program. It opens a SDL window, initialize the
renderer, process events on the window and terminate the renderer when the
window is closed.
Change-Id: If983b4ce6465dee71f548e8edaf2b56b6443f7b0
This is the host renderer executable. It is a small process which
just calls into libOpenglRender library. The process is invoked
through the initOpenGLRenderer function of libOpenglRenderer.
Change-Id: I85af075b5eb751ffb9543ecbd8e7fc155054f146
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
This is just a set of OS dependant functionality needed by the
emulator OpenGL host renderer. It currently has implementation for
Linux and Windows only.
osDynLibrary - dlopen/dlsym abstraction
osProcess - interface to launch a new process, wait and kill it.
osThread - abstraction interface for creating a thread.
Change-Id: Ib0264592d8c87e865da87acf5c94e2b331801ca4
This is the emulator opengl implementation of gralloc.
NOTE that it is currently build only if BUILD_EMULATOR_OPENGL_DRIVER
is defined, This is because the other driver peices (EGL/GLES) are
still missing.
Change-Id: If48f5ed619df6efb00cb4e590d99ce49d87875f6
This is a static library of utilities shared between the emulator opengl
system components, gralloc, EGL, GLES. In includes host connection functionality
and access to OpenGL TLS info.
Change-Id: Ic63a6f7384a2035308ca6d316c747f0e6c6f2ef3
Unfortunately, we need to keep duplicate libraries under sdk/emulator/
to avoid breaking a few internal branches.
commit 776bd3e46c
Author: David 'Digit' Turner <digit@android.com>
Date: Thu Apr 7 10:58:07 2011 +0200
emulator: Remove the global Make variable trick for emulator-specific system modules.
Remove a sad trick that was used to smoothly move the platform-specific emulator
modules from sdk/emulator/ to development/tools/emulator/system without creating
build conflicts.
Now that the sdk/ modules have been removed, we can get rid of the guard variable.
Change-Id: Id5c44a4160191d8ac9afcbbeeef7de0b9a5b0f6f
That adds the renderControl API encoder/decoder which is used for
guest to host control commands. See system/renderControl_enc/README
for more info about the API itself.
Change-Id: I2c72803137889d646fbb3d2a56ecdcf94b088f40
moved pixel size calculation from GLClientState to glUtils to be used
outside the client state scope. (needed for the renderControl encoder
which will follow in next commit).
Change-Id: I5adbc40b241537054c6743e2afc52ba44454664f
This change includes four changes:
1) moved IOStream.h into host/include/libOpenGLRender, this directory
will include the api interface into the libOpenGLRender which will be
used later by the emulator and we need this interface to use IOStream.h
2) Updated Andorid.mk files to include the new directory location of IOStream.h
in the LOCAL_C_INCLUDE.
3) Added new function "read" to IOStream which reads a message without a givven
size.
4) Updated TcpStream to use "cutils/sockets.h" instead of using directly the socket api for portability reasons. (It now compiles on windows as well).
Change-Id: I30eb40c8dcd5aacf0d993aff9cdb90b283b12dde
Maintain a current state for each context updated by each call.
eglSwapBuffers Begins a new frame; clone current state.
Use clone to compute context for a call within that frame later on,
in the context tree view.
Change-Id: I66658561f610025b203a991b5b9f545a9a2f9cd4
Signed-off-by: David Li <davidxli@google.com>
Use TreeView and Reflection to display the states per GL call.
Need to implement more state cloning and tacking.
Prepare to group calls by frame, and clone the context for each frame.
Change-Id: Ib1e5c175da779610204003e352cc1fcf66af969b
Signed-off-by: David Li <davidxli@google.com>
Next commit is improving the protocol and
checking errors after shader upload
Change-Id: I6afe3b63a68e00cd395885fd26cd6fcb311cfbec
Signed-off-by: David Li <davidxli@google.com>
Data format is u32 totalDecompressedSize, then repeat:
u32 chunkDecompressedSize, u32 chunkCompressedSize, chunk data.
If chunkCompressedSize == 0, then chunk is not compressed.
Also start fixing integer sizes on server.
On client, set endianness to match server.
Change-Id: I70c8203037ad7165968ca0d02d0da5f7cc14b7e0
Signed-off-by: David Li <davidxli@google.com>
To allow "stepping" in functions.
Also fix bug in reference frame.
Use reference frame for CopyTex(Sub)Image2D.
Change-Id: I70083200a1e911aaeb74ca85cb10bae16bd4db18
Signed-off-by: David Li <davidxli@google.com>