Commit Graph

88 Commits

Author SHA1 Message Date
Season Li
000d88f026 Implement a number of KHR EGL extensions
Add following KHR EGL extensions:

EGL_KHR_gl_texture_3D_image
EGL_KHR_config_attribs
EGL_KHR_surfaceless_context
EGL_KHR_stream
EGL_KHR_stream_fifo
EGL_KHR_stream_producer_eglsurface
EGL_KHR_stream_consumer_gltexture
EGL_KHR_stream_cross_process_fd

Change-Id: Ie7a35b5e3761e343cb71cf446cba77f67f604bdf
2015-07-01 16:52:44 -07:00
Amith Dsouza
4f21a4cc22 Revert "Revert "Modify EGL to disconnect the window when the surface gets destroyed.""
This reverts commit 6e1a2fea67.

Driver level issues fixed by an updated graphics driver.

Bug: 21266976
Change-Id: I93339fb6c6bab988f3550adb49ef8e70cda6473e
2015-07-01 10:22:22 -07:00
Michael Lentine
6e1a2fea67 Revert "Modify EGL to disconnect the window when the surface gets destroyed."
This reverts commit 00699fa641.
2015-05-28 16:48:08 -07:00
Michael Lentine
51c8c502f6 Merge "Modify EGL to disconnect the window when the surface gets destroyed." into mnc-dev 2015-05-14 16:39:28 +00:00
Michael Lentine
00699fa641 Modify EGL to disconnect the window when the surface gets destroyed.
Bug: 14445579

Change-Id: I1d263ff6cffcb6e448761fca7ca4b06466ad65aa
2015-05-13 15:41:41 -07:00
Jesse Hall
408e59f63a libEGL: whitelist the EGL_KHR_create_context_no_error extension
Allow EGL implementations to expose the
EGL_KHR_create_context_no_error extension if they wish.

https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_create_context_no_error.txt

Change-Id: I3290ccc2a69a1fa0b00ec3f1aa4f876906c64bfb
2015-05-12 08:42:05 -07:00
Dan Stoza
a894d082cf libEGL: Add wrappers for partial update functions
This adds EGL wrapper functions for the following EGL extensions:
    EGL_EXT_buffer_age
    EGL_KHR_partial_update
    EGL_KHR_swap_buffers_with_damage

Change-Id: I407acda1e0310f7f01a5efe9c915721a941138a4
2015-04-15 13:02:27 -07:00
Eino-Ville Talvala
82c6bcc970 DO NOT MERGE Add dataSpace to buffer queues; remove old format enums.
- Wire up new dataSpace parameter through buffer queue stack
- Update tests to include the parameter
- Switch eglApi to using dataSpace to indicate sRGB gamma/linear
  difference
- Remove RAW_SENSOR in favor of RAW16
- Remove use of sRGB format enums
- Add default dataspace to buffer queue core
- Add query for default dataspace

Cherry pick of I070bd2e7c56506055c419004c29e2e3feac725df

Change-Id: I461952389c18051176c6b75e664f20ad369f5760
2015-03-19 13:56:00 -07:00
Alistair Strachan
733a807547 egl: Remove old tuna BGRA vs RGBA workaround.
Some time before kitkat, a workaround was put in place to keep tuna
working with obsolete PowerVR GPU drivers. The tuna product was dropped
in AOSP for kitkat, but the workaround remained.

There are still a number of devices shipping with OMAP4 processors, and
this workaround continues to be applied on those products even when it
is not required. The effect is that virtual display CTS will fail on
those devices.
2015-02-12 12:33:25 -08:00
Michael Lentine
45e2fc2226 Revert "Modify EGL to disconnect the window when the surface gets destroyed."
This reverts commit 843cbb241d.
2014-08-08 10:30:44 -07:00
Michael Lentine
843cbb241d Modify EGL to disconnect the window when the surface gets destroyed.
Bug: 14445579

Change-Id: I1d263ff6cffcb6e448761fca7ca4b06466ad65aa
2014-07-29 18:59:56 -07:00
Jesse Hall
1034cfc778 am 43b3e600: am 3f0d5669: Merge "Expose core EGL entry points to eglGetProcAddress"
* commit '43b3e600c1a477697408b1cac4cbd40b0ad97d56':
  Expose core EGL entry points to eglGetProcAddress
2014-04-21 19:03:03 +00:00
Michael Chock
c0ec5e2333 Expose core EGL entry points to eglGetProcAddress
Required behavior for EGL_KHR_get_all_proc_addresses.

