42 Commits

Author SHA1 Message Date
John Reck
8afcc76920 Revert "Revert "Make stopped state a first-class thing""
This reverts commit eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399.

Fixes first-frame issue, mReportNextDraw needs to override
mStopped

Fixes: 28118961
Fixes: 27286867

Change-Id: I5c811759637d08ba9f3b342016d1b3006986d5a2
2016-04-14 10:39:03 -07:00
John Reck
eab3f2658a Revert "Make stopped state a first-class thing"
This reverts commit 945961f78a78eced823d5ba78505c781b079703d.

Change-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714
2016-04-11 20:49:28 +00:00
John Reck
945961f78a Make stopped state a first-class thing
Bug: 27286867

WindowManager has committed to stopped state
controlling the lifecycle of the Surface, so
make that a first-class thing in HWUI as well.

This makes it more resistent to things like
a rogue updateSurface() happening while mStopped=true,
leading to bad things down the line. Instead let
the surface be changed/updated as often as desired,
and just block any attempt to draw on that surface.

Also removes some unnecessary makeCurrent()s, as
EglManager ensures that we *always* have a valid
GL context now (using a pbuffer surface if there is
no window surface set)

Change-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd
2016-04-07 16:02:33 -07:00
John Reck
fc736869ac Switch to pbuffer surface sooner
Bug: 27286867

If the system/app is slow, it might take too long to
stop drawing. Switch the ordering of destroying stuff so
that we switch to the pbuffer surface first, then do
cleanup

Change-Id: If64a3dbb71bb9fd53567231590436a89b2f1a09e
2016-02-26 15:43:09 -08:00
John Reck
c96955d9bb Always swap buffers if using partial update extension
Bug: 27379093
Change-Id: Ifda18287248e4ae07d4bf2ae9642a9d23039e81f
2016-02-26 14:58:13 -08:00
John Reck
d1ddcf19bb resolve merge conflicts of 9ea5295597 to master.
Change-Id: I68b883e8a1bb17abd4cf151d057dd07e53a80f50
2016-02-05 15:59:55 -08:00
Christian Poetzsch
9a878a646f hwui: set buffer destroyed swap mode explicitly
Not using EGL_SWAP_BEHAVIOR_PRESERVED_BIT as config attribute for
eglChooseConfig doesn't automatically mean the swap behavior is buffer
destroyed. This is driver implementation specific and on some hw this
can still be buffer preserved. Make sure it is buffer destroyed by
explicitly setting it for every new surface when requested.

Change-Id: Ie2c7c89b0d20e35832b488c6263bb4d9dd844a75
Signed-off-by: Christian Poetzsch <christian.potzsch@imgtec.com>
2016-02-05 13:51:37 -08:00
Zhang Dongsheng
892760008f libhwui: handle eglSwapBuffers with EGL_BAD_NATIVE_WINDOW error case
If eglSwapBuffers is called but the under surface was destroyed,
the EGL_BAD_NATIVE_WINDOW error may also be generated according
to the EGL spec 1.4.

This really shouldn't happen from the upper, but add the graceful
handling of this case also.

Change-Id: Ic0a599808b72f401d2a01c3dc40f9e6ea0e0a564
Signed-off-by: Zhang Dongsheng <dongsheng.zhang@intel.com>
Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
2016-02-02 10:39:49 +08:00
John Reck
682573c84b Add some options to macrobench
Change-Id: If8d5f5d3ace050577986a554182b2b66fd2257e1
2015-12-16 16:40:02 -08:00
John Reck
704bed0da7 add DeviceInfo
This reverts commit 096895550b9d5430d7a001d491566decf4f9791b.

Change-Id: Ib2ed1e96d8f7f88302f5e27fe735687194553104
2015-11-05 10:13:23 -08:00
John Reck
096895550b Revert "add DeviceInfo"
This reverts commit b2442896e3a226c7ebe9d47fa80b257e98a6a34d.

