In GLES, a vertex shader attribute can be at location 0 and have
a current value. In OpenGL, the spec is not clear, resulting in
absurdities like the ATI driver binding an attribute to location
0, does not give an erro when you set it, but gives an error when
you try to get it back. And it doesn't actually set the value in
the shader.
So, in this patch we:
1. Track attribute 0 value internally, setting and getting it
as necessary.
2. Upon glDrawArrays and glDrawElements, if attribute 0 is not
"array enabled" (that is, it should use a current value) we
create a dummy array, fill it with the intended current value,
and attach and enable it. After the draw, we disable it.
Change-Id: I35f3e8a924e6fba236f4f4d85423b04ae448dad4
adding more params validations to some GL functions
which the OpenGL layer below us should check , but using Intel
Graphic driver those checks are ignored
Change-Id: I3ca2a891f1d9f988a7b662d6bc32b81e12cc333d
fixin a bug when we declared that our implementation supports
OES_standard_derivatives without checking that the
openGL layer below supports this extention
Change-Id: Ic74f18eb753f0cfe067e23c3bf83905e40b17665
add special handling of locations smaller or equal to 0
do not translate location -1 (this location means the
uniform is not found)
location 0 does not need translation, it has no effect
Change-Id: Idbde51f08433ed70a5a1a2cf1ede51043f3cca76
fix glGetAttachedShaders
NULL is allowed in count parameter
fix problem with nvidia driver which returned invalid count
Change-Id: Icfaa5688b04325de2890486eb87b163babaddf30
needed changes to support glEGLImageTargetRenderbufferStorageOES,
added implementation in egl and added tokens to renderControl.
Also fixed function pointers returned by eglGetProcAddress to
return functions that works independant of the current context,
see system/egl/ClientAPIExts.cpp
That makes the egl_image conformance test to pass on the guest.
Change-Id: I580cda82ba0fb44f12b75aa0bbacf5cd9f15f744
some applications and conformance tests expects to have
non-zero bit counts for all red,green and blue channels.
The translator expose all EGL compliant configs, including
monochrome and RG configs.
We now filter those out and expose to the guest only the RGB
configs.
Change-Id: I9a293675359135a548ce1c089f31a48ea2b7f46e
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
The GLES and OpenGL specs for glFramebufferTexture2D are different, which
caused valid GLES calls to fail when moved over to OpenGL. Specifically,
a framebuffer in OpenGL must have a color attachment in order to be valid
for draw, while in GLES it doesn't. So add a validate function, and call
it from each drawing API call.
This patch also contains a workaround for a bug in the ATI driver, where
changing the framebuffer attachments requires a rebind of the framebuffer.
Change-Id: I011fbe0e2b1c66564322268868a24a9d5958a434
to overcome a bug in intel driver which returnes incorrect precision
and range for integers. query the driver for precision format only
for floats. for integers, we return values defined in gles spec.
Change-Id: Idfec2826d811220873c18f301cf4268fc54dabee
fix the default values of vertex attrib array to match gles spec
size should be initialized to 4, and type should be initialized to GL_FLOAT
Change-Id: If23b3aec574ca660181be2ef1c91de1de2b07a70
genName in the globalNameSpace now calls the glGen* function of opengl
to generate a global name instead of inventing one.
this is to overcome a bug in intel driver which raises glError when
binding a framebuffer/renderbuffer with a name that was not generated
by opengl.
Change-Id: Ia0c2fefbf3538c185c380ba62d74eb94f2b28254