Change-Id: I1e6209ef3cb9f2fa6f22808b077c35139d4cb814
2014-03-27 17:28:40 -06:00
Dan Stoza
4864e85430 Make libEGL build cleanly under 64-bit
Change-Id: I255dfb70b166b7469d59352b1acfc7aececa07de
2014-01-27 18:16:50 -08:00
Dan Stoza
c3289c41e7 Make libEGL build cleanly under 64-bit
Change-Id: I255dfb70b166b7469d59352b1acfc7aececa07de
2014-01-17 15:32:27 -08:00
Andy McFadden
d566ce3a26 Improve error message
The previous message indicated that the fault was due to an already-
connected window, which was misleading at times.

Bug 12439318

Change-Id: I1e0a042673dd245d1b0d237af963c52946803eb6
2014-01-07 15:54:17 -08:00
Jamie Gennis
dbe9245e2e GLConsumer: start using EGL_ANDROID_image_crop
This change makes GLConsumer use the EGL_ANDROID_image_crop extension when
available on a device.  The crop rectangle is passed to the EGL driver when
creating EGLImages, allowing the crop to be performed by the driver rather than
using the texture transform matrix.

Bug: 10897141
Change-Id: I63e9a5d5c85067376abc420e3639154468346311
2013-10-02 17:34:35 +00:00
Jesse Hall
a2ba428a22 Disable the egl_khr_gl_colorspace extension
Bug: 10777398
Change-Id: Ib50ea8b9d5d960537701b85929d6312304993a0f
2013-09-16 11:21:48 -07:00
Mathias Agopian
63108c34ec fix a possible null dereference when eglMakeCurrent() fails
Bug: 10648797
Change-Id: Iee0be47f2646feb25de4ea199bbb9b707452916e
2013-09-06 13:36:49 -07:00
Mathias Agopian
f4486c6ea4 try to keep omap4 alive
Bug: 10527646
Change-Id: Iec572a910e932115cf4f2e1215142b10cd91bd6f
2013-08-28 15:22:29 -07:00
Mathias Agopian
0f288fcc9c only use format compatible with CPU consumers
EGL now picks the buffer format out of a small set
of formats compatible with CPU consumers instead of
using the EGL_NATIVE_VISUAL_ID.

Bug: 10194508
Change-Id: If423cd29601b7a3ace8670f4c73004132cfc4b31
2013-08-21 16:36:34 -07:00
Jesse Hall
bc2a90b024 Replace sRGB_888 with sRGB_X_8888
Bug: 10357459
Change-Id: I3a1d92cce2c9d3e930408129fb20887276fffddc
2013-08-16 07:50:11 -07:00
Jesse Hall
c2e41222bf Add support for EGL_KHR_gl_colorspace
Change-Id: I684d0b8556cd6c84ee4b4d67e1bb95c3b96fccfb
2013-08-13 12:10:51 -07:00
Jesse Hall
ea4fdd4beb Don't swallow eglCreateContext errors
If the implementation eglCreateContext failed, we called
eglGetError(), so we could check that it set the EGL error properly.
But since we'd already called this, when the app called eglGetError()
it would get EGL_SUCCESS!

Bug: 10181333
Change-Id: Ic45d3a8fcb8c4421e04844c6d2f52761790b5948
2013-08-12 16:43:34 -07:00
Jesse Hall
21558daf69 Add EGL_KHR_get_all_proc_addresses to extension string
We've had the extended behavior since Android 4.3, but the extension
hadn't been ratified by Khronos yet so we couldn't add it to the
extension string.

Bug: 9681677
Change-Id: I78842316a3ab7a3f66a0ac1a4742d837de664c4c
2013-08-06 15:33:46 -07:00
Andy McFadden
14fab7dd79 Drop frames based on presentation timestamp
If there are two or more buffers pending that are ready for
immediate presentation, drop all but the last one.

Any code that didn't explicitly specify timestamps for buffers
was using the default value (auto-generated "now").  As a result,
surfaceflinger would drop frames whenever more than one buffer
was queued.  We now use zero as the auto-generated timestamp,
and we don't set the timestamp in eglBeginFrame().

