History log of /frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b46d5b2d82b021db41a72f4c3eb9250f8a839e04 07-Jun-2018 Chia-I Wu <olv@google.com> Merge "surfaceflinger: prime shader cache for P3 conversion" into pi-dev
93e14df5b3e0a593c033715b64c8243c578ceb83 04-Jun-2018 Chia-I Wu <olv@google.com> surfaceflinger: prime shader cache for P3 conversion

Bug: 77287550
Test: no shader compilation when WCG apps start
Change-Id: I45cdefc97c5e9060269060e33d79b40304cfdbbf
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
a277ccba0781c07b73afda203fcaabd46104b49d 01-Jun-2018 Dan Stoza <stoza@google.com> SF: Add workaround to release screenshot buffer

Works around driver behavior to force the [E]GL driver to fully release
the screenshot buffer immediately after the screenshot is complete
rather than deferring until the next instance of client composition.

Bug: b/77935566
Test: Manual, inspect 'dumpsys SurfaceFlinger' after launching an app
and then returning home (which causes a screenshot for overview)

Change-Id: I4f33d89f3ff3020707a9f556a1fcfe34bc9b7adb
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
144e116f45f196396f0d59d5fc09766ab618f885 21-Dec-2017 Lloyd Pique <lpique@google.com> SF: Separate RenderEngine into interface and impl

This allows the RenderEngine to be substituted by a GMock for tests.

RE::RenderEngine is now a pure virtual interface class.
RE::impl::RenderEngine is the normal/base implementation.

Similarly, RE::Image and RE::Surface are pure virtual interfaces.
RE::impl::Image and RE::impl::Surface are the normal implementations.

Test: Builds
Bug: None
Change-Id: Ib5e658df4bb4efc1a9c0ae95feaf0c1e052cdc94
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
5b15ef66927507f01c6ec19ed39b04dfc549a111 17-Jan-2018 Jorim Jaggi <jjaggi@google.com> Enable IMG_context_priority depending on availability

The config value from the config store can still be used to
override it.

Test: Enable gpu completion tracing, observe how SF preempts other
GPU drawing
Bug: 64674361

Change-Id: Id2f6f11019c2e6cae078fb9e64e3d9d72e42533c
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
566a3b4a1d1a2a6d38257113700eea92aa44ea2b 10-Jan-2018 Peiyong Lin <lpy@google.com> [SurfaceFlinger] Replace NULL with nullptr.

Test: make
Change-Id: Ia0ecb3160cd5fddf22fb7100c1759d62e723d0b7
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
9f2db77e6e342c6bebc3010a900fd6fb98738587 01-Dec-2017 Chia-I Wu <olv@google.com> surfaceflinger: pass RenderEngine into BufferLayerConsumer

Add RenderEngine::isCurrent to replace
BufferLayerConsumer::checkAndUpdateEglStateLocked. Remove a
duplicated check in updateAndReleaseLocked. Use
RenderEngine::checkErrors.

Test: SurfaceFlinger_test
Change-Id: I6b97534a41a855d101965b498cb1afa72404227e
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
401ef83b9d9cc78a6ebe30d289a80d4eee06286b 01-Dec-2017 Chia-I Wu <olv@google.com> surfaceflinger: add image abstraction to RenderEngine

Similar to Surface, Image manages the creation and destruction of an
EGLImageKHR.

Test: builds
Change-Id: I2ca98e99013f0a4028f0ea5036f37b20fd67d956
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
767fcf7ef21a2db44ead9e685ebe48f638f3e651 01-Dec-2017 Chia-I Wu <olv@google.com> surfaceflinger: add more sync operations to RenderEngine

Add RenderEngine::finish and RenderEngine::waitFence. Rework flush
not to fall back to finish.

Test: SurfaceFlinger_test
Change-Id: I2e5738f72b4aa1186d45d23cab9055f96d90ff23
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
767d7c9fb0caff1e27f368d6256638407f872556 30-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: support EGL extensions in GLExtensions

Add EGL_VERSION and EGL_EXTENSIONS support to GLExtensions. This
also remove the unused mHaveFramebufferObject and rename
getExtension to getExtensions.

