Commit Graph

2596 Commits

Author SHA1 Message Date
David Turner
984ccfa171 am c4e4ba87: am 0e0638e5: Merge "opengles emulator: fix glGetShaderSource"
* commit 'c4e4ba87bba41f414ba268a42c1751263480057a':
  opengles emulator: fix glGetShaderSource
2011-08-09 10:06:23 -07:00
David Turner
f0e93f9634 am 30dce171: am a75d7c69: Merge "opengles emulator: fix GLESv2 shader source packing"
* commit '30dce17194d9290ccac8dd1492ba6d9196eead38':
  opengles emulator: fix GLESv2 shader source packing
2011-08-09 10:06:19 -07:00
David Turner
5473c6ae99 am ad3166ad: am 9e883e8b: Merge "opengles emulator: fix eglGetProcAddress"
* commit 'ad3166add78dff8407466d271540bbfd20a06320':
  opengles emulator: fix eglGetProcAddress
2011-08-09 10:06:14 -07:00
David Turner
8c6d04a662 am 53dfd83d: am 23685f03: Merge "opengles emulator: fixed EGLContext and EGLSurface ref-counting."
* commit '53dfd83d48777e0196117322a498cea8cc29f863':
  opengles emulator: fixed EGLContext and EGLSurface ref-counting.
2011-08-09 10:06:09 -07:00
David Turner
87cbeada5c am 2ad48e99: am 54502698: Merge "opengles emulator: fix the mixing between pack/unpack alignments"
* commit '2ad48e99d267e1d03e27e8f49c95b753e2bcf41a':
  opengles emulator: fix the mixing between pack/unpack alignments
2011-08-09 10:06:03 -07:00
David Turner
4b3baea530 am 6b2470ef: am 450fb0a6: Merge "opengles emulator: cache all buffer on the guest"
* commit '6b2470ef2b1e9915ad6303607aefd8659ebc502c':
  opengles emulator: cache all buffer on the guest
2011-08-09 10:05:58 -07:00
David Turner
19fdd87fc6 am 8cfde07c: am a0045f20: Merge "opengles emulator: dynamicaly grow ReadBuffer"
* commit '8cfde07c61e9ab0b8b9d8815547124545f59f80d':
  opengles emulator: dynamicaly grow ReadBuffer
2011-08-09 10:05:52 -07:00
David Turner
8713e3858c am ecb7c06f: am 321714ab: Merge "opengles emulator: fix eglGetError"
* commit 'ecb7c06ff4a670ea473ac053aaa9c0f99f4e0bf6':
  opengles emulator: fix eglGetError
2011-08-09 10:05:46 -07:00
David Turner
1a30107ecc am 81e21789: am c1db962f: Merge "opengles emulator: inc/dec ref-count of buffer on SwapBuffers"
* commit '81e21789a87f530cec499694186885cbe059b7db':
  opengles emulator: inc/dec ref-count of buffer on SwapBuffers
2011-08-09 10:05:39 -07:00
Amit Feller
e993528d8e opengles emulator: fixing GL_HALF_FLOAT_OES bug
when calculating the data size to pack, the type GL_HALF_FLOAT_OES,
wasn't recognized at all and therefore was by default 0, while it
should be 2 bytes.

Change-Id: Ib1f0dcdb837dd1b9cfebd1090cabfb59de472c53
2011-08-09 17:38:48 +02:00
Guy Zadickario
ee2388cb94 opengles emulator: forced GLSL version to be 120.
GLSL ES 1.0.17 spec states that its written against
OpenGL GLSL version 1.2, that means that #version 100
in GLSL ES should be mapped to #version 120 in OpenGL
GLSL.
We now force "$version 120" in all shaders except if
higher version has been requested in the shader source
or when GOOGLE_GLES_FORCE_GLSL_VERSION is defines.
(Note that GOOGLE_GLES_DEFAULT_GLSL_VERSION is renamed
 to GOOGLE_GLES_FORCE_GLSL_VERSION).

That fixes "Aqua Slash GL Demo" application !!

Change-Id: I0f61ba3aa1c5591df3dacd3afd7f216dba13b56e
2011-08-09 17:38:48 +02:00
Liran
e1a6d10a54 opengles emulator: GLES2 codec - glFinishRoundTrip
fix glFinishRoundTrip
the function was not implemented on the host side,
calling glFinish caused segfault