Change-Id: I187f42d33de227cd3411ff0dcd3b9ce1961457eb
2013-08-01 15:58:08 -07:00
Jesse Hall
ba3ed90b09 am 082fc1ca: am ae961022: Merge "EGL: Fix error for eglCreateWindowSurface"
* commit '082fc1cae6a0c283de3ad0d848e0757de3154d0b':
  EGL: Fix error for eglCreateWindowSurface
2013-07-17 14:13:56 -07:00
Jesse Hall
082fc1cae6 am ae961022: Merge "EGL: Fix error for eglCreateWindowSurface"
* commit 'ae9610220b5f509687b840532f95f3638ee0146b':
  EGL: Fix error for eglCreateWindowSurface
2013-07-17 14:10:00 -07:00
Jonathan Hamilton
77a9b4a6bd EGL: Fix error for eglCreateWindowSurface
The EGL 1.4 spec section 3.5.1 states that EGL_BAD_ALLOC should be set
if the supplied window already has an associated EGLSurface, not
EGL_BAD_NATIVE_WINDOW as is currently set.

Change-Id: If1598617f4e31904f2045560ae1cdf49d8a697dc
2013-07-17 09:52:41 -07:00
Jesse Hall
94cdba97ce resolved conflicts for merge of 5477d0e4 to master
Change-Id: I7ca75a44018a68bf3a7ac1de17a3ef568a48d2ac
2013-07-11 09:40:54 -07:00
Jesse Hall
5477d0e4e8 am c07b5206: Find non-extension GLES wrappers in eglGetProcAddress
* commit 'c07b52060acd627c8510c1a9151e0753fce76330':
  Find non-extension GLES wrappers in eglGetProcAddress
2013-07-09 10:54:20 -07:00
Jesse Hall
c07b52060a Find non-extension GLES wrappers in eglGetProcAddress
This allows apps to find OpenGL ES 3.0 functions using
eglGetProcAddress() instead of dlopen/dlsym.

Bug: 9681677
Change-Id: I7ce6e1636bc47d6b0bf20a4e46bd67235714d129
2013-07-04 12:08:16 -07:00
Mathias Agopian
e0ea89ceef improve GLES jumptables
in the common case this saves one instructions per jump
(which will help with the i-cache).

this change also gets rid of the "use slow tls" option,
which was useless. So at least now architectures that don't have
assembly bindings will perform much better.

Change-Id: I31be6c06ad2136b50ef3a1ac14682d7812ad40d2
2013-07-01 15:52:47 -07:00
Jean-Baptiste Queru
da22e6bf36 am db8c267e: am 3c0425cd: am 0ecf0b8d: Merge "Additional parameter validation for EGL functions"
* commit 'db8c267ec26997771eb718c29d3dacd4e738051b':
  Additional parameter validation for EGL functions
2013-06-25 17:02:09 -07:00
Jean-Baptiste Queru
3c0425cd95 am 0ecf0b8d: Merge "Additional parameter validation for EGL functions"
* commit '0ecf0b8db74682222bf095a235e28edefff871a5':
  Additional parameter validation for EGL functions
2013-06-25 15:35:05 -07:00
Jean-Baptiste Queru
0ecf0b8db7 Merge "Additional parameter validation for EGL functions" 2013-06-25 22:31:13 +00:00
Mathias Agopian
4e620ddce3 free EGL resources associated to a thread when it terminates
destroyed but current-to-a-thread resources are only destroyed
when they're made not-current; however, we were not destroying
those when the thread itself terminated, causing these resources
to be leaked forever.

we now install a tls-key destructor that takes care of this
by calling eglReleaseThread upon thread termination.

Bug: 9209776
Change-Id: I88298a34e3a27488eb81eab76717715569c7d57c
2013-05-30 16:07:36 -07:00
Jamie Gennis
f6d1c3930e EGL: expose the EGL_KHR_create_context extension
Bug: 8616866
Change-Id: Ic60f9f21397a1760c552b6f141d5177d1cbaf1f8
2013-04-25 18:49:15 -07:00
Mathias Agopian
ed6d08b70d fix "traceGpuCompletion" debug feature
eglCreateSyncKHR requires a call to glFlush which we were not doing.
fixed by moving the code above eglSwapBuffers(), which both
fixes the problem and gives us a slightly better idea of when
the GPU is done drawing.

