Commit Graph

5435 Commits

Author SHA1 Message Date
Liran
0a190be2bc opengles emulator: fix GLESv2 shader source packing
fix segfault when calling glShaderSouce with
empty shader string, length=NULL and count>0

Change-Id: I4c9738d7726fbce22d1e84420faa2bfd772943c5
2011-08-09 17:29:17 +02:00
David Turner
9e883e8b5f Merge "opengles emulator: fix eglGetProcAddress" 2011-08-09 08:27:43 -07:00
David Turner
23685f0399 Merge "opengles emulator: fixed EGLContext and EGLSurface ref-counting." 2011-08-09 08:27:29 -07:00
David Turner
54502698db Merge "opengles emulator: fix the mixing between pack/unpack alignments" 2011-08-09 08:27:15 -07:00
David Turner
450fb0a600 Merge "opengles emulator: cache all buffer on the guest" 2011-08-09 08:27:03 -07:00
David Turner
a0045f2078 Merge "opengles emulator: dynamicaly grow ReadBuffer" 2011-08-09 08:26:50 -07:00
David Turner
321714abd2 Merge "opengles emulator: fix eglGetError" 2011-08-09 08:26:40 -07:00
David Turner
c1db962fb7 Merge "opengles emulator: inc/dec ref-count of buffer on SwapBuffers" 2011-08-09 08:26:24 -07:00
Guy Zadickario
fb1868addc opengles emulator: fix eglGetProcAddress
eglGetProcAddress should return a function pointer that does not
depends on the current bounded context (if any), when the user
calls one of the function pointers returned from eglGetProcAddress
for one of the GLES extension functions, the GLESv1 or GLESv2
version of the extension function shold be called depending on
the current bounded context.

For this we have added a ClientAPI (GLES) extension dispatch
table in the EGL level which points to static functions in libEGL
where each function checks in runtime the current bound context and
calls down to the GLES_CM -or- GLESv2 library function.
See ClientAPIExts.cpp, when new GLES extension functions are added
to GLESv1 or GLESv2 its definition should be added to
ClientAPIExts.in as well.

This fixes the segfault in egl_image conformance test.

Change-Id: I8464d87c2fcbe57d67bd8b891b695a690dec89f3
2011-08-09 17:14:20 +02:00
Guy Zadickario
d8b376d76d opengles emulator: fixed EGLContext and EGLSurface ref-counting.
Handle EGL context and surfaces destrouction using ref counting
pointer (SmartPtr) rather then maintaining a "markForDeletion" flag.
This has required to re-arrange the ThreadInfo structure to be local
to EGL rather then in the GLcommon area so that we will be able to
place a ref-counted pointer to the current context in the TLS.

That fixes the crash during exit of covgl conformance test.

Change-Id: I6f0a2e49c6f21eb75b654cab4346c764715c449b
2011-08-09 17:14:20 +02:00
Stas Gurtovoy
0111043202 opengles emulator: fix the mixing between pack/unpack alignments
The was a bug in the calculation of the pixels data size, caused by wrong usage
of pack/unpack alignment.
Pack should be used for glReadPixels, while unpack should be used for glTexImage and such.
Also fixes crash in "Angry Birds" & "Angry Birds Rio"

Change-Id: I099308a57a1ea907d38c59bad056429bc107de98
2011-08-09 17:14:20 +02:00
Stas Gurtovoy
e99305dd9f 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
2011-08-09 17:14:20 +02:00
Stas Gurtovoy
6208854726 opengles emulator: dynamicaly grow ReadBuffer
In case we're receiving packets larger then the initial size
of the read buffer, we dynamicaly grow (X2 steps) the size of
the buffer. An example for this large buffer is a 4MB texture
in JetCarStunts.

Change-Id: I167caddb731583811c009321d4f8fb2f7eea032c
2011-08-09 17:14:12 +02:00
Stas Gurtovoy
8f887e6f08 opengles emulator: fix eglGetError
eglGetError should set it's internal state to EGL_SUCCESS after every call

Change-Id: I55d1e5b2a03bae8b332c78e8179edd79c9e8e79e
2011-08-09 16:46:25 +02:00
Stas Gurtovoy
39c53186b9 opengles emulator: inc/dec ref-count of buffer on SwapBuffers
On every swapBuffers, we make sure to decRef on the prev buffer,
and incRef on the current buffer. This fixes all the anoying
crashes on application exit, and also after the speech windows
on Replica Island

Change-Id: I1981fbf17a24ef6f60cdcf6d7ec3a5e7eef5377f
2011-08-09 16:46:09 +02:00
David 'Digit' Turner
891ad0e8e2 Merge "emulator: opengl: Make render_api.h C-compatible" 2011-08-05 09:23:54 -07:00
David Turner
0f97bab8f0 Merge changes Ibee74a22,Ifef4dc98
* changes:
  NDK: x86 header file has incorrect definition for ptrdiff_t
  Fix size_t definition in x86 NDK header file
