History log of /frameworks/native/opengl/libs/EGL/egl_display.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b7f9a2400aaa2e0d29ffefd91576e90036d4cf83 09-Mar-2017 Mathias Agopian <mathias@google.com> convert BlobCache to STL

This finally gets rid of the utils/BlobCache.h
dependency

Test: compiled & run
Bug: vndk-stable
Change-Id: Idfc6ace472479fae99694f56edb973800b2bef20
/frameworks/native/opengl/libs/EGL/egl_display.cpp
65421435a67b881dad79e7008e9dee7fb425f180 08-Mar-2017 Mathias Agopian <mathias@google.com> Remove dependency to most of libutils

Most of libutils is replaced by using the STL,
this is fine in this case because none of it
leaks out of EGL’s internals.

Test: compiled & run
Bug: vndk-stable

Change-Id: I42ded4043ddc98ed7eaa975fbbb2e754cd3219af
/frameworks/native/opengl/libs/EGL/egl_display.cpp
311b479d7f50bc9e487cf9b4859843d0f4778382 01-Mar-2017 Mathias Agopian <mathias@google.com> clean-up EGL includes

Test: compile and run
Bug: cleanup

Change-Id: Icb6c70c80d455446d7163a20d51c41d9b6e0b578
/frameworks/native/opengl/libs/EGL/egl_display.cpp
1508ae60cc02d0ed84f216f3ddd43a932c2ede42 20-Jan-2017 Jesse Hall <jessehall@google.com> libEGL: Add initialization tracing

The first call to eglGetDisplay() loads drivers and initializes
dispatch tables. This currently takes significant time (85-100 ms),
and can must be done before the first frame of an app can be shown.

This change adds systrace markers for the major parts of this process,
as a precursor to optimizing them.

Bug: 34404021
Test: manual systrace of calculator app startup on bullhead
Change-Id: If1ecb5a81f9d33daf72c6f3e5b403972f8529b2d
/frameworks/native/opengl/libs/EGL/egl_display.cpp
e9cbb659a7c45481444e3d3cbb171fa3251d0cb8 11-Oct-2016 Dan Willemsen <dwillemsen@google.com> Remove EGL Hibernation

Test: Booted aosp_flounder-eng
Change-Id: I0068bbd0a274bd0db237c30d958ea75b6d8aaf11
/frameworks/native/opengl/libs/EGL/egl_display.cpp
d6e9946cdd57a92c9bc86ba97a4ca42078153008 28-Sep-2016 Jesse Hall <jessehall@google.com> EGL: check that display is still valid

Bug: 31522731
Change-Id: I84d82e55aba5b58dfdbcac9e208c36767fbedfd1
/frameworks/native/opengl/libs/EGL/egl_display.cpp
5882a267d0bee5e9505fe4e714f50378f5ef70d0 26-Apr-2016 Pablo Ceballos <pceballos@google.com> Merge "Revert "EGL: Ensure surfaces are disconnected when destroyed"" into nyc-dev
1a5c4deed3e33efd7f286a570cf88fbd2d861010 25-Apr-2016 Pablo Ceballos <pceballos@google.com> Revert "EGL: Ensure surfaces are disconnected when destroyed"

This reverts commit 541de498ec7356c5e4af92500cf2fb8fc707fd50.

Bug 28295465

Change-Id: If81ed4a5a73a9612579b58291c37c7830ea1f7db
/frameworks/native/opengl/libs/EGL/egl_display.cpp
7804aa25c1288002269d4bd29f535cad8b55f365 19-Apr-2016 Kalle Raita <kraita@google.com> Look EGL extension matches beyond partial match

Bug: 28198559
Change-Id: I8d483d04e855b62432e1da786629890d09ae9d00
/frameworks/native/opengl/libs/EGL/egl_display.cpp
541de498ec7356c5e4af92500cf2fb8fc707fd50 10-Apr-2016 Pablo Ceballos <pceballos@google.com> EGL: Ensure surfaces are disconnected when destroyed

When eglDestroySurface is called, remove all references to the surface
in all contexts. This ensures that the surface is disconnected
immediately.

Bug 27455025