Change-Id: Ic826ef1fe25a6247742c3d49d0cb69f4031e3593
2013-04-16 16:41:47 -07:00
Mathias Agopian
39c24a20bb fix local include paths
Change-Id: Icb921fa796ec08612dbb2feb7e7161bcb0cf4a99
2013-04-04 23:30:18 -07:00
Mathias Agopian
ca08833d5e don't use compile-time configuration of libgui as much as possible
We now detect at runtime which sync features to use, which
allows us to remove a lot of the compile-time configuration
options. There  is still one option though, to disable
KHR_fence_sync on some devices (which are more efficient
without it).

- added a backdoor to get the vendor's EGL strings

the new logic is:
- use always ANDROID_native_fence_sync if available
- fallback to KHR_fence_sync if available and not disabled
  by the compile-time option
- use KHR_wait_sync if available and either of the above is
  enabled

Change-Id: I9c4b49d9ff1151faf902cc93bd53ea5f205aaabf
2013-03-29 15:33:47 -07:00
Mathias Agopian
2bb716871c replace eglWaitSyncANDROID by eglWaitSyncKHR
Change-Id: I22f1b3588011c88389e249f738f1e6915cc97e72
2013-03-28 14:31:09 -07:00
Mathias Agopian
e9b3dfb7d5 cleanup EGL extensions strings and entry-points
- move all the code related to EGL extensions in one place

- add missing extension strings:
   EGL_KHR_lock_surface
   EGL_KHR_reusable_sync

- add public extensions strings and entry-points
   EGL_ANDROID_wait_sync
   EGL_ANDROID_presentation_time

- add missing entry-points for EGL_KHR_reusable_sync

Change-Id: Ifd98966b549e8efd8ef5385eba0efde8c4cbc77b
2013-03-28 14:17:54 -07:00
Andy McFadden
7284145d56 Add eglPresentationTimeANDROID
Added EGL extension to set a timestamp on a surface.

Also, fix JNI encoding of "long" in glgen.

Bug 8191230

Change-Id: I38b7334bade3f8ff02bffe600bb74469ef22c164
2013-03-05 10:10:59 -08:00
Jesse Hall
4774338bd0 Add ES3 support to libGLESv2 and tracing tools
Since ES3 is backwards compatible with ES2, a new wrapper isn't
necessary, and the Khronos implementation guidelines recommend
supporting both versions with the same library.

Change-Id: If9bb02be60ce01cc5fe25d1f40c4e7f37244ebf6
2013-02-12 16:36:53 -08:00
Jesse Hall
519191670e am 873ab60e: am 75b83e4d: Merge "Gfx-3d: fix GetProcAddress in egl extention"
# By luliuhui
# Via Android Git Automerger (1) and others
* commit '873ab60e94811488caea1906eb98133329a3e28f':
  Gfx-3d: fix GetProcAddress in egl extention
2013-02-01 14:26:21 -08:00
luliuhui
69d100762c Gfx-3d: fix GetProcAddress in egl extention
This patch can fix issue when Proc address return NULL.
Glbench10, egl-ext and conformance test need this patch to run pass.

Change-Id: I275c7cb6f77cb334c3ee7fa23cd696bba1c5a458
Author: Liuhui Lu <liuhui.lu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 52622
2013-01-22 15:14:34 +08:00
Siva Velusamy
a73a97728b gltrace: Add support for tracing running applications.
Currently, to activate OpenGL tracing, an application has to be
start with --opengl-trace option (or have a debug prop set).

This CL adds support for tracing an application which may already
be running. This is implemented as follows:
    - DDMS initiates a JDWP message to the VM indicating that
      opengl traces be enabled.
    - When that message is received, a flag is set that indicates
      that tracing should be enabled.
    - The trace flag is checked during every eglSwap() operation,
      and if it finds that tracing should be active and it isn't,
      then it starts the tracing component.

Change-Id: I3347fe89fc06c7404d7aa9360f4b21e5bf36ebcb
2012-12-20 10:38:47 -08:00
Romain Guy
23bcd8d298 am 825a9a2d: Merge "Update comments to reflect what the code actually does" into jb-mr1-dev
* commit '825a9a2dcd1b3e139dd0677ff46f966fb23f963c':
  Update comments to reflect what the code actually does
2012-10-16 09:47:38 -07:00
Romain Guy
49fe8addbf am b96fe085: Merge "Add new debug option to force 4x MSAA in OpenGL ES 2.0 apps" into jb-mr1-dev
* commit 'b96fe08540dcf7e90be56919ea9863f687da779c':
  Add new debug option to force 4x MSAA in OpenGL ES 2.0 apps
2012-10-15 20:19:18 -07:00