Test: boots and dumpsys
Change-Id: I759508f05d3255fc97eba14d298fa92938bafa75
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
b027f805c9a18893556353f44008683e20ebe049 29-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: run clang-format on RenderEngine

Run clang-format on all files. In Program constructor, use mat4()
instead of manually construct a 4x4 identity matrix.

Test: builds
Change-Id: I84e5eec06d103383c715b1f03c521bbcca5bd92c
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
f846a35a68f14b0eca45e3cd7c6d3ca88a57fe52 10-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: use RE::Surface in DisplayDevice

This allows us to eliminate all direct use of EGL from
DisplayDevice.

Test: SurfaceFlinger_test
Change-Id: Ic7b006dfd8e3f067625896c3020b55914b9fc65b
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
b523df0c48cefe4b29b5ecbdf1e80c633d3ad36e 09-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: remove unused EGL data members

Remove SurfaceFlinger::mEGLDisplay and SurfaceFlinger::mEGLContext.
With this change, SurfaceFlinger does not use EGL directly anymore.
This also allows us to get rid of RenderEngine::getEGLContext.

Test: SurfaceFlinger_test
Change-Id: I7799d935367650508b741e62a53ce325fdc94234
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
eadbaa68dbf0f674b2a5260fc813b408cb42fee3 09-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: add RenderEngine::BindNativeBufferAsFramebuffer

It replaces BindImageAsFramebuffer and makes EGLImage an
implementation detail of RenderEngine.

Test: SurfaceFlinger_test
Change-Id: I01be2d95fb9af9cbefa1a72131afb0975f1e0296
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
b0c041b61ef38eb1912b8bb4ff372cf836aa8a30 09-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: return fence fd from RenderEngine::flush

The caller does not need to work with EGLSync after this chnage.

Test: SurfaceFlinger_test
Change-Id: I1cf7d11d3023d09be8a73001493c39b4309e7542
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
7f40290b223afe1fea1d173da43e8e3d6ae49590 09-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: add RenderEngine::setCurrentSurface

setCurrentSurface is a wrapper to eglMakeCurrent and it uses the EGL
context implied by the RenderEngine. This also allows us to
simplify DisplayDevice::makeCurrent.

Test: SurfaceFlinger_test
Change-Id: Idab581f0ef79af7263159a558d8fad493a198ce7
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
8601f886d506886d72767979c12f393cbcd2a2cd 10-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: move EGL version/extensions dump into RE

Test: SurfaceFlinger_test
Change-Id: I0c6e258e5ab2e55c7092d1642627c573038b99ac
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
b01450b71d7d335f72904ca5ee8d3e1e1fc08bcc 10-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: move EGL termination into RE

This defers EGL termination a bit but that should be fine. More
importantly, SurfaceFlinger is never destructed.

Test: SurfaceFlinger_test
Change-Id: I200e2169eb1cc419a587a7626b438d3d5ddedc70
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
d4d9c6fc5616ace39b2c3f23e4590ea8373d3fcf 10-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: move EGL initialization into RE

This defers EGL initialization a bit, from before EventThread
initialization to after.

Test: SurfaceFlinger_test
Change-Id: Icbe9b78d1db189ce5e6aeedf902fe7b62ea2004e
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
2b6386e16ebdc1bdaee81ce37d0e5cbbdfffddb3 09-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: add RenderEngine::mEGLDisplay

It does not make much sense to have EGLConfig/EGLContext but not
EGLDisplay in RenderEngine. We also need this as we move forward on
making EGL an implementation detail of RenderEngine.

Test: SurfaceFlinger_test
Change-Id: I9e2c9b9817e2c2a9b2555ea575be6dcd91927b79
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
b2c762464cb379d07483b25c5f6c1b8222b8c5f5 10-Nov-2017 Chia-I Wu <olv@google.com> surfaceflinger: manage RenderEngine with unique_ptr

Test: SurfaceFlinger_test
Change-Id: I603a399b88963acdcd154f721fe64bf59d9032fd
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
00b15b8f223976d016e16536e4720771ef634695 10-Aug-2017 Jiyong Park <jiyong@google.com> Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK

They are used by libRSDriver and libRS_internal which are VNDK-SP
libraries. Therefore, the EGL/GLES libs must be LLNDK or VNDK-SP. We
choose to make them as LLNDK since they already have stable ABIs (as
they are NDK).