Change-Id: I0edaf039d320dc40122657db32abdc418665841a
/frameworks/native/opengl/libs/EGL/egl_display.cpp
1b5a9cbafc466f17ec8bb46710c1093a4b7adb21 03-Feb-2016 Dan Albert <danalbert@google.com> Merge "Clean up warnings in EGL." am: c312141adc am: d380a770fd
am: f4acff7c49

* commit 'f4acff7c490c6bf8a88661a15ca4bf2536ca4854':
Clean up warnings in EGL.
eacd31f41ef1851bb420c65552b1aed6b74abe29 03-Feb-2016 Dan Albert <danalbert@google.com> Clean up warnings in EGL.

Bug: http://b/26936282
Change-Id: I059628332d638f080a5236eed62cf0afa1d4d6ba
/frameworks/native/opengl/libs/EGL/egl_display.cpp
ecc0c9aa412aaf463d91bedcf53f881536a6d560 30-Oct-2015 Nicolas Capens <capn@google.com> Fix parsing the EGL extension string.

The EGL extension string does not necessarily have a space before the
terminating null. The previous code would skip the last extension name
when there's no extra space. The new code also works for empty strings.

Change-Id: Ib272cf05a7ebcc0de417f91966489ed4db33c283
/frameworks/native/opengl/libs/EGL/egl_display.cpp
9f8d4e01a02401beeaa3185acd87b140cf881d12 21-Oct-2015 Pablo Ceballos <pceballos@google.com> Revert "Revert "Remove GLTrace support""

This reverts commit e6288e2660e9c310986bff7148fcfb745c13af9a.

Change-Id: Id50a7d471536150bb9e0393e159d66475aa4f473
/frameworks/native/opengl/libs/EGL/egl_display.cpp
e6288e2660e9c310986bff7148fcfb745c13af9a 19-Oct-2015 Pablo Ceballos <pceballos@google.com> Revert "Remove GLTrace support"

This reverts commit 5bf6f3b5bf06e04a742bde8d40409d3c9e434c05.

Change-Id: I25a2d9b4a4b219cb76b405db1f68997519361cd6
/frameworks/native/opengl/libs/EGL/egl_display.cpp
5bf6f3b5bf06e04a742bde8d40409d3c9e434c05 05-Oct-2015 Pablo Ceballos <pceballos@google.com> Remove GLTrace support

GLTrace is defunct, it does not support newer GL features, breaks
security requirements, and has no supported tooling now that Eclipse
is at end of life.

Bug 22329852

Change-Id: I69e26da04cd78b5a196487c41bce456fd3c725c9
/frameworks/native/opengl/libs/EGL/egl_display.cpp
54466bc4412acf33a59af59d9eadde54c22b2ebe 27-Jan-2015 Michael Lentine <mlentine@google.com> Remove lock around ref count check in terminate.

Replace the global lock in terminate for the ref count check with atomics and a
local lock.

Bug: 19072064

Change-Id: I0cfd6564e227a75b8387a8788b16381d5bc2cc88
/frameworks/native/opengl/libs/EGL/egl_display.cpp
92dc3fc52cf097bd105460cf377779bdcf146d62 12-Mar-2014 Mark Salyzyn <salyzyn@google.com> native frameworks: 64-bit compile issues

- Fix format (print/scanf)
- Suppress unused argument warning messages (bonus)

Change-Id: I05c7724d2aba6da1e82a86000e11f3a8fef4e728
/frameworks/native/opengl/libs/EGL/egl_display.cpp
672ddf2b58b6c6ddef4fc4f296e5fa53910d8e3b 29-Aug-2013 Mathias Agopian <mathias@google.com> remove adreno 130 workaround support

Change-Id: I8ea5ee65d405114b30cfaa44e1a0c971d1ef2a61
/frameworks/native/opengl/libs/EGL/egl_display.cpp
c2e41222bf02a6579763974f82d65875cfa43481 08-Aug-2013 Jesse Hall <jessehall@google.com> Add support for EGL_KHR_gl_colorspace

Change-Id: I684d0b8556cd6c84ee4b4d67e1bb95c3b96fccfb
/frameworks/native/opengl/libs/EGL/egl_display.cpp
21558daf691dbcdff4a41e659fd013273db4d0b7 07-Aug-2013 Jesse Hall <jessehall@google.com> 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
/frameworks/native/opengl/libs/EGL/egl_display.cpp
39c24a20bbc697630d2b92c251b70c04d6f9d00c 05-Apr-2013 Mathias Agopian <mathias@google.com> fix local include paths

