Move emulator GLES from development.git to sdk.git
The emulator GLES support has two interfaces: a host shared library interface used by QEMU, and a protocol between the platform and the host. The host library interface is not versioned; QEMU and the GLES renderer must match. The protocol on the other hand must be backwards compatible: a new GLES renderer must support an older platform image. Thus for branching purposes it makes more sense to put the GLES renderer in sdk.git, which is branched along with qemu.git for SDK releases. Platform images will be built against the protocol version in the platform branch of sdk.git. Change-Id: Ie73fce12815c9740e27d0f56caa53c6ceb3d30cc
This commit is contained in:
committed by
Jean-Baptiste Queru
parent
46ead86b02
commit
80d4ba7716
@@ -1,94 +0,0 @@
|
||||
This directory contains the modules related to hardware OpenGL ES emulation.
|
||||
|
||||
I. Overview of components:
|
||||
==========================
|
||||
|
||||
The 'emugen' tool is used to generate several source files related to the
|
||||
EGL/GLES command stream used between the guest and the host during emulation.
|
||||
|
||||
host/tools/emugen -> emugen program
|
||||
|
||||
Note that emugen is capable of generating, from a single set of specification
|
||||
files, three types of auto-generated sources:
|
||||
|
||||
- sources to encode commands into a byte stream.
|
||||
- sources to decode the byte stream into commands.
|
||||
- sources to wrap normal procedural EGL/GLES calls into context-aware ones.
|
||||
|
||||
Modules under the system/ directory corresponds to code that runs on the
|
||||
guest, and implement the marshalling of EGL/GLES commands into a stream of
|
||||
bytes sent to the host through a fast pipe mechanism.
|
||||
|
||||
system/GLESv1_enc -> encoder for GLES 1.1 commands
|
||||
system/GLESv2_enc -> encoder for GLES 2.0 commands
|
||||
system/renderControl_enc -> encoder for rendering control commands
|
||||
system/egl -> emulator-specific guest EGL library
|
||||
system/GLESv1 -> emulator-specific guest GLES 1.1 library
|
||||
system/gralloc -> emulator-specific gralloc module
|
||||
system/OpenglSystemCommon -> library of common routines
|
||||
|
||||
Modules under the host/ directory corresponds to code that runs on the
|
||||
host, and implement the decoding of the command stream, translation of
|
||||
EGL/GLES commands into desktop GL 2.0 ones, and rendering to an off-screen
|
||||
buffer.
|
||||
|
||||
host/libs/GLESv1_dec -> decoder for GLES 1.1 commands
|
||||
host/libs/GLESv2_dec -> decoder for GLES 2.0 commands
|
||||
host/libs/renderControl_dec -> decoder for rendering control commands
|
||||
|
||||
host/libs/Translator/EGL -> translator for EGL commands
|
||||
host/libs/Translator/GLES_CM -> translator for GLES 1.1 commands
|
||||
host/libs/Translator/GLES_V2 -> translator for GLES 2.0 commands
|
||||
host/libs/Translator/GLcommon -> library of common translation routines
|
||||
|
||||
host/libs/libOpenglRender -> rendering library (uses all host libs above)
|
||||
can be used by the 'renderer' program below,
|
||||
or directly linked into the emulator UI program.
|
||||
|
||||
host/renderer/ -> stand-alone renderer program executable.
|
||||
this can run in head-less mode and receive requests from
|
||||
several emulators at the same time. It is the receiving
|
||||
end of all command streams.
|
||||
|
||||
Modules under the test/ directory correspond to test programs that are useful
|
||||
to debug the various modules described above:
|
||||
|
||||
tests/EGL_host_wrapper -> a small library used to dynamically load the
|
||||
desktop libEGL.so or a replacement named by the
|
||||
ANDROID_EGL_LIB environment variable. This lib
|
||||
provides all EGL entry points.
|
||||
|
||||
tests/emulator_test_renderer -> a small program to run the rendering library
|
||||
in a single SDL window on the host desktop.
|
||||
|
||||
tests/gles_android_wrapper -> guest EGL / GLES libraries that are run on
|
||||
the device to run some tests. Replace the
|
||||
system/egl and system/GLESv1 modules for now.
|
||||
|
||||
tests/translator_tests/GLES_CM -> desktop GLESv1 translation unit test
|
||||
tests/translator_tests/GLES_V2 -> desktop GLESv2 translation unit test
|
||||
tests/translator_tests/MacCommon -> used by translation tests on Mac only.
|
||||
|
||||
tests/ut_rendercontrol_enc -> guest library used by tests/ut_renderer
|
||||
tests/ut_rendercontrol_dec -> host library used by tests/ut_renderer
|
||||
tests/ut_renderer -> unit-test for render control and rendering library.
|
||||
|
||||
|
||||
II. Build system considerations:
|
||||
--------------------------------
|
||||
|
||||
The dependencies on the more than 20 components described in the previous
|
||||
section are pretty sophisticated, involving lots of auto-generated code and
|
||||
non-trivial placement for guest/device libraries.
|
||||
|
||||
To simplify the development and maintenance of these modules, a set of
|
||||
helper GNU Make function is defined in common.mk, and included from the
|
||||
Android.mk in this directory.
|
||||
|
||||
These functions all begin with the "emugl-" prefix, and can be used to
|
||||
declare modules, what information they export to other modules, or import
|
||||
from them, and also what kind of auto-generated sources they depend on.
|
||||
|
||||
Look at the comments inside common.mk and the Android.mk of the modules
|
||||
to better understand what's happening.
|
||||
|
||||
Reference in New Issue
Block a user