184 Commits

Author SHA1 Message Date
Jack Palevich
c620a52b69 Add size checks for glBufferData and glBufferSubData
Without the size checks it's possible for calls to glBufferData
and glBufferSubData to read off the end of the Buffer object's
data, which can cause page faults.

Fix end-of-line characters for the "spec" files. (That's why
every line of these files is changed.)

Enhance our code emitter to properly handle bounds checks for
possibly-null pointers.
2009-10-21 11:02:44 -07:00
Mathias Agopian
b34d5d5275 Use the TLS register if HAVE_ARM_TLS_REGISTER is defined
this will be needed for SMP, but would improve dispatching GL calls a bit
on armv6 and above.
2009-10-19 16:13:46 -07:00
Android (Google) Code Review
62df88bcc9 Merge change I0953c1d5 into eclair
* changes:
  fix [2153873] EGL-1.4 software implementation misses surface attributes
2009-10-19 18:27:47 -04:00
Mathias Agopian
0953c1d5e1 fix [2153873] EGL-1.4 software implementation misses surface attributes 2009-10-19 14:46:27 -07:00
Android (Google) Code Review
3662f9ee5b Merge change Ide4c8cbc into eclair
* changes:
  fix [2151588] glTexSubImage2D() allows pixel format conversion
2009-10-19 17:31:52 -04:00
Mathias Agopian
78811906c3 fix [2151588] glTexSubImage2D() allows pixel format conversion 2009-10-19 14:23:02 -07:00
Mathias Agopian
88d11cfbfc one step towards fixing [2071412] work around mdp 32-bits fade limitation
simplify the GL_MODULATE case and allow blending disabled with RGBA texture
2009-10-16 18:24:12 -07:00
Mathias Agopian
6fc569971f fix [2187212] add support for GLESv2 dispatch based on TLS
Instead of using a different function pointer table for ES 1.x and ES 2.x,
we use a single one that is the union (sort|uniq) of both tables. Two
instances of this table are initialized with pointers to GL ES 1.x and GL ES 2.x
entry-points.
When a context is created, we store its version number and when it is bound to a
thread we set the approruiate table based on the stored version.

This introduce no penalty while dispatching gl calls to the right API version.

[Pending Dr No approval for MR1]
2009-10-14 02:06:37 -07:00
Dima Zavin
6261ab5422 Revert "egl: temporarily also include eglTerminate->eglInitialize hack for 8k"
This reverts commit ed5ecdba36648973be3033a045e2ece8bf039e4a.
2009-10-09 18:23:08 -07:00
Mathias Agopian
b96df8548e add a way to easily catch and log GL errors (compile time flag) 2009-10-08 15:58:11 -07:00
Mathias Agopian
6950e428fe fix [2167050] glTexImage2D code path buggy in SurfaceFlinger
When EGLImage extension is not available, SurfaceFlinger will fallback to using
glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an
extra copy. However this code path has never been exercised and had some bugs
which this patch fix.

Mainly the scale factor wasn't computed right when falling back on glDrawElements.
We also fallback to this mode of operation if a buffer doesn't have the adequate
usage bits for EGLImage usage.

This changes only code that is currently not executed. Some refactoring was needed to
keep the change clean. This doesn't change anything functionaly.
2009-10-06 17:00:25 -07:00
Mathias Agopian
15b0ebb925 a simple test app for gralloc 2009-10-01 17:23:05 -07:00
Jack Palevich
5ffd62405a Add a simple test of OpenGL ES 1.x. 2009-09-30 14:17:12 -07:00
Android (Google) Code Review
b386a86c1c Merge change I8018f091 into eclair
* changes:
  Add very simple input path. Fix end-of-line issues.
2009-09-30 09:15:16 -04:00
Jack Palevich
8018f091b9 Add very simple input path. Fix end-of-line issues. 2009-09-30 06:14:24 -07:00
Jack Palevich
54f72d9df8 Don't ask for pbuffer support, because we don't use any pbuffers. 2009-09-28 18:28:07 -07:00
Jack Palevich
82c78b83e3 Print out EGL configuration info for the config we've chosen.
Don't ask for PBuffer support, since we don't actually use pbuffers,
and some drivers might not support them.
2009-09-28 18:22:01 -07:00
Jack Palevich
669ce246a8 Print out all available EGL configurations. 2009-09-28 16:34:45 -07:00
Mathias Agopian
594d02e54a fix [2147737] Pixel Flinger needs to set EGL_RENDERABLE_TYPE to EGL_OPENGL_ES_BIT
Also set max swap interval to 1, which is the only supported value currently.
2009-09-27 20:18:16 -07:00
Dima Zavin
ed5ecdba36 egl: temporarily also include eglTerminate->eglInitialize hack for 8k
Change-Id: Id5c51e54e733b24e5d5d5de0dcca84ac53afd3a9
Signed-off-by: Dima Zavin <dima@android.com>
2009-09-26 01:00:49 -07:00
Jack Palevich
d7de5ffb30 Fix build. 2009-09-25 19:55:07 -07:00
Jack Palevich
aa3b0bee51 Tighten up sample code.
- Still fails to work; don't know why.
2009-09-25 19:07:31 -07:00
Jack Palevich
2e26fc08aa Check for failure to create EGL surfaces and contexts. 2009-09-25 19:06:30 -07:00
Jack Palevich
66d2e25ae3 Use EGLUtils to simplify choosing a configuration.
Doesn't actually select anything, possibly due to device driver errors.
2009-09-25 16:25:19 -07:00
Android (Google) Code Review
117f574e10 Merge change 26911 into eclair
* changes:
  OpenGL ES doesn't allow glColorPointer with a size parameter other than 4