Change-Id: Icb921fa796ec08612dbb2feb7e7161bcb0cf4a99
/frameworks/native/opengl/libs/EGL/egl_display.cpp
e9b3dfb7d5cc233747407381a51a081c335dc076 27-Mar-2013 Mathias Agopian <mathias@google.com> 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
/frameworks/native/opengl/libs/EGL/egl_display.cpp
3ff48e5e69955b37292446c0f2ac98e8238bdaca 24-Sep-2012 Jamie Gennis <jgennis@google.com> EGL: add the EGL_ANDROID_framebuffer_target enum

Change-Id: Id8b1b114e2a7a88956b857c63a0429e9b33fdb5c
/frameworks/native/opengl/libs/EGL/egl_display.cpp
09b11432b64d368dee7be69480ab54256058376a 21-Sep-2012 Jamie Gennis <jgennis@google.com> EGL: expose the EXT_create_context_robustness ext

Change-Id: I1db43e96aa5e9e91a6176a4a3e5aa9d1f3ee4a7e
/frameworks/native/opengl/libs/EGL/egl_display.cpp
a08cf6e3a4ee045608bc8991a779dedb4f281a3f 16-Sep-2012 Jamie Gennis <jgennis@google.com> EGL: fix an extension string bug

This change fixes a bug where initializing EGL multiple times (eglTerminate
followed by eglInitialize) would cause extensions to show up in the extension
string multiple times.

Change-Id: I707a3da62ed30ef13835087167f84a08bc6addd7
/frameworks/native/opengl/libs/EGL/egl_display.cpp
331841b96b92646c93c87627c03f77b892f711cd 06-Sep-2012 Jamie Gennis <jgennis@google.com> EGL: add the native_fence_sync extension

This change adds support for the EGL_ANDROID_native_fence_sync extension to the
Android EGL layer. It also fixes a couple minor issues with the extension spec.

Change-Id: Ic8829d21f37b701f33aa9c72c3d25e88e03fa3cd
/frameworks/native/opengl/libs/EGL/egl_display.cpp
fe98127eaaf82686ba750001e2b771abece44e97 14-Jun-2012 Mathias Agopian <mathias@google.com> don't error out when eglTerminate()ing an already terminated display

so says the EGL specification, section 3.2

Change-Id: Ice60530f8f6e47b4e14e06d2ab8eba799a7688a6
/frameworks/native/opengl/libs/EGL/egl_display.cpp
cc2b1560e87369676a2d13f17bd1ff4021a91819 21-May-2012 Mathias Agopian <mathias@google.com> fix EGL_CLIENT_STRING

it should read OpenGL_ES (with an underscore)

Bug: 6529643

Change-Id: I7caf07793bffe5a8dcceaff496a222077486fc87
/frameworks/native/opengl/libs/EGL/egl_display.cpp
201f3b2da572eb27b9d4b3131e6d8c3c92a13de8 04-May-2012 Jesse Hall <jessehall@google.com> Disable EGL hibernation due to jank

Hibernating EGL takes a long time (>100 ms) and blocks all other
rendering. During window animations, the outgoing activity begins
hibernation before the animation stops, causing visible stutter.
Hibernation is still available by setting 'BOARD_ALLOW_EGL_HIBERNATION
:= true' in the devices BoardConfig.mk

Change-Id: Iab4e00723a1adcd97481e81b2efdc821b3e9712f
/frameworks/native/opengl/libs/EGL/egl_display.cpp
a0fef1c8bb22443402fb3aeda7ce70f7d5775b0a 17-Apr-2012 Jesse Hall <jessehall@google.com> Fix deadlock when cleaning objects in eglTerminate

When eglTerminate() is called with a window surface still exists, a
deadlock would occur since egl_display_t::terminate() holds a lock
while destroying the window surface, which calls
onWindowSurfaceDestroyed() which attempts to take the same lock.

This change refactors the hibernation code and data into a separate
object with its own lock, separate from the egl_display_t lock. This
avoids the deadlock and better encapsulates the hibernation logic.

