This change adds Java definitions for the enums of the
GL_OES_EGL_image_external OpenGL ES extension.
Bug: 3482193
Change-Id: Ib50326f8be9b9cc9021753855c3846ddcdc5eaa2
- don't advertise extensions that are not supported
by any implementation
- remove EGL_ANDROID_swap_rectangle which is not
implemented by anybody and confuses people
- add some comments about mandatory extensions
Bug: 5428001
Change-Id: Id8dc48116ac1d1eb79ec9ef55d03e29d4257c1f3
the code that validated EGL objects dereferenced the object
to access its EGLDisplay -- needed for validation (!).
This was wrong for two reasons, first we dereferenced the object
before validating it (potentially leading to a crash), secondly
we didn't validate that the object existed in the right EGLDisplay.
We now use the EGLDisplay passed by the user API.
Change-Id: I66f9e851d4f8507892a6b1fee3065f124c4e7138
This change adds the ANDROID suffix to the all the types and functions
defined by the EGL_ANDROID_blob_cache extension.
Change-Id: I087875b96d9a7053efb9c8d5614f9f765eed799d
This does not happen on high end gfx devices. This happens
only if only one EGL context is initialized in the current
process.
Change-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e
This change causes any insertions into the EGL cache to trigger an
attempt to save the cache contents to disk. The save operation is
deferred to allow multiple cache insertions to be batched up.
Change-Id: I6cfec9c0dbbef94d3f8880860e2a365dccc296c7
This change adds support for saving and loading the contents of the EGL
cache. It also adds some simple tests for the EGL cache.
Change-Id: I18e5e789e0897a0783d29d1c1e64d26de2dd44c4
This change makes the makes the stub EGL_ANDROID_blob_cache callbacks
actually use a BlobCache object.
Bug: 5474671
Change-Id: I5cbaae2dea3aad2fe306c9f57029c3f215a0863a
This change adds a stub cache implementation that gets passed to the
underlying EGL implementation at initialization time.
Change-Id: I14437c5b6f91b7a34a19bb02ad802e6e54f88d2a
always use GL_RGBA, GL_UNSIGNED_BYTE for screen capture
and make sure to handle GL_BGRA_EXT used on some gpu.
Change-Id: If9c973677fec8a5c4e72be22e7ef7d4bf5f008f4
This patch modifies the library loaded in libEGL.so to
handle the case of GLES emulation as follows:
- if we detect that we run inside the emulator, check the
GPU emulation status through ro.kernel.qemu.gles, which
will be set to 1 if supported, or 0 otherwise.
When trying to run on an older version of the emulator,
the kernel parameter will not be defined at all.
- if GPU emulation is supported, use egl.cfg as usual.
It will contain a line like "0 0 emulation" that will
load libEGL_android.so appropriately.
- nothing is changed if we don't run inside the emulator.
NOTE: Ideally, we would modify libEGL_emulation.so to
redirect all calls to libEGL_android.so in this case.
However, this turns out to be extremely tedious to implement
(too many functions with different signatures).
As such, it is much simpler to make the check before
loading the library.
Change-Id: I9930bc168d9013cc8700feedc57b979384467c37
This change moves the call to native_window_api_disconnect from
eglDestroySurface to the egl_surface_t destructor. The egl_surface_t
can outlive the external EGLSurface if eglDestroySurface is called while
the surface is made current on a thread.
Change-Id: I0df6117a5633c2a19935fe356579abdd76fc471f
the original connect/disconnect hooks are deprecated
and replace by api_connect/api_disconnect. the original
hooks are no no-ops.
api_connect/api_disconnect is now only called from the
android framework.
Bug: 5057915
Change-Id: I8ca64cd1acd6cabf915bf54689ec2e5f6dfa495a
This change adds an enum value and a description of the expected
implementations to the EGL_ANDROID_recordable extension specification.
It also adds the new enum value to the 'eglext.h' header.
Change-Id: Ia0de2d5613708445ff83b85a7e550f9417531ee4
This change fixes how the Android EGL layer overrides the size and
format of an ANativeWindow in eglCreateWindowSurface. The new behavior
is to leave the size untouched when overriding the format. The previous
behavior was to reset the ANativeWindow to use the default size set by
the ANativeWindow implementation.
It also adds two new 'perform' methods to the ANativeWindow interface:
set_buffers_dimensions and set_buffers_format, and redefines the
behavior of set_buffers_geometry to be the combination of these two new
methods.
Additionally, this change adds an error check for the return value of
the new native_window_set_buffers_format call, which required adding a
(stub) handler for to FramebufferNativeWindow.
Change-Id: I805c7ccd8d4730dfb132d10d8bc3fb058a0b9df1
as specified by the EGL specification, terminated objects's
handles become invalid, the objects themselves are destroyed
when they're not current to some thread.
Change-Id: Id3a4a5736a5bbc3926a9ae8385d43772edb88eeb
This change removes the check that disallowed the creation of an
EGLSurface that would send frames to a SurfaceTexture.
Change-Id: I44c6d5df503cc676a88144d72d39b414692ce4c9
CaptureDraw specifies how many glDrawArrays/Elements to glReadPixel
CaptureSwap similarly applies to eglSwapBuffers
Change-Id: Ie7a7e3392b4ecdc0659dcee04f4bab97c35267dc
Signed-off-by: David Li <davidxli@google.com>
setprop debug.egl.debug_forceUseFile 1: always use file
setprop debug.egl.debug_maxFileSize <int MB>: exit when reached
setprop debug.egl.debug_filePath <path>: may need to make the file
writable first.
setprop debug.egl.debug_port <unsigned short>
setprop debug.egl.debug_proc <proc cmdline>: to match debuggee process
Change-Id: I34ca1f3092f3abf17e2ded9d1689d0cdef6e07e8
Signed-off-by: David Li <davidxli@google.com>
To allow auto generate of Debug_glReadPixels function.
Also added AfterGeneratedCall messag type, and client override
of expectResponse for improving protocol.
Also implemented callers for client to get shader/program iv & infolog
Change-Id: I8426de0be4b7ffcb8b2b4f063ad85d19a9d2d72e
Signed-off-by: David Li <davidxli@google.com>
Just use jniThrowException instead. Note that it would be trivial to throw
seemingly more appropriate exceptions (NullPointerException and
OutOfMemoryException in particular), but I'm only attempting to preserve
existing behavior here.
I also found shadowing bugs in some of the special-case functions, which
would previously always have leaked memory.
This also moves an accidental change to a generated file (ActivityThread ->
AppGlobals) into the generator, so it won't be overwritten in future.
Change-Id: Iab570310b568cb406c60dd0e2b8211f8a36ae590
Uses a SurfaceTexture feeding into a OpenGL ES2 GLSurfaceView. Also
uses accelerometer data and SurfaceTexture-provided timestamps for a
simple physics simulation which moves the camera preview oval in
response to device movement.
Change-Id: I275a0c6a4e25829d617e635b25e70e2a9c8455cb
Data format is uint32_t totalDecompressedSize, then repeat:
uint32_t chunkDecompressedSize, chunkCompressedSize, chunk data.
If chunkCompressedSize == 0, then chunk is not compressed.
Also start fixing integer sizes on server.
On client, set endianness to match server.
Change-Id: I0d5afa16976ea6019b91c4e21d284605da7e135e
Signed-off-by: David Li <davidxli@google.com>
Move EGL objects (contexts, surfaces, ...) collection from global
static into EGL display object. Since EGL implementation currently
supports only one display, this doesn't change current logic. This
aims at preparing for next coming changes in eglTerminate() to
support per-display cleanup.
Bug: 4152714
Change-Id: I5e424781b89c3c275f9922f943463d5f6b1f6bc6
Check for initialized display, and set EGL error to EGL_NOT_INITIALIZED
whenever it isn't, for all EGL functions taking an EGLDisplay as argument
and requiring it to have been initialized.
Bug: 3366011
Change-Id: Ib1d8a3a207257995518f4430fe97f8c406c7fc13
caller.cpp Is generated by generate_caller_cpp.py
Hand written functions are in caller.h
Change-Id: I27ed9792df52569159a2d1b8a78207c7a7518537
Signed-off-by: David Li <davidxli@google.com>
to allow "stepping" in functions.
Also fix bug in reference frame.
Change-Id: Ia33620eaf2c5f4e615f7aad2df277b6afc617060
Signed-off-by: David Li <davidxli@google.com>
liblzf is in external/liblzf, it's BSD-type licence (optionally GPL2)
Change-Id: Idc7883fe2155f366cda384e64796a1493335ae4f
Signed-off-by: David Li <davidxli@google.com>
We were leaking all EGLSyncKHR objects, over time the list
would grow and become very slow to operate on.
Bug: 4107131
Change-Id: I6c82daf49fe3189d04550781d64d57c30c95f552
This change makes the ANativeWindow_lock NDK function error out if it is
passed an ANativeWindow with a concrete type that is not Surface. It
also makes eglCreateWindowSurface fail if it is passed a
SurfaceTextureClient as its 'window' argument.
Bug: 4087277
Change-Id: Ie68c50c52d88f72d8a387f6c094908044c83a88c
This change fixes the gl2_yuvtex test to use the stride chosen by the
gralloc implementation rather than hard-coding it.
Bug: 4081948
Change-Id: If7c96a20fc3fb1df2ff25e6afaa9f34dbad2002c
In message loop, use select to check for available commands from client,
rather than always expecting commands in eglSwapBuffers.
Change-Id: Ifc34dd77c2528c8b9c71f594e3eda4f93400cd2b
Signed-off-by: David Li <davidxli@google.com>
Send VBO related commands to client, which tracks the state.
Maintain index buffer content and vertex attrib pointer/buffer state on server.
During glDrawArrays/Elements, send user memory data to client.
Change-Id: Ia920e90479329b301ae4b5735e833eeb20293c94
Signed-off-by: David Li <davidxli@google.com>
Somewhat functional, refer to README for details.
Need to enable Android.mk to build.
It builds libGLES_android.so, which needs to replace
the one in system/lib/egl built by libagl.
Change-Id: Iec3aaa8f3963a4185d81955cd24019eb0c4a5850
Signed-off-by: David Li <davidxli@google.com>
Also added timing mode option using utils/Timers.h.
Factored out common code to reduce size.
Improved Protobuf message.
Uploads data from glBufferData and glBufferSubData.
Change-Id: Iaae5e706235d942df81c7eada7223fb0b0583911
Signed-off-by: David Li <davidxli@google.com>
Use debug.egl.debug_proc property to match process cmdline.
Binds to TCP:5039 and waits for client connection.
Sends function call parameters, textures and shaders using Protobuf.
Java Eclipse client plug-in is next.
Change-Id: I183b755263663f87e86dde1ad12f527d0445fd57
Signed-off-by: David Li <davidxli@google.com>
HAVE_ANDROID_OS was defined as "1" for targets, but never defined as "0"
for non-targets. Changing them to #ifdef should be safe and matches
all the other uses of HAVE_ANDROID_OS throughout the system.
Change-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb
This changes the clearError function in the EGL wrapper layer to simply
call eglGetError(). That should clear any pending errors from all the
underlying EGL implementations, which is needed to correctly report the
error for the most recently called EGL function.
Change-Id: Iad19c69f0c5305e873f3c2f96d353280d31f7b61
The bug caused libagl to return 0 from eglGetError if an EGL error value
(including EGL_SUCCESS) was set on a different thread but not yet on the
current thread.
Bug: 3403756
Change-Id: Ifd965091d116745c2e22c121151ade9e78eb14c6
Clear the current thread error state on entry to API functions as
mandated by the EGL 1.4 specification, section 3.1. glGetError
returns additional information about the "most recent EGL function".
Change-Id: Ic24c64b39294ffc1a4e43fa72663e076b9d7decf
Return wrappers from GetProcAddress for glEGLImageTargetTexture2DOES
and glEGLImageTargetRenderbufferStorageOES which unwrap the EGLimage
handle before calling through to the implementation.
Change-Id: I2f5b180ab3ccdb28a4f510a2bd8c2eee941a84df
Add EGL_KHR_gl_texture_cubemap_image and EGL_KHR_gl_renderbuffer_image
to the static EGL extension string since these require no new APIs
beyond what is already required.
Change-Id: I2d1fde86b19bb9eee46b3b977f51784a17cfcc3c
eglMakeCurrent() would only deref the previous surfaces if the old and
new contexts were the same. eglTerminate() should not touch TLS.
eglReleaseThread() needs to unbind the current context.
Change-Id: I213b8be77b1a23b5a8a6afaac60643662c8aa010
Enhancements include:
+ Change default delay after each set operation
from 0.1 to 0.0 seconds. This significantly
increases the default rate at which operations
are performed.
+ Make sourceCrop to displayFrame scale
factor of 1.0 a frequent occurance.
+ Enable use of RGB888 and YV12 graphic formats.
+ Add initCheck() call after creation of a
GraphicBuffer, to confirm it was created
without any errors.
Change-Id: I1606dff3924a23bdd5cb27ba302bebb4f200d768
(there are multiple bugs this should fix)
we now use the EGL_NATIVE_VISUAL_ID of a config to set
the ANativeWindow's format from eglCreateWindowSurface(),
this guarantees that the surface's format will match
whatever EGLConfig the user chose.
this should fix all current and future config/surface format
mismatch and allow users to easily select 32-bits surfaces.
Change-Id: I3835d0eb70c75eeecded3c3509a0a8207554c98b
* commit '17fd21fc0638d8734867b6f189efbabb227f3ae1':
DO NOT MERGE. workaround [3177481] eglGetProcAddress() returns the wrong pointer for some GL extensions
We just make sure eglGetProcAddress() will return NULL for
glEGLImageTargetTexture2DOES
glEGLImageTargetRenderbufferStorageOES
which is better than returning the address of the wrong implementation.
the correct fix is more involved.
Change-Id: I585a1f40e564f862e5dd382224609ccd069cd3b5
This change allows to use this header with the NDK's standalone toolchain.
For the record, the NDK toolchain defines __ANDROID__ as a compiler built-in
macro, this is however not the case currently for the prebuilt binaries that
are being used by the full Android build system, which otherwise defines ANDROID.
This change allows the header to be used by all toolchains properly. Note however
that we should properly should change our toolchain and sources to provide and
rely on __ANDROID__ instead of ANDROID though.
Change-Id: Iaa1aa1146985b5f24dcf3a83d9ddb9b4b59dc328
The code looks correct, but causes an internal compiler error on
simulator builds on mine (an other) gLucid desktops.
Change-Id: Iaf0d8120778ec1c6fc739ef13e6eaaac53e3bcc8
affects software renderer (emu) only.
per EGL spec:
If EGL_MAX_PBUFFER_WIDTH, EGL_MAX_PBUFFER_HEIGHT,
EGL_MAX_PBUFFER_PIXELS, or EGL_NATIVE_VISUAL_ID are specified
in attrib list, then they are ignored
Change-Id: I3d5214ce896986da2f11d2eb1889afc41731eaa6
Merge commit '49af98ed877e8a2db5a6b5be811c798e6f73dff7'
* commit '49af98ed877e8a2db5a6b5be811c798e6f73dff7':
fix [3119687] [Maps][4.6.0] Force close in street view
Merge commit 'aa6df3669deab2a804c6f8cc1ea3fd5af0a28685' into gingerbread-plus-aosp
* commit 'aa6df3669deab2a804c6f8cc1ea3fd5af0a28685':
fix [3119687] [Maps][4.6.0] Force close in street view
The EGLConfig attributes MUST be sorted, because they're used in a binary search.
A recent change introduced a bug where 2 of the configs had improperly
sorted attributes.
Change-Id: I1ac53e4463d62f27125ca9f82ed946e6c98ddba0
Merge commit '63ac8f5377833303a7f8c4d60f0d74daf903e6ea'
* commit '63ac8f5377833303a7f8c4d60f0d74daf903e6ea':
Add a test application to dump all the EGLConfig available
Merge commit 'add9db83fdbf939f0610f8b357788fd3e8ad9ab5'
* commit 'add9db83fdbf939f0610f8b357788fd3e8ad9ab5':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Merge commit '2b2da52608303b149d22418865e67c8030c70e73' into gingerbread-plus-aosp
* commit '2b2da52608303b149d22418865e67c8030c70e73':
Add a test application to dump all the EGLConfig available
Merge commit 'f4cd9be0390135269e22e42fd2e1fe61fdcf9863' into gingerbread-plus-aosp
* commit 'f4cd9be0390135269e22e42fd2e1fe61fdcf9863':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
SW egl returned always EGL_FALSE even when the display was valid.
This made calls to eglSwapInterval to fail on HW since the wrapper
fails if either SW or HW egl fails.
Letting SW eglSwapInterval to return true when display is valid is
ok since spec says that interval parameter is silently clamped.
Change-Id: Ib4aa1dbfccf510a0f36621796e79a4d46852ee6a
Measures the time to do nothing but clear the screen in an
OpenGL Java app. Spews frame time statistics to the log.
Control long frame time by setting debug.longframe_ms;
e.g., adb shell setprop debug.longframe_ms 33
Change-Id: I435a3cb170048349e00417c44db42121c68744b2
Merge commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e'
* commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e':
better fix for [3028370] GL get error should return a valid error if no context is bound.
Merge commit '524a6d8e9bb4df9cec0520ac1d9733642b13e76f' into gingerbread-plus-aosp
* commit '524a6d8e9bb4df9cec0520ac1d9733642b13e76f':
better fix for [3028370] GL get error should return a valid error if no context is bound.
it turns out that we cannot return INVALID_OPERATION from glGetError() because the
GL spec says that it must be called in a loop until it returns GL_NO_ERROR.
now, we always return 0 from GL functions called from a thread with no
context bound. This means that glGetError() will return NO_ERROR in this case,
which is better than returning a random value (which could trap the app in a loop).
if this happens in the main thread of a process, we LOG an error message once.
Change-Id: Id59620e675a890286ef62a257c02b06e0fdcaf69
Merge commit '9c4d7d677097981a349c718902e29050dad3d59f'
* commit '9c4d7d677097981a349c718902e29050dad3d59f':
fix [3028370] GL get error should return a valid error if no context is bound.
Merge commit '5c6c5c7a43d44316395f5c35ab713372124b8b4c' into gingerbread-plus-aosp
* commit '5c6c5c7a43d44316395f5c35ab713372124b8b4c':
fix [3028370] GL get error should return a valid error if no context is bound.
glGetError() will now always return GL_INVALID_OPERATION if called from a thread
with no GL context bound.
Change-Id: I28ba458871db051bb4f5a26668a1fa123526869c
Merge commit '9d5fac517463526450268bf6353e32c13a8cdd0c' into gingerbread-plus-aosp
* commit '9d5fac517463526450268bf6353e32c13a8cdd0c':
fix small bug in EGL error management
make sure to clear our EGL implementation's error when returning
an error from an underlying implementation
Change-Id: Ibce4726cef1f900e4c7f16002345d7a07f8cdf41
Merge commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7'
* commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7':
support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
Merge commit '181e5ea8087360742b3ed0a7f2e6f8f8baa0a760' into gingerbread-plus-aosp
* commit '181e5ea8087360742b3ed0a7f2e6f8f8baa0a760':
support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
Add correct enumerants for OES_EGL_image_external to glext.h.
SurfaceFlinger now checks for the correct extension name.
Change-Id: I2ba2728a01fa2260bd086d2df4316c68f694a9b1
Merge commit '6808e6a867ba0b32f8bd97163e134c2866423f01' into gingerbread-plus-aosp
* commit '6808e6a867ba0b32f8bd97163e134c2866423f01':
Fix a few typos in EGL wrapper
Merge commit 'edbb8083a815e9d911f8e659fc5c293543fdf502' into gingerbread-plus-aosp
* commit 'edbb8083a815e9d911f8e659fc5c293543fdf502':
add a fps counter to sanangeles demo
Merge commit 'b3aaf3baa7fd811af19835bbc8837a88984c160a'
* commit 'b3aaf3baa7fd811af19835bbc8837a88984c160a':
fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used.
Merge commit '43647129d676e8c802850ca493f2ebc6064a4a1a'
* commit '43647129d676e8c802850ca493f2ebc6064a4a1a':
fix [2931161] crash in labyritnth when completing a level
Merge commit 'bccfcd95d3cc4029c1ed8514d31436a857283873' into gingerbread-plus-aosp
* commit 'bccfcd95d3cc4029c1ed8514d31436a857283873':
fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used.
a typo prevented the last 2 vertices of a batch to be copied to the front of
the next batch. Instead, the 2 very first vertices were used.
Change-Id: I3c344784dac1cef64df2fb6f6efb2f901cc788db
Merge commit '17da06631041f9f2237738fb673a74a85b1d9cf4' into gingerbread-plus-aosp
* commit '17da06631041f9f2237738fb673a74a85b1d9cf4':
fix [2931161] crash in labyritnth when completing a level
Merge commit 'a4ed1c6788ead0324106d76f497233ee42a1f1ac'
* commit 'a4ed1c6788ead0324106d76f497233ee42a1f1ac':
fix [2912927] Can't get NV_draw_path extension to work
Merge commit '1e4aa48cfd2b2c13c4f7ace8c9fcb33adfa18661' into gingerbread-plus-aosp
* commit '1e4aa48cfd2b2c13c4f7ace8c9fcb33adfa18661':
fix [2912927] Can't get NV_draw_path extension to work
Merge commit '553a333d4446bb34330da92f02daa515dc597939'
* commit '553a333d4446bb34330da92f02daa515dc597939':
improve a bit the implementation of eglGetProcAddress
Merge commit '603a34ee30e7d14ddc02c1beb7bca915622ae4bf' into gingerbread-plus-aosp
* commit '603a34ee30e7d14ddc02c1beb7bca915622ae4bf':
improve a bit the implementation of eglGetProcAddress
h/w acceleration is not supported through software gl + copybit anylonger,
instead, h/w opengl must be used. in the system compositor, a new h/w
composition api will be introduced to allow h/w accelerated composition with
overlays and/or 2D blocks.
Change-Id: I04949cb074ba8c4d637319ace23497c16a58d5bf
Merge commit 'eb248a58fabac31873982e4f389ba81981f4041f'
* commit 'eb248a58fabac31873982e4f389ba81981f4041f':
fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface().
Merge commit '55a76dd8d9996c1e93762d7611789aea696d536c' into gingerbread-plus-aosp
* commit '55a76dd8d9996c1e93762d7611789aea696d536c':
fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface().
rework how our EGL wrapper manages EGLConfig:
- we now store the EGLConfig with the EGLSurface and EGLContext
so that we can have easy access to it from eglQueryContext
and eglQuerySurface.
- EGLConfig now are an index into a sorted table of egl_config_t,
we use a binary search to retrieve our EGLConfig (the index) from
the implementation's EGLConfig.
- egl_config_t keeps track of the implementation's index,
EGLConfig and CONFIG_ID as well as our CONFIG_ID.
In many ways, this implementation is simpler and more robust, as it doesn't
assume anything about the number of implementations nor what EGLConfig is
made of (the previous code assumed EGLConfig didn't usem more than 24-bits).
Change-Id: Id5abe923aacb6e1fd2b63bd8c15d7b04ae824922
Handle rotation from portrait to landscape by restarting test if not
finished.
Don't write blank line to csv file.
Change-Id: I154443138817bcec9530123c8388fcf659632336
Merge commit '5219a82f9d64a7d13401dcf9a0703a0ca2cd842d'
* commit '5219a82f9d64a7d13401dcf9a0703a0ca2cd842d':
Fix a bug that prevented the creation of EGL shared contexts.
Merge commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d' into gingerbread-plus-aosp
* commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d':
Fix a bug that prevented the creation of EGL shared contexts.
Merge commit 'c6e1d88022db800773401c16803e1ab27fd01a7e' into gingerbread-plus-aosp
* commit 'c6e1d88022db800773401c16803e1ab27fd01a7e':
Introduce official public NativeWindow type.
Not yet hooked up to anything in the NDK, but requires renaming
the existing android_native_window_t type everywhere.
Change-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e
Merge commit 'cefb88587443323d147e687ff78eae9195eb584c'
* commit 'cefb88587443323d147e687ff78eae9195eb584c':
Added support for the GL_TEXTURE_EXTERNAL target
Merge commit '28333315c6f62b303de2ec0ac9e48158ed419f06' into gingerbread-plus-aosp
* commit '28333315c6f62b303de2ec0ac9e48158ed419f06':
Added support for the GL_TEXTURE_EXTERNAL target
the EGL specification states that this should be treated as though it was
an empty list terminated with EGL_NONE.
Change-Id: I294104370a86b5e5c34c7bcf15c5459eab464631
Merge commit 'fb234bbe5e7cbae42b4fc8f4ab353ba561599db2' into kraken
* commit 'fb234bbe5e7cbae42b4fc8f4ab353ba561599db2':
Notify user regarding invalid number during MO call.
Build software AGL library with correct get_tls() macro for ARMv7 based platforms
Fix glReadPixels() to verify that both x and y are non-negative.
glEGLImageTargetRenderbufferOES() pass the wrapped EGLImage
to the implementation, rather than the unwrapped one.
Change-Id: I149f9ed73e6ab9089110600e1db4311ba7a8c83a
Previously we imlpemented the standard semantics for
eglInitialize / eglTerminate, which are that
eglInitialize may be called any number of times,
but the first call to eglTerminate will terminate
the display.
Now we follow reference-countins semantics, which
means that eglTerminate will only terminate the
display when the reference count returns to zero.
This change allows EGL to be used by multiple
independently written modules in the same process.
(Otherwise there is no way for the independent
modules to coordinate their use of the display.)
A typo caused GL_AMBIENT_AND_DIFFUSE to only set the the ambient color.
Fix another typo which caused the viewer position to be wrong for
specular highlights.
Switch back to eye-space lighting, since there are still some issues
with some demos (San Angeles in particular).
Duplicate ARCH_ARM_HAVE_TLS_REGISTER BoardConfig to proprocessor
HAVE_ARM_TLS_REGISTER define from Bionic's libc Android.mk to ensure that
OpenGL libraries (libEGL, libGLESv1_CM, libGLESv2, libGLES_android) use the
correct codepath in bionic_tls.h for accessing the TLS address
Merge commit '6d0f6c78037225ef5648d10e45a513a2e7c612b5' into eclair-plus-aosp
* commit '6d0f6c78037225ef5648d10e45a513a2e7c612b5':
DO NOT MERGE A library for encoding and decoding ETC1 textures.
The ETC1 compressed texture format is commonly
supported by OpenGL ES 2.0-capable devices.
This change adds a host-only version of the library. It is used by
the etc1tool.
The build system does not honor user tags on apps,
and setting it is misleading.
This removes the confusion by making the makefiles
behave like they read.
Change-Id: I7c5feba1c7d07f915b97dd098584f29938a4c885
Something happened to the line endings, adding
a blank line after most lines of text. I
repaired the damage, but in the process some
blank lines have been added / removed.
Adds support for formerly-unimplemented methods:
glCurrentPaletteMatrixOES
glLoadPaletteFromModelViewMatrixOES
glMatrixIndexPointerOES
glWeightPointerOES
The bulk of the changes are related to implementing the two PointerOES
methods, which are implemented pretty much the same way as the existing
Pointer methods were implemented.
This change also changes the way glPointSizePointerOES is implemented,
making it act like all the other Pointer methods. (Previously it was
not handling non-direct-buffer arguments correctly.)
Fixes bug 2308625 "Support matrix palette skinning
in JSR239 and related APIs"
Also updated GLLogWraper to fix two bugs in GLLogWrapper that were
discovered while testing matrix palette skinning support:
a) Handle trying to print the contents of null-but-enabled buffers.
(It's not legal to draw with null-but-enabled buffers, and
in fact some OpenGL drivers will crash if you try to render in this
state, but there's no reason the GLLogWrapper should crash while trying
to debug this situation.
b) Don't read off the end of a vertex buffer with non-zero position when
printing the entire contents of the vertex buffer. Now we only print from
the current position to the end of the buffer.
Provide a new method, GLSurfaceView.setEGLContextClientVersion. Clients
call this method to define which level of OpenGL ES support they want.
This method only affects the default behavior of GLSurfaceView. If clients
have supplied their own EGLContextFactory or EGLConfigChooser then they
are on their own if they want to create an OpenGL ES 2.0 context.
This API is currently hidden.
Update the gl2_java test to use this new API.
Update the gl2_java test's AndroidManifest.xml file to indicate that
it requires OpenGL ES 2.0.
Merge commit 'da5e90bee443129511e231e9078a134626b87541'
* commit 'da5e90bee443129511e231e9078a134626b87541':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Merge commit '66b5d902a29e08237f16be53a84f9c2472df8493' into eclair-mr2-plus-aosp
* commit '66b5d902a29e08237f16be53a84f9c2472df8493':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Merge commit '274072089ceff6eacb9ccfb59290a18f43739c87' into eclair-mr2
* commit '274072089ceff6eacb9ccfb59290a18f43739c87':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Merge commit '274072089ceff6eacb9ccfb59290a18f43739c87' into eclair-plus-aosp
* commit '274072089ceff6eacb9ccfb59290a18f43739c87':
fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Merge commit 'ac94fbd081450ae7f208e4525b23b36d90d382e0'
* commit 'ac94fbd081450ae7f208e4525b23b36d90d382e0':
Capture failure of copybit->stretch()
Fix obvious typo bug in egl.cpp
LocationManagerService: Fix race when removing LocationListener
Don't return when blocking is true.
Fix of compatibility with multifunction extUSB adapters.
Fix documentation example, per issue 895 on android.googlecode.com
Merge commit 'ba37ea550d97b753fc74049d22f5e752d4b0185f'
* commit 'ba37ea550d97b753fc74049d22f5e752d4b0185f':
part of fix [2186418] switch passion to 24-bits framebuffer
Merge commit '36fe3eeaa056ff13455c0df73b495b2bae8c1469' into eclair-mr2
* commit '36fe3eeaa056ff13455c0df73b495b2bae8c1469':
part of fix [2186418] switch passion to 24-bits framebuffer
Merge commit '9a54d7dddcbc982d644c627693dc39fb2cb5c0fb' into eclair-mr2
* commit '9a54d7dddcbc982d644c627693dc39fb2cb5c0fb':
fix [2236832] software OpenGL ES driver doesn't work on sholes
Merge commit '21977eb0f1d22497d0beed0492e579f953a56552' into eclair-mr2
* commit '21977eb0f1d22497d0beed0492e579f953a56552':
fix [2231527] Compatibility with SpaceJunk game (OpenGL)
Merge commit 'd1d744cdf4b08c8ef969790bae305c82ae783f4e'
* commit 'd1d744cdf4b08c8ef969790bae305c82ae783f4e':
fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video
Merge commit '8637759a1d34a4adda292579d5f8790587659235' into eclair-mr2
* commit '8637759a1d34a4adda292579d5f8790587659235':
fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video
we lost the concept of vertical stride when moving video playback to EGLImage.
Here we bring it back in a somewhat hacky-way that will work only for the
softgl/mdp backend.
Merge commit '78383abf76e7daf8c1968d2e9a29a1ba354edb2e'
* commit '78383abf76e7daf8c1968d2e9a29a1ba354edb2e':
Turns out the SGX driver is correct and the bug was in this test.
Merge commit 'c64e9346785a1a4fc95ec6cf27da8a5193a2dfbc'
* commit 'c64e9346785a1a4fc95ec6cf27da8a5193a2dfbc':
fix[2222341] Soft reset while going back from camcorder settings
Merge commit '77bd91f8af44867935ea2df22f69fb244b009b94' into eclair-mr2
* commit '77bd91f8af44867935ea2df22f69fb244b009b94':
Turns out the SGX driver is correct and the bug was in this test.
Merge commit 'd01767f8b7038108f9125cd2122b117db9919824' into eclair-mr2
* commit 'd01767f8b7038108f9125cd2122b117db9919824':
fix[2222341] Soft reset while going back from camcorder settings
add a way to convert a mapped "pushbuffer" buffer to a gralloc handle
which then can be safely used by surfaceflinger, without including
gralloc_priv.h
Merge commit '894449ac461e69cd40f10e9d3644555357a5ed82'
* commit '894449ac461e69cd40f10e9d3644555357a5ed82':
update line test to expose some bug on SGX530 ed4
Merge commit '5dc7a21cbbd4af908e39e55e5ca7ab14cda25d4a' into eclair-mr2
* commit '5dc7a21cbbd4af908e39e55e5ca7ab14cda25d4a':
update line test to expose some bug on SGX530 ed4
Merge commit '64d3f44c7bf5a6e80be419df5850ef60fec216b5'
* commit '64d3f44c7bf5a6e80be419df5850ef60fec216b5':
fix [2143798] Need to figure out how to do video
Merge commit '7bde36e64e66c81f0150d0372e1357a31f4ec704' into eclair-mr2
* commit '7bde36e64e66c81f0150d0372e1357a31f4ec704':
added GL test for textured lines
Merge commit '73e17015d3cd67c93ccad5d63d31c439ff6fa694' into eclair-mr2
* commit '73e17015d3cd67c93ccad5d63d31c439ff6fa694':
fix [2143798] Need to figure out how to do video
in the case where we fade a 32-bits surface (ie: GL_MODULATE w/ a,a,a,a + blending),
we first make a copy of the background into a RGB buffer, then we blend the 32-bits
surface as usual (without the alpha component), and finally blend the copy of
the background on top with 1-a. This uses a lot of bandwidth, but no CPU time.
Use EGLImageKHR instead of copybit directly.
We now have the basis to use streaming YUV textures (well, in fact
we already are). When/if we use the GPU instead of the MDP we'll
need to make sure it supports the appropriate YUV format.
Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported
Merge commit '8f89a1a360465e08e81ceca3cb3042606a98668b' into eclair-mr2
* commit '8f89a1a360465e08e81ceca3cb3042606a98668b':
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.
Merge commit '18dc8826a2c7244a7a61c9c53113516416db4714'
* commit '18dc8826a2c7244a7a61c9c53113516416db4714':
Use the TLS register if HAVE_ARM_TLS_REGISTER is defined
Merge commit 'b34d5d527596102ae7a040d787e4d8c336bf192b' into eclair-mr2
* commit 'b34d5d527596102ae7a040d787e4d8c336bf192b':
Use the TLS register if HAVE_ARM_TLS_REGISTER is defined
Merge commit '220f052f6103655e08cba6cfb1dc542b81ffab11'
* commit '220f052f6103655e08cba6cfb1dc542b81ffab11':
one step towards fixing [2071412] work around mdp 32-bits fade limitation
Merge commit '639d69fe8799ac2fa0bbf7560229531377ccc0f4' into eclair-mr2
* commit '639d69fe8799ac2fa0bbf7560229531377ccc0f4':
one step towards fixing [2071412] work around mdp 32-bits fade limitation
Merge commit '1ed0e43dac155db048ccc9152dc9425506099957'
* commit '1ed0e43dac155db048ccc9152dc9425506099957':
fix [2187212] add support for GLESv2 dispatch based on TLS
Merge commit '69fba87ac16d1c10da81fc3213ae169c755797f4' into eclair-mr2
* commit '69fba87ac16d1c10da81fc3213ae169c755797f4':
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]
Merge commit '0b2dd95d2ead61241688a121ae1c6a5092149ef6'
* commit '0b2dd95d2ead61241688a121ae1c6a5092149ef6':
Revert "egl: temporarily also include eglTerminate->eglInitialize hack for 8k"
Merge commit '94f3a36326ddecaa09787d795451b0a229fe111c'
* commit '94f3a36326ddecaa09787d795451b0a229fe111c':
Remove STOPSHIP BT logging.
BT API security audit: fix a couple of permission mistakes.
Fix issue #2175693: Add vmallocinfo to dumpstate
add a way to easily catch and log GL errors (compile time flag)
GPS: Fix problem with SUPL when SUPL APN is already active.
Import revised translations. DO NOT MERGE
Fix issue 2174002: After rejecting Call when device ringtone is mute and playing music, audio is not transfered to BT device.
Import revised translations. DO NOT MERGE
Merge commit '98b3def2983e78409002cf406574bbc8eeef8bfd' into eclair-mr2
* commit '98b3def2983e78409002cf406574bbc8eeef8bfd':
Revert "egl: temporarily also include eglTerminate->eglInitialize hack for 8k"
Merge commit '7d638292969687ed4557d36e741e1275d2052fb0'
* commit '7d638292969687ed4557d36e741e1275d2052fb0':
Change way we choose EGL surfaces to be compatible with the native
Merge commit '846322a9ae5ef8155cca0059d3f64d718516ca13' into eclair-mr2
* commit '846322a9ae5ef8155cca0059d3f64d718516ca13':
add a way to easily catch and log GL errors (compile time flag)
Merge commit '9d6a685ba939f413a8d3e1e97627593aa1cdf6cb' into eclair-mr2
* commit '9d6a685ba939f413a8d3e1e97627593aa1cdf6cb':
fix [2168528] enable glTexImage2D code path in SF for software-only buffers
fix [2168531] have software-only gralloc buffer side-step the HAL
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.
executables have calls to some shared libraries without explicitly linking
them. Currently it works as linker links these libraries via dependencies of
other libraries. This is fragile and not the right thing to do.
Merge commit '4ac45597fb70ca4f268cb1920fcb2de61aff4a3d' into eclair-mr2
* commit '4ac45597fb70ca4f268cb1920fcb2de61aff4a3d':
a simple test app for gralloc
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.
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.
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
* 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."
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.
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).
* 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.
Merge commit '46e28db8818332e3cda4cc410cc89a1ed7ce4db6'
* commit '46e28db8818332e3cda4cc410cc89a1ed7ce4db6':
fix for [1969185] valgrind errors in new gl stuff