Change-Id: Ic3a726d22a499f6560d905d177dcb7f997397628
2011-08-09 17:38:48 +02:00
Guy Zadickario
0d5ea9bb69 opengles emulator: test: added shader flags to triangleV2 test
Added the ability to provide external vertex and fragment shader
files to the test application triangleV2. That makes easy to test
various shaders we see failing in applications.

Change-Id: Ifaae8490ac76c022aa712ae516355658922b47bd
2011-08-09 17:38:48 +02:00
Guy Zadickario
6d0f92b88d opengles emulator: support glEGLImageTargetRenderbufferStorageOES
That adds support to create a renderbuffer storage from an EGL
image (previously only texture was supported).
For that we have added Renderbuffer and Framebuffer attachment points
state tracking and when a renderbuffer which attached to an EGLImage
get attached to a framebuffer we attach the underlying EGLImage's
texture instead.

Also fixed some egl_image related bugs.
That makes the egl_image conformance test to pass on host.

Change-Id: I4e8c4935e45b27214038ecf1c1187ed96c5cea5b
2011-08-09 17:38:48 +02:00
Stas Gurtovoy
0710435277 emulator opengl: fixed encoding of glGenRendebuffer
Fixed pointer direction to be out (receives info from host).

Change-Id: I881b68393232cd262dd06eb1c124cf305ba28f31
2011-08-09 17:36:35 +02:00
Stas Gurtovoy
9254c7adc1 opengles emulator: fix bugs in CUBE_MAP implementation in GLES_CM
We save the texData->target in original format, but use our internal format
(using GLTextureTargetToLocal) to make sure we're not mixing 2D and CUBE_MAP textures on
glBindTexture.
Also added the GL_S/R/T/Q constants where needed.
This fixes the Cube Map test in Api Demos.

Change-Id: Id5de45581f2227fe0978d7982a147cb6b4b595c4
2011-08-09 17:36:35 +02:00
Yochai Shefi Simchon
65f8c50cbb opengles emulator: add GL_OES_depth_texture extension
Change-Id: I4f254be743b61ba00ebf58d136aa91f4eaf8b643
2011-08-09 17:33:04 +02:00
Yochai Shefi Simchon
c8dfd865fc opengles emulator: fix GL_EXT_packed_depth_stencil string
It used to be a GL_NV_packed_depth_stencil string extension, but
now it's GL_EXT_packed_depth_stencil and implemented by everyone. on
nVidia drivers both are exported.

Change-Id: I1b4af8a776f9957838d466b24fe73fa873ea85e4
2011-08-09 17:33:04 +02:00
Yochai Shefi Simchon
70d6f3e2b9 opengles emulator: 2.0: handle texture=0 on glFramebufferTexture2D
texture=0 has a special meaning - detach texture. Therefore we should pass
it on as 0 rather than look for the global name in the name space.

Change-Id: If7d0174a7fd07fc13a75430312b605497653f01b
2011-08-09 17:33:04 +02:00
Yochai Shefi Simchon
a182a1a7e4 opengles emulator: limit GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
A bug in the ATI OpenGL driver causes glGet(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS)
to return 32, although the driver supports only 16. The minimum required
by the spec is 2, so limit the number to 16.

Change-Id: Ife99dc5544f80ad872362414e9a5d9d2722d8a42
2011-08-09 17:33:03 +02:00
Liran
833ce70718 opengles emulator: Call XInitThreads on Linux.
All the X calls we do on linux are made from the FrameBuffer
object which is locked however OpenGL implementations may call
to Xlib during gl function calls. In order to be thread safe
we initialize Xlib to support multi-threading.

Change-Id: I3bc6a6378d7558fec44052bd67388beaf270c107
2011-08-09 17:29:17 +02:00
Liran
ca5e9825a4 opengles emulator: fix glGetShaderSource
added NullAllowed flag to length parameter of glGetShaderSource
calling glGetShaderSource with NULL length caused length data
from the host get left on the stream and get the stream out of sync