In addition, two more functions of libEGL are exposed to vendors

eglQueryStringImplementationANDROID and eglDupNativeFenceFDANDROID are
non-NDK symbols but are being used by libgui, which is a library marked
with vendor_available:true. In order to provide the symbols to the
library, they are added to the map.txt file and tagged as "# vndk" so
that they are exposed only when built for vendor libs (and hidden when
built for NDK).

Furthermore, eglQueryStringImplementationANDROID is changed to C-symbol
in order to be mentioned in the map.txt file, where C++ mangled symbol
name can't be used.

Bug: 64425518
Test: BOARD_VNDK_VERSION=current m -j libRSDriver.vendor
Test: BOARD_VNDK_VERSION=current m -j libRS_internal.vendor
Change-Id: I4d5bcd5f72fb05a7908887f5192de70fd1d8c8f1
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
d7f49c5e93a554c2f0e85e279a765f92fb1e66f1 27-Jul-2017 Steven Thomas <steventhomas@google.com> Use a separate hwcomposer hidl instance for vr flinger

Improve robustness of vr flinger <--> surface flinger switching by
having vr flinger use a separate hardware composer hidl instance instead
of sharing the instance with surface flinger. Sharing the hardware
composer instance has proven to be error prone, with situations where
both the vr flinger thread and surface flinger main thread would write
to the composer at the same time, causing hard to diagnose
crashes (b/62925812).

Instead of sharing the hardware composer instance, when switching to vr
flinger we now delete the existing instance, create a new instance
directed to the vr hardware composer shim, and vr flinger creates its
own composer instance connected to the real hardware composer. By
creating a separate composer instance for vr flinger, crashes like the
ones found in b/62925812 are no longer impossible.

Most of the changes in this commit are related to enabling surface
flinger to delete HWComposer instances cleanly. In particular:

- Previously the hardware composer callbacks (which come in on a
hwbinder thread) would land in HWC2::Device and bubble up to the
SurfaceFlinger object. But with the new behavior the HWC2::Device
might be dead or in the process of being destroyed, so instead we have
SurfaceFlinger receive the composer callbacks directly, and forward
them to HWComposer and HWC2::Device. We include a composer id field in
the callbacks so surface flinger can ignore stale callbacks from dead
composer instances.

- Object ownership for HWC2::Display and HWC2::Layer was shared by
passing around shared_ptrs to these objects. This was problematic
because they referenced and used the HWC2::Device, which can now be
destroyed when switching to vr flinger. Simplify the ownership model
by having HWC2::Device own (via unique_ptr<>) instances of
HWC2::Display, which owns (again via unique_ptr<>) instances of
HWC2::Layer. In cases where we previously passed std::shared_ptr<> to
HWC2::Display or HWC2::Layer, instead pass non-owning HWC2::Display*
and HWC2::Layer* pointers. This ensures clean composer instance
teardown with no stale references to the deleted HWC2::Device.

- When the hardware composer instance is destroyed and the HWC2::Layers
are removed, notify the android::Layer via a callback, so it can
remove the HWC2::Layer from its internal table of hardware composer
layers. This removes the burden to explicitly clear out all hardware
composer layers when switching to vr flinger, which has been a source
of bugs.

- We were missing an mStateLock lock in
SurfaceFlinger::setVsyncEnabled(), which was necessary to ensure we
were setting vsync on the correct hardware composer instance. Once
that lock was added, surface flinger would sometimes deadlock when
transitioning to vr flinger, because the surface flinger main thread
would acquire mStateLock and then EventControlThread::mMutex, whereas
the event control thread would acquire the locks in the opposite
order. The changes in EventControlThread.cpp are to ensure it doesn't
hold a lock on EventControlThread::mMutex while calling
setVsyncEnabled(), to avoid the deadlock.

I found that without a composer callback registered in vr flinger the
vsync_event file wasn't getting vsync timestamps written, so vr flinger
would get stuck in an infinite loop trying to parse a vsync
timestamp. Since we need to have a callback anyway I changed the code in
hardware_composer.cpp to get the vsync timestamp from the callback, as
surface flinger does. I confirmed the timestamps are the same with
either method, and this lets us remove some extra code for extracting
the vsync timestamp that (probably) wasn't compatible with all devices
we want to run on anyway. I also added a timeout to the vysnc wait so
we'll see an error message in the log if we fail to wait for vsync,
instead of looping forever.

