Commit Graph

153 Commits

Author SHA1 Message Date
Mathias Agopian
d13e46158a fix [2151588] glTexSubImage2D() allows pixel format conversion 2009-10-19 14:23:02 -07:00
Mathias Agopian
618fa10949 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
4445712fd4 Revert "egl: temporarily also include eglTerminate->eglInitialize hack for 8k"
This reverts commit ed5ecdba36648973be3033a045e2ece8bf039e4a.
2009-10-09 18:23:08 -07:00
Mathias Agopian
7d21a745ac add a way to easily catch and log GL errors (compile time flag) 2009-10-08 15:58:11 -07:00
Mathias Agopian
3330b20303 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
7460160b80 a simple test app for gralloc 2009-10-01 17:23:05 -07:00
Jack Palevich
f38bce2387 Add a simple test of OpenGL ES 1.x. 2009-09-30 14:17:12 -07:00
Android (Google) Code Review
e9321e3abb 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
e5810d1f98 Add very simple input path. Fix end-of-line issues. 2009-09-30 06:14:24 -07:00
Jack Palevich
38d3c2a850 Don't ask for pbuffer support, because we don't use any pbuffers. 2009-09-28 18:28:07 -07:00
Jack Palevich
34329eed2c 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
d9872bf424 Print out all available EGL configurations. 2009-09-28 16:34:45 -07:00
Mathias Agopian
56fa27572a 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
7695a5865e 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
f1006c23c6 Fix build. 2009-09-25 19:55:07 -07:00
Jack Palevich
43123766f5 Tighten up sample code.
- Still fails to work; don't know why.
2009-09-25 19:07:31 -07:00
Jack Palevich
18e24f9525 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
Mathias Agopian
c5f0155d7f OpenGL ES doesn't allow glColorPointer with a size parameter other than 4 2009-09-24 14:22:29 -07:00
Jack Palevich
bc4a4177a3 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
9195835537 Create samples showing how to call OpenGL from JNI libraries. 2009-09-23 14:48:07 -07:00
Mathias Agopian
8c17384a5e log an error when loading an existing GL driver fails 2009-09-20 16:07:26 -07:00
Jack Palevich
9ec24af0e8 Draw a green triangle using OpenGL 2.0 APIs. 2009-09-18 18:27:37 -07:00
Jack Palevich
058777592d Add additional error checking, exit early if errors occur. 2009-09-17 10:59:23 -07:00
Jack Palevich
13e68424fb Add EGL call error checking. 2009-09-16 11:08:43 -07:00
Jack Palevich
cfa316b9e7 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
493220dcb8 Simple app to create a gl2 context and dump the strings. 2009-09-01 20:41:05 -07:00
Martin Storsjo
e03eaa1551 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
d914215edf 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
a69e0ed4a3 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
9429e9c8ad 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
baca89c06a 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
0696a57229 better error handling in EGL 2009-08-20 00:12:56 -07:00
Mathias Agopian
923c661a86 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
24e5f52901 Better error handling in EGL extensions 2009-08-12 21:18:15 -07:00
Mathias Agopian
5221271375 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
d2a6788876 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
8717ff585e 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
6c06ffc6d0 show that we need to glClear to be fast(er) 2009-08-11 20:50:20 -07:00
Fred Quintana
b2fd4665e6 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
687bea2359 option to use drawtexture at compile time 2009-08-11 20:12:18 -07:00
Mathias Agopian
cba73d3210 fix and extend the filter test a bit 2009-08-11 19:55:31 -07:00
Mathias Agopian
df37b62c62 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
1d3bcd6e21 workaround a bug in the SGX driver that would prevent eglGetConfig to work properly 2009-08-10 16:48:22 -07:00
Mathias Agopian
dfbec0e282 add support for RGBX_8888 2009-08-07 20:55:14 -07:00
Mathias Agopian
0928e31cc7 minor code clean-up 2009-08-07 16:38:10 -07:00
Mathias Agopian
653870d5e9 update most gl tests to use EGLUtils 2009-08-06 16:26:15 -07:00
Mathias Agopian
6cf50a770d 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
1c3561e8d8 added a gl swapinterval test 2009-08-05 17:38:49 -07:00
Mathias Agopian
591018aaf9 opengl tests 2009-08-05 12:22:29 -07:00
Mathias Agopian
d274eae545 log opengl-call-with-no-context only once per thread, instead of for each function call 2009-07-31 16:23:03 -07:00