Change-Id: I45e8e523a67698c9b0cd003e2af7e15c76ed22b7
2011-08-09 17:29:17 +02:00
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
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
44d6a0fa6f am 4e9cf45c: am 891ad0e8: Merge "emulator: opengl: Make render_api.h C-compatible"
* commit '4e9cf45cbda52fb04e77f7917eb1abb31ff1b851':
  emulator: opengl: Make render_api.h C-compatible
2011-08-05 09:42:55 -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
David Hu
621770b177 Merge "GPS Location Test" 2011-08-04 16:56:31 -07:00
David Hu
8bf6664898 GPS Location Test
Verify that the previously set GPS Location via geo fix command
is set properly.

Change-Id: If160a8379d93a813402bf8622b279feac4f5f110
2011-08-04 14:51:23 -07:00
David Turner
093099438e am 2d499287: am f8e76503: am 3e6fbdd1: Merge "2.0 translator: link only if both shaders compile"
* commit '2d49928731026af2eefcf645bf65fe6d61b24744':
  2.0 translator: link only if both shaders compile
2011-08-04 07:31:27 -07:00
David Turner
225c68ec22 am 157fffcf: am efdf94f7: am 0ecd4791: Merge "opengl translator: Added GLSL ES builtin constants."
* commit '157fffcf18177b78b93afb30aeff7643a7ecb69c':
  opengl translator: Added GLSL ES builtin constants.
2011-08-04 07:31:25 -07:00
David Turner
cb6dbb00ed am e7e0e372: am b1bbce7c: am bcd5ebd9: Merge "1.1 translator: WAR for GL_ALPHA_TEST_REF bug"
* commit 'e7e0e372a62ae7e77c477900e078027a272b6d33':
  1.1 translator: WAR for GL_ALPHA_TEST_REF bug
2011-08-04 07:31:22 -07:00
David Turner
a8c9a79640 am 2cdb34a2: am ddf8192f: am dba3c8bc: Merge "1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6"
* commit '2cdb34a242d2a1767390301d04779f813b208cea':
  1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6
2011-08-04 07:31:20 -07:00
David Turner
1d1f4c879b am 4b0efb56: am 2abeceb7: am a80ddadf: Merge "remove NV_WAR defines"
* commit '4b0efb567936afdc46726fba606a7cba935427f8':
  remove NV_WAR defines
2011-08-04 07:31:16 -07:00
David Turner
2d49928731 am f8e76503: am 3e6fbdd1: Merge "2.0 translator: link only if both shaders compile"
* commit 'f8e76503041d484703a1bb7a64f86b3fe4497393':
  2.0 translator: link only if both shaders compile
2011-08-04 07:27:06 -07:00
David Turner
157fffcf18 am efdf94f7: am 0ecd4791: Merge "opengl translator: Added GLSL ES builtin constants."
* commit 'efdf94f7cc875f3dd66036f5962cf70802628ed1':
  opengl translator: Added GLSL ES builtin constants.
2011-08-04 07:27:04 -07:00
David Turner
e7e0e372a6 am b1bbce7c: am bcd5ebd9: Merge "1.1 translator: WAR for GL_ALPHA_TEST_REF bug"
* commit 'b1bbce7cc8cc8b8c38dedac62aa5190164ee1338':
  1.1 translator: WAR for GL_ALPHA_TEST_REF bug
2011-08-04 07:27:02 -07:00
David Turner
2cdb34a242 am ddf8192f: am dba3c8bc: Merge "1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6"
* commit 'ddf8192faaae61b7d3b7a7cdad465e2f48974648':
  1.1 translator: glGet(GL_MAX_CLIP_PLANES) returns max 6
2011-08-04 07:27:00 -07:00
David Turner
4b0efb5679 am 2abeceb7: am a80ddadf: Merge "remove NV_WAR defines"
* commit '2abeceb76408d8645836b3efe274de8c0c5b5d2d':
  remove NV_WAR defines
2011-08-04 07:26:56 -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
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
Vladimir Chtchetkine
7c61dfc286 am dc6e4e64: am af0d8ed8: am 9a528ed9: Merge "Get rid of libqemu library."
* commit 'dc6e4e64de0036021dc4491ab0760d3aeb364019':
  Get rid of libqemu library.
2011-08-03 18:16:37 -07:00