2011-08-05 07:51:59 -07:00
David 'Digit' Turner
3a064ab539 emulator: opengl: Make render_api.h C-compatible
This change modifies the function declarations under
developement/tools/emulator/opengl/host/include/render_api.h
to make them callable from C.

This is preparation work for integrating the rendering library
into the emulator. The plan is to dlopen() the library dynamically
and using non-mangled function names makes using dlsym() both
easier and more portable.

Change-Id: I34656ea4618dbb989fb6ff78df43e9bfb38a7799
2011-08-05 16:28:01 +02:00
Mark D Horn
f907f4f9d4 NDK: x86 header file has incorrect definition for ptrdiff_t
See Bug http://code.google.com/p/android/issues/detail?id=19042

Change-Id: Ibee74a22ca8cb1e62b7a6faff01291c6c7a56775
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
2011-08-04 17:11:15 -07:00
David Turner
3e6fbdd1b2 Merge "2.0 translator: link only if both shaders compile" 2011-08-04 07:10:38 -07:00
Amit Feller
25b3794419 2.0 translator: link only if both shaders compile
A program should be linked only if both vertex and fragment shaders
compiled succesfully.
Change-Id: I9793da85847fd606883e1e3bef05485ce6037c21
2011-08-04 16:10:12 +02:00
David Turner
0ecd4791c8 Merge "opengl translator: Added GLSL ES builtin constants." 2011-08-04 07:09:25 -07:00
David Turner
bcd5ebd98c Merge "1.1 translator: WAR for GL_ALPHA_TEST_REF bug" 2011-08-04 07:09:16 -07:00
David Turner
dba3c8bc91 Merge "1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6" 2011-08-04 07:09:06 -07:00
David Turner
a80ddadf03 Merge "remove NV_WAR defines" 2011-08-04 07:08:52 -07:00
Guy Zadickario
e8c7a055f7 opengl translator: Added GLSL ES builtin constants.
Adds GLSL built in constants defined in GLSL ES but not in GLSL.
Makes biConstant conformance test to pass on Mac (where ES2_compatability is not
present).

Also fixed the GLSL parser to insert our additions to the shader
only after the "#version" token if exist in the original shader.
Also renamed env var GOOGLE_GLES_FORCE_GLSL_VERSION to
GOOGLE_GLES_DEFAULT_GLSL_VERSION to better match its functionality since
we use it only if no specific version exist in the shader code.

Change-Id: If9485da16da2808245943a7295f8fb22a6f631aa
2011-08-04 12:01:49 +02:00
Yochai Shefi Simchon
7e04a2421c 1.1 translator: WAR for GL_ALPHA_TEST_REF bug
Both the ATI and nVidia OpenGL drivers return the wrong answer on
glGetIntegerv(GL_ALPHA_TEST_REF). So Implement this functionality
in our code.

Change-Id: I022b1475f7edb9f1d0f48ebcaf9f6e9f5c4f344e
2011-08-04 12:01:49 +02:00
Yochai Shefi Simchon
926db88dd1 1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6
This is a WAR for an ATI OpenGL driver bug.

Change-Id: I0b54317873ed8c60fe835a993c2c8f32321ff8e2
2011-08-04 12:01:49 +02:00
Liran
ceb7fc9140 remove NV_WAR defines
enable workarounds by default
added environemnt variable GOOGLE_GLSL_FORCE_GLES_VERSION
to the shader parser

Change-Id: If1dbc10722436659295c40a40bd630a72e575799
2011-08-04 12:01:49 +02:00
Mark D Horn
36f0d56517 Fix size_t definition in x86 NDK header file
Bug: http://code.google.com/p/android/issues/detail?id=19011

The incorrect #define was being used which caused the incorrect
definition for size_t when the standalone toolchain is used.

Change-Id: Ifef4dc987c542a9c5d8bb43d84d3fe1431de9aa0
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
2011-08-03 15:11:56 -07:00
Xavier Ducrohet
c6d3e76d5d Merge "move platform tools to r8." 2011-08-03 11:04:13 -07:00
Vladimir Chtchetkine
9a528ed984 Merge "Get rid of libqemu library." 2011-08-03 10:51:07 -07:00
Vladimir Chtchetkine
b2b6f2f9da Get rid of libqemu library.
Its implementation has been inlined in hardware/libhardware/include/hardware/qemu_pipe.h