Bug: 62925812

Test: - Confirmed surface flinger <--> vr flinger switching is robust by
switching devices on and off hundreds of times and observing no
hardware composer related issues, surface flinger crashes, or
hardware composer service crashes.

- Confirmed 2d in vr works as before by going through the OOBE flow on a
standalone. This also exercises virtual display creation and usage
through surface flinger.

- Added logs to confirm perfect layer/display cleanup when destroying
hardware composer instances.

- Tested normal 2d phone usage to confirm basic layer create/destroy
functionality works as before.

- Monitored surface flinger file descriptor usage across dozens of
surface flinger <--> vr flinger transitions and observed no file
descriptor leaks.

- Confirmed the HWC1 code path still compiles.

- Ran the surface flinger tests and confirmed there are no new test
failures.

- Ran the hardware composer hidl in passthrough mode on a Marlin and
confirmed it works.

- Ran CTS tests for virtual displays and confirmed they all pass.

- Tested Android Auto and confirmed basic graphics functionality still
works.

Change-Id: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1
Merged-In: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
bbdcf1f4fa87e942bae7ee9bbef0ecc9a786900d 23-May-2017 Kalle Raita <kraita@google.com> Remove GLES2Renderer dependency on config stores

Test: Builds, code search for RenderEngine::create
Change-Id: I7b5032f072d0fc468a8e0eba54035867c5bf74c4
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
0ebaac3fb967f48c9b5f1d579ede853fc495a7cd 13-Apr-2017 Courtney Goeltzenleuchter <courtneygo@google.com> Add surface details to dumpsys SurfaceFlinger

Test: adb shell dumpsys SurfaceFlinger
Bug: 29940137
Change-Id: Ia0216961aa65726fa70ab9b27949344c423ab6fe
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
ce6e58ab6763d2bbc3525143083cfa67ea696e16 28-Mar-2017 neo.he <neo.he@mstarsemi.com> Merge changes If756ad2a,I19aeb7ac am: 15feba03ae am: 47609db709
am: e59f1b0bbe

Change-Id: Ic743e74ef2560e1657c8f73750dc747e91d336f2
e7f39727a484107b2d2a78eaaaacad3d7f44c24d 21-Mar-2017 neo.he <neo.he@mstarsemi.com> Add alpha channel for the EGLConfig

If the alpha channel is not assigned,the framebuffer will be Opaque.
And it will mask the underlying video and make the video invisible
when play video width mediaplayer

Issue: 258684
Test: media player
Change-Id: If756ad2aaa789f6ddb178333b3e8854f52c8eac3
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
c93afd54a05497c4ae42db99ea0310ee69cca492 13-Mar-2017 Fabien Sanglard <sanglardf@google.com> [SurfaceFlinger]Use configStore useContextPriority

Change-Id: I329b5da0e92822eb0878c8866c8ab87ea13f7e07
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
e0ea99cc4ba89452b9b6b1baa33bddcb11f3351a 12-Jan-2017 Mark Salyzyn <salyzyn@google.com> resolve merge conflicts of a2c2d11f9 to master

Test: compile
Bug: 26552300
Bug: 31289077
Change-Id: I84d0ffa430df3beca0dcc6ed205ce220d7be1f87
7823e124e00576e20e47ec717cbe8bc89f0f2bf2 29-Sep-2016 Mark Salyzyn <salyzyn@google.com> Replace cutils/log.h and rationalize log/log.h and android/log.h

- cutils/log.h treat as deprecated and lead by example
- android/log.h to be used instead of log/log.h if possible
- add system includes that are assumed as side effects
- define LOG_TAG first

Test: compile
Bug: 31289077
Bug: 30465923
Change-Id: I8d99b24c333578c9b5aa9f2a01324bd0bba268dd
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
c03d283e8b3f830d76dd94822b2a13872c05c730 28-Dec-2016 Mark Salyzyn <salyzyn@google.com> resolve merge conflicts of 525a5f2 to master