The change also fixes a bug discovered incidentally while debugging:
hibernating after calling eglTerminate() succeeds, but will cause
awakens from subsequent eglInitialize() to fail. We will no longer
hibernate a terminated display.

Change-Id: If55e5bb603d4f8953babc439ffc8d8a60af103d9
/frameworks/native/opengl/libs/EGL/egl_display.cpp
258385978c517a47626161b1e644c48bcee28de1 06-Apr-2012 Jesse Hall <jessehall@google.com> Hibernate the EGL implementation when idle

If the EGL implementation supports the EGL_IMG_hibernate_process
extension, use it to hibernate (and hopefully release memory or other
resources) when the process isn't actively using EGL or OpenGL ES. The
idleness heuristic used in this change is:

(a) Wake up when entering any EGL API call, and remain awake for the
duration of the call.
(b) Do not hibernate when any window surface exists; this means the
application is very likely in the foreground.
(c) Do not hibernate while any context is made current to a thread.
The app may be using a client API without the EGL layer knowing,
so it is not safe to hibernate.
(d) Only check these conditions and attempt to hibernate after a
window surface is destroyed or a thread's context is detached. By
not attempting to hibernate at the end of every EGL call, we avoid
some transient wakeups/hibernate cycles when the app is mostly idle,
or is starting to become active but hasn't created its window
surface yet.

On a Galaxy Nexus, hibernating frees 1567 VM pages from the process.
Both hibernating and waking can take anywhere from 30ms to over 100ms
-- measurements have been very inconsistent.

Change-Id: Ib555f5d9d069aefccca06e8173a89625b5f32d7e
/frameworks/native/opengl/libs/EGL/egl_display.cpp
b29e5e8c2682ae145e8c56d9afb061f8da7f854c 05-Apr-2012 Jesse Hall <jessehall@google.com> Increment/decrement a counter around EGL calls

This is in preparation for a change that will hibernate the underlying
EGL when idle. Instead of a bare egl_display_t*, get_display() now
returns a egl_display_ptr, which acts like a smart pointer. The
"wakecount" counter managed by the smart pointer isn't used for
anything in this change. It will be used to make sure we don't
hibernate when any thread is in an EGL call, without having to hold a
mutex for the duration of the call.

Change-Id: Iee52f3549a51162efc3800e1195d3f76bba2f2ce
/frameworks/native/opengl/libs/EGL/egl_display.cpp
28ef8d7911dbfd1bf8256fb43acba894d87fc07a 06-Apr-2012 Jamie Gennis <jgennis@google.com> EGL: add GPU frame completion tracing

This change adds a debug option to EGL to use an EGLSyncKHR each frame to
determine when the GPU finishes rendering the frame.

Change-Id: I09ce071db904b44f07ca814c586c291c8b59385a
/frameworks/native/opengl/libs/EGL/egl_display.cpp
7db993a98b9239bd4e384cc4aa128262fe3cf52c 25-Mar-2012 Mathias Agopian <mathias@google.com> debug.egl.finish can be used to force a glFinish() when eglSwapBuffers() is called

this debug property is evaludated at eglInitialize() time.

Change-Id: Ie439e4aac87f7fdc6ab2add86183d6d042f3ee8b
/frameworks/native/opengl/libs/EGL/egl_display.cpp
b13c78f8520ef5a96effdee977bbacb881236c66 09-Mar-2012 Siva Velusamy <vsiva@google.com> gltrace: Expose a function to set OpenGL trace level.

This patch adds a function setGlDebugLevel() to libEGL to enable
GL tracing. This will be used by the Java layer to add an option
to "am start" that can enable tracing for a particular application.

Change-Id: Ie1dbdd550f502df8633553595cb33ee9d9ae44e1
/frameworks/native/opengl/libs/EGL/egl_display.cpp
7773c435bc5da8217433e1b242d3a6712a17b5f7 14-Feb-2012 Mathias Agopian <mathias@google.com> EGLConfig is now not remaped to an internal EGLConfig

this is possible now that we support only a single
EGL implementation. this allows a large code simplification.

Change-Id: I7a6b9db4c5d60f4407c6061e7a68729af63d5242
/frameworks/native/opengl/libs/EGL/egl_display.cpp
ada798b7ca7cabc255aa159964b64975e7fdb2df 14-Feb-2012 Mathias Agopian <mathias@google.com> remove multiplexing of multiple EGL implementation