Change-Id: I355764f87047c915ac43b85cd18bf0f27f06ede3
2011-08-03 09:10:14 -07:00
David Turner
47706d40ab Merge "GLES2 translator: workaround for nvidia bug with GL_VALIDATE_STAUS" 2011-08-03 06:40:59 -07:00
David Turner
6707ea95ba Merge "2.0 translator: workaround for nVidia "bug"" 2011-08-03 06:40:06 -07:00
David Turner
1cd64c705c Merge "GLES2 translator: host does not support RGB565" 2011-08-03 06:39:06 -07:00
David Turner
bcfc7b17a0 Merge "GLES translator - enable binding to multiple texture targets" 2011-08-03 06:38:17 -07:00
David Turner
0c1ce6de3b Merge "GLES2 translaotr: fix glLinkProgram and object names" 2011-08-03 06:37:29 -07:00
Xavier Ducrohet
b7968a9871 move platform tools to r8.
Change-Id: I6ac8606db6721313af92241cf8bbe71175c0a705
2011-08-02 18:14:32 -07:00
Liran
772468f2b6 GLES2 translator: workaround for nvidia bug with GL_VALIDATE_STAUS
nvidia may return GL_VALIDATE_STATUS = GL_TRUE even when the program does not link
this change checks for GL_LINK_STATUS when GL_VALIDATE_STATUS is queried

Change-Id: Ia9f5da9c71b8666ce929d8cc2a44639bc947eecb
2011-07-27 15:19:11 +03:00
Liran
715c4898df 2.0 translator: workaround for nVidia "bug"
This is not really a bug, but the nVidia shader compiler is much more
liberal than the GLSL spec, and allows compilation of shaders which
do not comply with the spec. This is an issue for passing the
conformance tests, but more importantly it will allow bad shader written
by the app developer to pass on the emulator and then to fail on the device.

Adding "#version 100" definition to the head of a shader source disables
this liberal behavior. For now this is activated in run time by the "NV_WAR"
environment variable.

Change-Id: I1c322d4221d313d3ee70592bc15ea0e340853990
2011-07-27 15:19:11 +03:00
Liran
dd954c869c GLES2 translator: host does not support RGB565
When calling RenderbufferStorage with internalformat=GL_RGB565
we will create one with internal format GL_RGB
the same for glTexImage2D

Change-Id: I1e464dd36142f586beef6bf895456c7aab1b8237
2011-07-27 15:19:11 +03:00
Liran
31b99df283 GLES translator - enable binding to multiple texture targets
support different binding to GL_TEXTURE_2D and GL_TEXTURE_CUBE_MAP
targets

create 2 default texture object, to be bound when BindTexture( ... ,0)
is called.
in order to do this, we must ensure their names are internal only, so the user can't
use these names by accident.
the object name manager local name is now 64 bit to allow generation of internal names

Change-Id: I29d000a67042051706e13dc3ef3aa34a1a24f8ca
2011-07-27 15:19:10 +03:00
Liran
3c457bda2f GLES2 translaotr: fix glLinkProgram and object names
Do not allow glLinkProgram to succeed if only one shader type has been
attached to the program, GL allows this, but GLES2 does not.
added state tracking for program objects to check which shaders are
attached to the program object.

add a way to define object data type being held for each object in objectNameManager
ProgramData and ShaderParser are both valid objectData for objects in SHADER namespace
we need a way to determine object type to generate correct errors

Change-Id: Ic232549df0bb6daf6ec528cb039482cd68e896bb
2011-07-27 15:19:04 +03:00
David 'Digit' Turner
bb2c613289 am 718e8b89: Merge "ndk: arm: also update other CRT runtime objects."
* commit '718e8b89209cfdaed2adc756737a51683d24a861':
  ndk: arm: also update other CRT runtime objects.
2011-07-14 20:36:26 -07:00
David 'Digit' Turner
718e8b8920 Merge "ndk: arm: also update other CRT runtime objects." 2011-07-14 20:23:32 -07:00
David 'Digit' Turner
cd181903b5 ndk: arm: also update other CRT runtime objects.
Turns out that updating crtbegin_so.o and crend_so.o is not
enough for the standalone toolchain. We also need to update
the object files used to generate static and dynamic
executables.

This fixes the standalone toolchain NDK tests.

Change-Id: Ibf113b09766f00b30895951a5639343728be3f3a
2011-07-15 05:21:36 +02:00
David Turner
682f914304 am e6c1178e: Merge "use Translator\'s glTexImage2D in doCompressedTexImage2D"
* commit 'e6c1178e020a3ae65412917661ccda718830c18f':
  use Translator's glTexImage2D in doCompressedTexImage2D
2011-07-14 16:02:32 -07:00
David Turner
e6c1178e02 Merge "use Translator's glTexImage2D in doCompressedTexImage2D" 2011-07-14 15:51:32 -07:00
David Turner
b3dbf9b05d am 02acec79: Merge "emulator:opengl: fix windows build"
* commit '02acec7961992a9da7a9e4893c7483cdaae8703a':
  emulator:opengl: fix windows build
2011-07-14 14:43:37 -07:00