Test: build
Change-Id: Id1c6d3d9dd158fb086b0d8ab74f7838ef0a51af1
a5e161b1207ef447a51e99856097d69d4a6111e1 29-Sep-2016 Mark Salyzyn <salyzyn@google.com> Replace cutils/log.h and rationalize log/log.h and android/log.h

- cutils/log.h treat as deprecated and lead by example
- android/log.h to be used instead of log/log.h if required
- add system includes that are assumed as side effects of log.h
- modules that use SLOG should use SLOG for all logging (installd)
- define LOG_TAG first
- remove logging infrastructure if not used

Test: build
Bug: 31289077
Change-Id: Iea147a0104c7ab7f12451304131d6500f42141e7
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
efb93455b3a95458d68897c3b38f7f98046c697e 04-Oct-2016 Fabien Sanglard <sanglardf@google.com> Delete RenderEngine path for OpenGL ES 1.0/1.1

Change-Id: Ibf9e80866a38d09a025ff5031590beb11f4c2b72
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
5043c3b32c7a7cec264ac89c767b26e101d7f034 29-Jul-2016 Dan Stoza <stoza@google.com> SF: Prime shader cache before boot animation am: 4e63777f75 am: fa37ad521a
am: 85c57eb151

Change-Id: I2ef501e59efd2a510db07df998f11f05b563df14
4e63777f75e9756c74352e62e79dfa8a994de2b3 28-Jul-2016 Dan Stoza <stoza@google.com> SF: Prime shader cache before boot animation

Primes the shader cache before launching boot animation to avoid
janking when we eventually fall into GLES composition.

Bug: 30040263
Change-Id: I76ba66e92c5e6bb05930c325f384f3b774e91101
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
c406791ead6d864ec693ad01a80c5f471bdc2a7a 03-May-2016 Chih-Hung Hsieh <chh@google.com> Fix google-explicit-constructor warnings.

Bug: 28341362
Change-Id: I7e061f68acdde368a3b63c029b928133646ebff2
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
53390e1e8c33ebee5bb8100e846f5263ba05ff73 04-Aug-2015 Pablo Ceballos <pceballos@google.com> libgui/SF: Fix some code warnings

A couple of fixes to satisfy the Eclipse static code analysis tool.
- Initialize all members in constructors
- Remove unused forward declarations
- Add parentheses when combining logical and bitwise operators
- Fix a case statement with no break (it was intentional)

Change-Id: Icecb8cc98c6f58b97ab33fffb621f0edc33a7d3c
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
4037c458a7594cb3cd81a14e7e974abc28180187 13-Nov-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of 07dffa18 to lmp-mr1-dev-plus-aosp

Change-Id: I42d8bc291f4f48f3098754b076889159c4b20e41
89fd4f7fa6bd17ce5400979c3b9e5ba0bf7e919e 13-Nov-2014 Andreas Gampe <agampe@google.com> Frameworks/native: Wall Werror in surfaceflinger

Turn on -Wall -Werror in services/surfaceflinger. Fix warnings.

Change-Id: Ifef830300d9d4bc657d8f1257c02bfe8c2b4d9c5
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
9707f4df640c3369f873a934bb05ffa5a68a5640 24-Oct-2014 Riley Andrews <riandrews@google.com> Add glFlush in surfaceflinger screenshot code.

After creating a syncKHR object with type EGL_SYNC_NATIVE_FENCE_ANDROID,
glFlush must be called before the EGL_SYNC_NATIVE_FENCE_FD_ANDROID attribute
is populated with a sync fd. We currently call eglDupNativeFenceFDANDROID
before issuing the flush.

Bug 18052459
Taken verbatim from matthew.k.gumbel@intel.com.

Change-Id: I3781d14f92862076e2bca7d27341a6dc6e7e3775
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
9ae79d869a37633fa956a4f16f3fa45b23c189f1 31-Jul-2014 Michael Lentine <mlentine@google.com> Build fix for size_t on 64bit.

Change-Id: Ic16895b30d78ba8a635b709adbae31a590501b20
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
19e872912af66c53a4350afcc333bbafaf6a2294 24-Dec-2013 Jesse Hall <jessehall@google.com> Implement per-display EGLConfig and configless EGLContext