Change-Id: I50f6555451f71067505245333c8e558b5e3b2b3b
2015-11-05 01:38:25 +00:00
John Reck
b2442896e3 add DeviceInfo
Change-Id: I4c122278a7e88b6f47c4dd3c5fc553df7d3c900d
2015-11-04 13:46:49 -08:00
John Reck
c2547fa6f9 eglSwapBuffers can also return EGL_BAD_NATIVE_WINDOW
Bug: 25017107
Change-Id: I545a746ba89d577de5769bc3e7dd335a100638c0
2015-10-26 13:52:52 -07:00
John Reck
708b6687da Add assert for required EGL extensions
Bug: 25149700

Change-Id: I535ead7c1f8ba8766dff85fcf26a9cfe76647fb8
2015-10-22 13:18:37 -07:00
John Reck
a672f6ba4c Remove obsolete debug option
Bug: 25149700
Change-Id: I9280e2414255fb01e672094cd8d173efadac1681
2015-10-22 09:53:26 -07:00
Chris Craik
6e6646c037 Unify extensions parsing behavior
Removes remnants of EGL extension support, and persistence of
GL extension list.

Change-Id: I35aec12d900bdb33549ea47654bb8146f350ef48
2015-09-21 13:14:20 -07:00
John Reck
149173d28c Support new EGL extensions
Bug: 21753739

Includes a revert of 13d1b4ab10fbee5e81a2ba1ac59cfae1e51d3ef0
as that only supported EGL_EXT_buffer_age

Change-Id: Ia86a47d19e3355c067934d7764c330b640c6958d
2015-08-12 14:26:05 -07:00
Season Li
13d1b4ab10 renderthread: add EGL_EXT_buffer_age support
EGL_EXT_buffer_age is better than EGL_BUFFER_PRESERVED
because it can save memory bandwidth used to blit
back buffer into front buffer.

Change-Id: I2fea0ee08dc7dd66e348b04dd694d075d509d01b
2015-08-04 13:01:54 -07:00
John Reck
f2dcc2aecb Don't crash on makeCurrent fail
Bug: 22444755

WindowManager may decide to yank the surface at any point, so
attempt to kinda handle this

Change-Id: Id2f665d2f0f93bccd4ec977fbf52dca4dc1ec891
2015-07-16 09:17:59 -07:00
John Reck
4cd44f8110 Enable swapBuffersWithDamage by default
Bug: 20761426

Change-Id: I520e60ca4f182dea590bc86eebd522e1db7a018a
2015-05-27 10:28:28 -07:00
John Reck
d7db4d7672 Eliminate requireGlContext
Bug: 20297820

Change-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097
2015-05-20 11:24:57 -07:00
John Reck
d04794a9a3 Add eglSwapBuffersWithDamageKHR support
BUG: 20761426
Disabled temporarily

Change-Id: I0b6b6f0eebab886145e13fa35aefe76826965cf5
2015-05-08 10:48:57 -07:00
John Reck
8a6b56651b Merge "Add a WAIT_FOR_GPU_COMPLETION option" 2015-01-30 23:12:43 +00:00
John Reck
5515637540 Add a WAIT_FOR_GPU_COMPLETION option
Change-Id: I18d526120651676109200bfd5da87cafcd7e3d13
2015-01-30 12:46:09 -08:00
Chris Craik
44eb2c0086 Refactor blending and texture gl state
Change-Id: Ia6b3c8b2afd3dfcee7f3ce401d846b789612054a
2015-01-30 10:49:05 -08:00
Chris Craik
65fe5eeb19 Move scissor state to RenderState
Change-Id: I1227a3886fb24e4d9fad79fca469794f06cfb15e
2015-01-27 17:12:39 -08:00
Chris Craik
d41c4d8c73 Add overrides and switch to nullptr keyword for all files
Adds remaining missing overrides and nullptr usages, missed due to
an extreme failure in tool usage.

Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
2015-01-05 16:49:13 -08:00
Yohann Roussel
59cf734f9e resolved conflicts for merge of d67bb501 to master
Change-Id: I40698ce1e382cb41eec7af5ea49ac0e2f997d555
2014-12-11 11:10:50 +01:00
John Reck
ebd52610cf Don't preload textures for AssetAtlas
Bug: 18317479

