-
Notifications
You must be signed in to change notification settings - Fork 3
andocker/libandroid-emugl
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This directory contains the host-side modules related to hardware OpenGL ES emulation. The guest-side modules are in $ANDROID_BUILD_TOP/device/generic/goldfish/opengl 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.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published