History log of /development/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.cpp
Revision Date Author Comments
56513f5ff4f3e851c5f0cb38dc8851d18616b3c0 30-May-2012 Jesse Hall <jessehall@google.com> Move emugl system code to development.git

Because of the way the SDK and Android system images are branched,
host code that goes into the SDK tools can't live in the same
repository as code that goes into the system image. This change keeps
the emugl host code in sdk.git/emulator/opengl while moving the emugl
system code to development.git/tools/emulator/opengl.

A few changes were made beyond simply cloning the directories:

(a) Makefiles were modified to only build the relevant components. Not
doing so would break the build due to having multiple rule
definitions.

(b) Protocol spec files were moved from the guest encoder directories
to the host decoder directories. The decoder must support older
versions of the protocol, but not newer versions, so it makes
sense to keep the latest version of the protocol spec with the
decoder.

(c) Along with that, the encoder is now built from checked in
generated encoder source rather than directly from the protocol
spec. The generated code must be updated manually. This makes it
possible to freeze the system encoder version without freezing the
host decoder version, and also makes it very obvious when a
protocol changes is happening that will require special
backwards-compatibility support in the decoder/renderer.

(d) Host-only and system-only code were removed from the repository
where they aren't used.

(e) README and DESIGN documents were updated to reflect this split.

No actual source code was changed due to the above.

Change-Id: I2c936101ea0405b372750d36ba0f01e84d719c43
80d4ba77162126cfb60f9ca75f8a1d3a458ed31f 18-Apr-2012 Jesse Hall <jessehall@google.com> 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
b62e28ddde79314f9d556f8755b1c08dff9cdabd 16-Apr-2012 Jesse Hall <jessehall@google.com> 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: Ibe2cf8de13520aa3fcbaf72328a15ece261d7b86
a3b1c787672074f90807f57266c7044955813e38 25-Feb-2012 Mathias Agopian <mathias@google.com> remove dependency on android_natives_priv.h

Change-Id: If06ea9aeb836d6ceb09745770956a25211f428d3
d6bd1843ce6ffd18b8dd7105052572b2c3af876a 23-Nov-2011 Jesse Hall <jessehall@google.com> EmuGL: GLESv2 support for OES_EGL_image_external

Change-Id: I8911328d5dcccdf4731bd2d8fd953c12fdec5f1b
5a622cba8c5287d5e6577f940a22343a7cae977f 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic6cac56d137f705dfa7266f21e9b0269219bd5d1
112bc5e57e206ec3e0bc5a335b62eae2eb8892e8 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: Ia14c98936bb1dc74e681bf2de342ad6861646778
7906431d04763c920c8b85ab0a15be599e310c1f 01-Dec-2011 Jesse Hall <jessehall@google.com> EmuGL: capture VBO contents in GL2Encoder

The glBufferData, glBufferSubData, and glDeleteBuffers entry points
had interception routines in GL2Encoder which cache the data, but they
weren't hooked up. So when glDrawElements tried to retrieve the cached
data it wasn't there.

Change-Id: Iaed11fccaefab3186485be53a0f15c8ca0a255f9
4e6af749d5996edd6558821a7e400427f0457306 16-Sep-2011 David 'Digit' Turner <digit@google.com> emulator: opengl: Back-port GLES emulation from the master tree.

The modules here are only built when BUILD_EMULATOR_OPENGL is defined to true
in your environment or your BoardConfig.mk (see tools/emulator/opengl/Android.mk)

Change-Id: I5f32c35b4452fb5a7b4d5f9fc5870ec1da6032e6
7944edcdb28d6924f782fb04464526165447c1e6 10-Aug-2011 Guy Zadickario <guy@graphtech.co.il> opengles emulator: fix the uniform location WAR for intel platforms

Fixed the location shift WAR to work for arrays that starts at
location 0. Fixed conformance regressions made by this workaround.
The conversion should be smarter than just shifting 16-bits back
and forth, it should take into account if array element is being
accessed.

Change-Id: Icb746c67e16edfacb8264a1e687fd24ac6e868e7
52829d82ab415afd15053f2953fad81b0fdbe4d0 05-Aug-2011 Guy Zadickario <guy@graphtech.co.il> opengles emulator: Workaround Cordy (Unity) bug with intel driver.