RenderNode::prepareSubTree calls prefetchAndMarkInUse
on every bitmapResoruce in the DisplayList. However,
this resulted in textures being uploaded for bitmaps
that would be drawn from the AssetAtlas instead.

To fix this we teach TextureCache about the AssetAtlas
so that calls to TextureCache return the Texture from
AssetAtlas if it exists. Thus usage of AssetAtlas
is now purely to allow for further optimizations via
draw merging instead of a requirement to get
any benefit at all.

Change-Id: I65282fa05bac46f4e93822b3467ffa0261ccf200
2014-12-10 17:07:41 -08:00
John Reck
27eaec2388 am 842697a3: am decc26df: am f0f68117: Merge "Trace some interesting events" into lmp-mr1-dev
* commit '842697a3602204036e991cfea8b74da3df6e7f14':
  Trace some interesting events
2014-11-18 21:37:59 +00:00
John Reck
fbc8df03e4 Trace some interesting events
Bug: 18337099
Change-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c
2014-11-17 10:18:31 -08:00
John Reck
9481684560 am e05575e9: am a8d83d63: Merge "Layer changes" into lmp-mr1-dev automerge: a51fba0
* commit 'e05575e9c36850d8cfe49396ac9a1372511b12bf':
  Layer changes
2014-10-31 23:30:57 +00:00
John Reck
0e89e2b7bc Layer changes
Bug: 17208461

* Switch Layer to be VirtualLightRefBase instead of
  Caches' side-channel ref-counting
* Include active layers in gfxinfo dump
* Run gfxinfo dump on the correct thread
* Dump gfxinfo on Layer creation failure

Change-Id: I28d195699e2334518e215ab28c7a17355aee9678
2014-10-31 15:30:10 -07:00
John Reck
eaab65f49d am 97054254: am 141823ec: Merge "Be more conservative about current buffer" into lmp-mr1-dev automerge: a27e1a3
* commit '97054254d4c8eef66538814e1d5def776ceba97a':
  Be more conservative about current buffer
2014-10-30 19:20:17 +00:00
John Reck
950ff1b88c Be more conservative about current buffer
Bug: 18065565
Change-Id: I0b9c85ecf384ebe525e3a38803ab77d7ee37f33a
2014-10-27 13:23:20 -07:00
John Reck
675a518d5a am b64e4372: am 82572cc4: am badac04d: Merge "Add some free zoom to lockHardwareCanvas" into lmp-mr1-dev
* commit 'b64e4372bb60bdce75e2af7d0b94efe92d94ac6a':
  Add some free zoom to lockHardwareCanvas
2014-10-23 22:23:10 +00:00
John Reck
1125d1fa92 Add some free zoom to lockHardwareCanvas
Bug: 18099195

Don't use EGL_SWAP_BUFFER_PRESERVED on surfaces that will
never benefit. Also clean up some confusing naming

Change-Id: I674ca64e0464a3282cff79e5ecd350d08f47c014
2014-10-23 13:59:47 -07:00
Tom Hudson
2dc236b2ba Clean up physical coupling
Narrow the use of #include directives in hwui, replacing with forward
declarations where straightforward. Speeds compiles; doesn't do any
restructuring of code.

Change-Id: Icac2baffb5896f55d8c6718e9bd9d4bfa02d3ca0
2014-10-15 15:51:39 -04:00
John Reck
2cdbc7d228 Special case EGL_BAD_SURFACE
Bug: 17516789

Change-Id: I3dcb10360c2aef6326f7dbbff6815866d4c143b6
2014-09-17 16:09:57 -07:00
John Reck
998a6d8189 Track buildLayer calls, destroy if unused
Bug: 17208461

Change-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9
2014-08-28 15:55:26 -07:00
Chris Craik
1d47742333 Crash instead of leaking layers/textures between GL contexts
bug:17208461
Change-Id: I4d58f301cf0f5e8145e808a5d6ade4de7801970b
2014-08-26 17:30:15 -07:00
John Reck
3b20251a35 No-fail invokeFunctor
Bug: 15513308
 Bug: 15449247

Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
2014-06-23 15:26:49 -07:00