from now on, the system can only have one EGL
implementation. this means the software and h/w renderer
cannot be used at the same time on a device. Of course, the
h/w renderer is always prefered; in its absence we
default to the software renderer.

Change-Id: Ib579f58055dd0ce4c4a99144131efa11c16ca3d3
/frameworks/native/opengl/libs/EGL/egl_display.cpp
a4b2c041828d1074dca3b999407e7dd85568c5aa 04-Feb-2012 Mathias Agopian <mathias@google.com> fix a dead-lock in eglMakeCurrent

this was introduced in a recent change. eglMakeCurrent can
end up calling eglDestroyImageKHR via ANativewWindow::disconnect
when the consumer is in the same process.

we make sure we don't hold the lock while this is happening.

Change-Id: Id17fe4fd76eecf5f962cefb9aa32be41fc1b042d
/frameworks/native/opengl/libs/EGL/egl_display.cpp
fb87e54a9af8bc5063ca4deebe81d90126992480 31-Jan-2012 Mathias Agopian <mathias@google.com> fix a race condition in eglMakeCurrent()

it would happen when a context was made non-current, in this
case we would call the implementation's eglMakeCurrent() which
would succeed, if we're rescheduled at that point, another
eglMakeCurrent() could make that context current to another thread,
however, when we came back to the original call we would
overwrite egl_context_t internal state.

this is fixed by moving the critical section under
egl_display_t's lock.

Change-Id: I743c85696e13263d3a9570824940263df0caacdc
/frameworks/native/opengl/libs/EGL/egl_display.cpp
32397c1cd3327905173b36baa6fd1c579bc328ff 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
/frameworks/native/opengl/libs/EGL/egl_display.cpp
9d4536835248525f32f1504a3d28d5bbfa0a2910 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
/frameworks/native/opengl/libs/EGL/egl_display.cpp
f3ae82d8134e7f5a2f0432ef809569bfa418883b 17-Nov-2011 Mathias Agopian <mathias@google.com> be a bit more defensive when parsing extension strings

hopefully this will fix a crash in the emulator.

Bug: 5624674
Change-Id: I96586e29ea20efd73c4ad50870df5b7368bf3c3b
/frameworks/native/opengl/libs/EGL/egl_display.cpp
4b9511c16195a646242eff833b0af212933b6eca 14-Nov-2011 Mathias Agopian <mathias@google.com> rework a bit how we manage EGL extensions

- 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
/frameworks/native/opengl/libs/EGL/egl_display.cpp
f0480de37492597a5c5cf1e6f8346f1467e3a552 14-Nov-2011 Mathias Agopian <mathias@google.com> fix crash when validating an invalid EGL objects

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
/frameworks/native/opengl/libs/EGL/egl_display.cpp
766010858ea7696d64f1b559413670bdd8627595 06-Nov-2011 Jamie Gennis <jgennis@google.com> EGL: use an in-memory the blob cache

This change makes the makes the stub EGL_ANDROID_blob_cache callbacks
actually use a BlobCache object.

Bug: 5474671
Change-Id: I5cbaae2dea3aad2fe306c9f57029c3f215a0863a
/frameworks/native/opengl/libs/EGL/egl_display.cpp
aca51c06f38155f1435fbc6944d7fc0a9bf1e4e9 04-Nov-2011 Jamie Gennis <jgennis@google.com> EGL: Add stubs for EGL_ANDROID_blob_cache

This change adds a stub cache implementation that gets passed to the
underlying EGL implementation at initialization time.

Change-Id: I14437c5b6f91b7a34a19bb02ad802e6e54f88d2a
/frameworks/native/opengl/libs/EGL/egl_display.cpp
5b287a6ea8dfac7ab3e03ae1e98f9e2214cbae09 17-May-2011 Mathias Agopian <mathias@google.com> eglTerminate() now actually frees up all active egl objects

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
/frameworks/native/opengl/libs/EGL/egl_display.cpp
518ec112f468eb67bf681b3eec896d7bfb4ff98d 14-May-2011 Mathias Agopian <mathias@google.com> refactor EGL source code

no changes is functionality. split various objects into their own files.
make egl_display objec's lock internal.
/frameworks/native/opengl/libs/EGL/egl_display.cpp