Uniform locations are 32-bit values which the application queries
from the driver after a shader program is linked. It seems that Cordy
game (possibly all Unity based apps) store the returned location as
16-bit value. Intel driver returns location values in the upper 16-bit
range :(
This is a workaround for this issue, when a program is linked we check
the locations of all uniforms, if all locations are within the upper
16-bit range (as with Intel driver) we shift the location value before
returning to the application. Also override all functions which take
a location parameter and do the reverse shift before sending a location
value to the host.

Change-Id: I234aaafe3313774b5da79eb1dac713b89b10ad60
8ee217f9cc21e26f3dd5b52be038475a3818298f 01-Aug-2011 Liran <liran@graphtech.co.il> opengles emulator: fix glGetUnifrom

added state tracking for uniforms in program objects
for each active uniform in index i we will save its starting location
,size and type, so when calling glGetUniform on its location,
we can tell how many bytes we should read from the stream according to
the uniform's type

add some type and size definitions to functions
that calculate size from enum

some other fixes to the codec

Change-Id: I4ecdf41e752454a908d131e76bab113a616f2bc8
e99305dd9f4bfa0bc16cea025dd829b2aa5b8030 26-Jul-2011 Stas Gurtovoy <stas@graphtech.co.il> opengles emulator: cache all buffer on the guest

This is needed to support the rare, but still legal scenario,
when glDrawElemets is used with some index array data is stored in VBO's
while the actual attributes (vertices) data is in immediate mode.
When in immediate mode, we need to process the incodes, in order to know
which vertex data to send, which was impossible without the caching.
This commit introduces a new class GLSharedGroup, which will hold all data
that can be shared by shared contexts (buffers are such data).
This also makes the "Jet Cars Stunts" app work properly.

Change-Id: Ic937080dae461bc8cdf4d10cf37066a6e847f464
d6f18cdf8055620b097933a65be30117c9284b6f 07-Jul-2011 Stas Gurtovoy <stas@graphtech.co.il> opengl emulator: Added gl error tracking on the guest (encoder)

Sometimes we need to check parameter values before encoding
to prevent crashes, for example:
glDeleteBufferes(-1, ptr); - would crash
For that we need to check some gl errors on the guest.

The change adds error state to the encoder and also
adds new feature to emugen which allows to insert
parameter check code into the attribute file.
Added such parameter check code in the appropiate
gl functions in gl.attrib and gl2.attrib

Change-Id: I7f317df52ac8fbd96979100a1031cf023a0b49d3
304a1c21ca1b3d4ae630c0e85a04eb83919ae886 30-Jun-2011 Stas Gurtovoy <stas@graphtech.co.il> opengles Translator: Omit precision macros from shaders

The shaders fail to compile if we don't omit those changes (Cordy game for example).
Anyways, they have no semantic meaning in GLSL, quote for GLSL 4.1 spec:
"Precision qualifiers are added for code portability with OpenGL ES, not for functionality. They have the
same syntax as in OpenGL ES, as described below, but they have no semantic meaning, which includes no
effect on the precision used to store or operate on variables."
Also removed an anoying print in the encoder.
118af8505175acff4d79ba8e1a5fc90ea0c3714c 20-Jun-2011 Stas Gurtovoy <stas@graphtech.co.il> emulator GLESv2: fixed (#16) NenaMark crashes on exit

The GL2Encoder::m_compressedTextureFormats member wasn't initialized, so the d'tor
would sometimes crash trying to delete it. Also init m_num_compressedTextureFormats.

Change-Id: Iae423c16a84a4e454e0e1167f7478f9e2f6183c0
62d074d9f8d86f231a3094f2474700c805d20e7a 16-Jun-2011 Stas Gurtovoy <stas@graphtech.co.il> emulator opengl: add GLESv2 support to driver + renderer

Added GLESv2 library to system.
Made fixes to the host libOpenGLRender to
compile and support GLESv2 (defined WITH_GLES2).
Other fixes required to make GLESv2 to work.

Change-Id: I9eb198e6092e7fa3550342c50929dd1714282cb3
a26f6f221b65501efc8aa51e753ff22b817ee1be 15-May-2011 Stas Gurtovoy <stas@graphtech.co.il> emulator opengl: Added glFinishRoundTrip to GLESv2

Change-Id: Ia1c6cb7e75a1769040d13e81d0da7db5f5c28435
d32c2d9633c1b73089fe3eaeddbe2abf4b29881a 05-May-2011 Stas Gurtovoy <stas@graphtech.co.il> emulator opengl: system GLESv1 first commit.

This is the first commit for the GLESv1 implementation.
It also includes needed fixes in emugen to support const types.
Also, changed glFinish definition in gl.in to match the
definition as in gl.h.

Change-Id: I90262a1db6035a90af8db17984acecef6499847a
0c814b227c284b83e8e32cb2ae4e87ba05e511c0 23-Apr-2011 Jacky Romano <jr@graphtech.co.il> emulator opengl - encode glShaderSource

glShaderSource strings are concatenated into a single string
before sent over the wire protocol. The wire protocol transfer is
done using a special api call 'glShaderString'

Change-Id: I90c157df66fe82fee17c460a1e7852d370c77088
318ffd3798500fe100e0a16166cc0fa9e3790ca3 20-Apr-2011 Jacky Romano <jr@graphtech.co.il> Emulator Opengl - adding preliminary version of GLESv2 encoder

This preliminary version includes the API definition, and the
GL2Encoder implementation class

Change-Id: I7ef9cfeb98c1e85097287ab26733825087368ee0