154 Commits

Author SHA1 Message Date
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
Mathias Agopian
a1d9388ea7 show that we need to glClear to be fast(er) 2009-08-11 20:50:20 -07:00
Fred Quintana
64e89a8aff 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."
This reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.
2009-08-11 20:49:35 -07:00
Mathias Agopian
0d63f8163d option to use drawtexture at compile time 2009-08-11 20:12:18 -07:00
Mathias Agopian
88caa97f9e fix and extend the filter test a bit 2009-08-11 19:55:31 -07:00
Mathias Agopian
8b76a0ac6f 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.
This change makes SurfaceHolder.setType(GPU) obsolete (it's now ignored).
Added an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.
2009-08-11 16:12:56 -07:00
Mathias Agopian
e6f0f5c8fb workaround a bug in the SGX driver that would prevent eglGetConfig to work properly 2009-08-10 16:48:22 -07:00
Mathias Agopian
f1e5b0d4e5 add support for RGBX_8888 2009-08-07 20:55:14 -07:00
Mathias Agopian
9ca4dd6011 minor code clean-up 2009-08-07 16:38:10 -07:00
Mathias Agopian
a1f6eff297 update most gl tests to use EGLUtils 2009-08-06 16:26:15 -07:00
Mathias Agopian
265d9c076a added two EGL helpers for selecting a config matching a certain pixelformat or native window type 2009-08-06 16:05:39 -07:00
Mathias Agopian
bb99ffb4db added a gl swapinterval test 2009-08-05 17:38:49 -07:00
Mathias Agopian
429c521b15 opengl tests 2009-08-05 12:22:29 -07:00
Mathias Agopian
997d107078 log opengl-call-with-no-context only once per thread, instead of for each function call 2009-07-31 16:23:03 -07:00
Mathias Agopian
abac01052c be more robust when errors occur upon EGL surface creation (ie: don't crash) 2009-07-31 14:47:00 -07:00
Mathias Agopian
5b5c914487 fixed some issues with the software renderer when surfaces are made current.
there was several issues:
- when a surface was made non-current, the last frame wasn't shown and the buffer could stay locked
- when a surface was made current the 2nd time, it would not dequeue a new buffer

now, queue/dequeue are done when the surface is made current.

for this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).
2009-07-30 18:14:56 -07:00
Mathias Agopian
c902bf8f13 GLESv2 couldn't be loaded due to wrong path specification 2009-07-29 11:10:29 -07:00
Android (Google) Code Review
f021077c46 am 280436ac: Merge change 8261 into donut
Merge commit '280436accc45c1883766a98499148439fa044531'

* commit '280436accc45c1883766a98499148439fa044531':
  Remove recently-added android.opengl.Version API
2009-07-22 17:34:28 -07:00
Jack Palevich
7e263332e0 Remove recently-added android.opengl.Version API
There's another already-existing way of obtaining this information,
the ConfigurationInfo.reqGlEsVersion field returned from
ActivityManager.getDeviceConfigurationInfo.
2009-07-22 15:22:59 -07:00
Android (Google) Code Review
68ce000ed8 am ef6b66cb: Merge change 8222 into donut
Merge commit 'ef6b66cbbbe7ae8ee0450cbbaae4194b069679a1'

* commit 'ef6b66cbbbe7ae8ee0450cbbaae4194b069679a1':
  Add a public API that reports the supported OpenGLES API level.
2009-07-22 13:06:03 -07:00
Jack Palevich
1baf11b116 Add a public API that reports the supported OpenGLES API level. 2009-07-22 12:59:49 -07:00
Jean-Baptiste Queru
6a294263f7 Merge commit 'goog/readonly-korg-master' into merge_korg_master
* commit 'goog/readonly-korg-master':
  Fixed Android issue #400, where the Intent documentation was inaccurate in a number of places, undoubtedly causing untold grief to innumerable masses.
  Bug Fixed for libagl.
2009-07-16 14:54:11 -07:00
Mathias Agopian
a2fb72e08f remove libagl's dependency on gralloc_priv.h 2009-07-15 18:53:32 -07:00
Mathias Agopian
7cd8ced298 this header file is not needed anymore 2009-07-14 14:50:44 -07:00
Android (Google) Code Review
2eedb2515b am 46e28db8: Merge change 6713 into donut
Merge commit '46e28db8818332e3cda4cc410cc89a1ed7ce4db6'

* commit '46e28db8818332e3cda4cc410cc89a1ed7ce4db6':
  fix for [1969185] valgrind errors in new gl stuff
2009-07-09 17:35:26 -07:00
Mathias Agopian
ab1cf3efd3 fix for [1969185] valgrind errors in new gl stuff 2009-07-09 17:33:15 -07:00
Marco Nelissen
92a3ed4364 Make opengl loader use an absolute path. 2009-07-07 16:18:18 -07:00
Shin-ichiro KAWASAKI
26f6a823ca Bug Fixed for libagl. 2009-07-07 19:14:13 +09:00
Mathias Agopian
0f53af13b7 fix a bug where gl didn't always fallback to software when copybit failed. minor optimizations to copybit codepath. 2009-06-29 16:36:49 -07:00
Mathias Agopian
68eeb80a54 use copybit for eglSwapBuffers() copy-back operations 2009-06-25 15:39:25 -07:00
Android (Google) Code Review
c6f36ed547 Merge change 5352 into donut
* changes:
  fix [1942438] eglGetCurrentSurface() returns bogus value
2009-06-25 13:22:55 -07:00