Bug: 12230666
Change-Id: Icca608b108cbdcab9cf01a9236d8cdbda000a836
Signed-off-by: Jesse Hall <jessehall@google.com>
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
05f8c703d4a050669ff8f406be3a9dc2357935f7 24-Dec-2013 Jesse Hall <jessehall@google.com> Move EGLConfig selection to RenderEngine

Bug: 12230666
Change-Id: I8d1111a7e0fd9d9e2525e6a80da8ce46d7dd085d
Signed-off-by: Jesse Hall <jessehall@google.com>
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
d555684cb36dfb959694db76962e570184f98838 20-Sep-2013 Mathias Agopian <mathias@google.com> reinstate black-screenshot debugging code

turned off by default.

Bug: 10809349
Change-Id: I3e6b8c7860e6b0e122b8f07de4020967cd1f005c
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
2185f8b420ee1b150f761893a9c47cffff645cde 19-Sep-2013 Mathias Agopian <mathias@google.com> Fix GLES context version selection

Explicitly selects an ES 2.0 config first, then an ES 1.x config,
before attempting the fallback path for the emulator.

Bug: 10820214
Change-Id: Ia8cc084c02a0e3de910def024da8a08d02bbd89d
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
ff2ed70fa30f04b90dd1a2c06ec2319e157152d7 02-Sep-2013 Mathias Agopian <mathias@google.com> color blindness enhancement

This is an attempt at improving the experience of
users with color vision impairement.

At this time this feature can only be enabled for
debugging:

adb shell service call SurfaceFlinger 1014 i32 PARAM

with PARAM:
0 : disabled
1 : protanomaly/protanopia simulation
2 : deuteranomaly/deuteranopia simulation
3 : tritanopia/tritanomaly simulation
11, 12, 13: same as above w/ attempted correction/enhancement

The enhancement algorithm tries to spread the "error"
such that tones that would otherwise appear similar can be
distinguished.

Bug: 9465644

Change-Id: I860f7eed0cb81f54ef9cf24ad78155b6395ade48
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
19733a32799f792125913e746e8644d16f8dc223 29-Aug-2013 Mathias Agopian <mathias@google.com> minor clean-up of the GLESRenderer

Change-Id: I978dea25b7687fbbbb283f09c24e115d9bad49a2
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
458197de008be8fe561286b09f4edddb2f5c540a 15-Aug-2013 Mathias Agopian <mathias@google.com> Fix ES2 composition on some devices

- turns out fragment shaders don't have default precision by default
- GLES 1.x extensions that became core in GLES 2.0 don't always work
as extensions in GLES 2.0 (!)

Bug: 8679321
Change-Id: I5a4a93e158247910399325a965af5d2e3bbece9b
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
6db4ff621898573b41abf570271a04a13bd36a69 15-Aug-2013 Andy McFadden <fadden@android.com> Disable GLES 2.x rendering

Bug 10340705

Change-Id: I91f3baf0d79655d8d031c100d0b116f745c2fbef
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
5cdc8994a0ecd751a6350b16a1bef8b6b0d09b11 14-Aug-2013 Mathias Agopian <mathias@google.com> don't reallocate the mesh each time we use it

the Mesh object can be part of each Layer (at least currently).
also reworked the Mesh code a bit to make it easier to access
the vertex data.

Change-Id: I0490851ba898f0aa2e55b62958dcd8bdb535e98b
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
3f84483382be2d528918cc1a6fbc6a7d68e0b181 08-Aug-2013 Mathias Agopian <mathias@google.com> SurfaceFlinger now uses GLES 2.x when available

Bug: 8679321

Change-Id: I2b152d01fb4e2de2ea9fe87f1ddbd6826d7520d7
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp
875d8e1323536e16dcfc90c9674d7ad32116a69a 08-Jun-2013 Mathias Agopian <mathias@google.com> Refactor SF. Move all GL operations in their own class.

this is the first step to add support for GLES 2.x, this
change breaks the dependency of SF on GLES 1.x by moving
all operation into their own class.

Bug: 8679321

Change-Id: I0d2741eca2cefe67dfd9cf837cac10c4d126928b
/frameworks/native/services/surfaceflinger/RenderEngine/RenderEngine.cpp