2009-09-24 17:45:32 -04:00
Mathias Agopian
2ddccd1649 OpenGL ES doesn't allow glColorPointer with a size parameter other than 4 2009-09-24 14:22:29 -07:00
Jack Palevich
d40dfbbbff Fix broken Javadoc link for GLSurfaceView.EGLWindowSurfaceFactory. 2009-09-24 14:10:17 -07:00
Jack Palevich
87a7265ee1 Make tritex test run with latest OpenGL driver.
Use EGLUtils::selectConfigForNativeWindow to select a legitimate
configuration. (Before now we had been selecting an incorrect
configuration, but the older drivers let us get away with it.)

Converted the source to C++ so we can call selectConfigForNativeWindow.
2009-09-24 12:19:05 -07:00
Jack Palevich
82cbaab450 Publish minor additions to GLSurfaceView API.
Clients can now modify the way that the EGL context and the EGL window
surface are created and destroyed.
2009-09-24 11:55:04 -07:00
Jack Palevich
a8fecb87c5 Create samples showing how to call OpenGL from JNI libraries. 2009-09-23 14:48:07 -07:00
Jack Palevich
15e1c6dc7a Allow GLSurfaceView clients to customize EGL Surfaces and Contexts.
This API is hidden for now, will expose once it's been tested more.
2009-09-21 19:19:25 -07:00
Jack Palevich
1bd888ba2e Fix GLSurfaceView to sync surfaceDestroyed with GL rendering thread
Until now we had a race condition where the GL rendering thread could
continue rendering a frame after we have returned from the
SurfaceHolder.Callback.surfaceDestroyed notification.
2009-09-21 15:59:17 -07:00
Mathias Agopian
40621774ec log an error when loading an existing GL driver fails 2009-09-20 16:07:26 -07:00
Jack Palevich
953254b2f2 Draw a green triangle using OpenGL 2.0 APIs. 2009-09-18 18:27:37 -07:00
Jack Palevich
fc342cbbf7 Add additional error checking, exit early if errors occur. 2009-09-17 10:59:23 -07:00
Jack Palevich
113096d5d0 Add EGL call error checking. 2009-09-16 11:08:43 -07:00
Jack Palevich
fb5ea2e579 AGL's glCompressedTexImage2D now checks the imageSize parameter.
This parameter indicates how many bytes of the image data are valid.

Previously this parameter was ignored.
2009-09-10 17:13:28 -07:00
Jason Sams
b22f5b3bb3 Simple app to create a gl2 context and dump the strings. 2009-09-01 20:41:05 -07:00
Martin Storsjo
c0dea96491 Calculate specular lighting correctly
Since the lighting calculations are done in object space, the vector
from the object to the viewer also needs to be transformed to object
space.
2009-08-25 18:35:54 -07:00
Martin Storsjo
4f31af9346 If FLAGS_2D_PROJECTION is set, the MVP matrices need updating when changing the viewport. 2009-08-25 18:35:03 -07:00
Mathias Agopian
94263d7923 fix a bug recently introduced where EGL couldn't be initialized again after it had been terminated once 2009-08-24 21:47:13 -07:00
Mathias Agopian
4a34e888ae first step for fixing [2066786] EGL object lifetime management doesn't respect the EGL spec
this change fixes the lifetime mgt of EGLSurface, EGLContext and EGLImageKHR in the EGL wrapper.
EGLDisplay is still somewhat bogus and libagl's EGL is still incorrect.

The idea of the change is that EGL objects are put in a list when created and removed when destroyed.
Before each use, we first verify if the object is in the list and if so a reference is taken and kept
for the scope of the whole EGL API being called, if not, an error is returned.

Upon object destruction, the object is simply marked as "terminated" (this is not protected by a lock
because it doesn't really matter). This flag is only used to deny access to the object by other APIs
while it's still valid (for instance current or being used by another function in another thread).
A reference is also removed and the object can then actually be destroyed when going out of scope.
2009-08-21 19:45:44 -07:00
Mathias Agopian
82fd4fce16 fix a bug in ComponentSizeChooser where it could pick a software EGLConfig instead of a better h/w one.
We now just try to honor the stencil / depth buffer "at least", while doing a "shortest distance" on the colors.
2009-08-20 19:09:34 -07:00
Mathias Agopian
ffbc864329 better error handling in EGL 2009-08-20 00:12:56 -07:00
Mathias Agopian
dcebf6f65a fix bug [2021677] egl driver unloaded after eglTerminate() is called
refactored the code so that:
- EGL APIs that can be called before or after eglInitialize() will work by loading the drivers first
- make eglGetDisplay() a lot more efficient
- make sure that EGL drivers are loaded in a thread-safe way
- don't unload the drivers upon calling eglTerminate(), they're now never unloaded, since there is no safe way to do it (some thread could be running)
- updated our EGL version to 1.4
- return better error codes if errors happen during initialization
2009-08-17 18:07:06 -07:00
Mathias Agopian
317a6280cc Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.
this also ripples into the window manager API by making some constant there deprecated as well.
2009-08-13 18:19:32 -07:00
Mathias Agopian
88e3e6bd04 Better error handling in EGL extensions 2009-08-12 21:18:15 -07:00
Mathias Agopian
5cec4742b3 second take, hopefully this time it doesn't break one of the builds: "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything." 2009-08-11 23:32:29 -07:00
Android (Google) Code Review
a1e03d4d7f Merge change 20893
* changes:
  show that we need to glClear to be fast(er)
2009-08-11 20:51:07 -07:00
Android (Google) Code Review
efefd5efb9 Merge change 20892
* changes:
  Revert "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."
2009-08-11 20:50:32 -07:00