runRemainingAnimations is used to animate the available animation handle
which were not yet run, it actually animate those animation handle and
removes from the list by notifyAnimationsRan(). In case if these animation
handles are not removed, it leads to the Fatal Assert of runRemainingAnimations.
Some usecases causes the addition of animation handle when there is
no animators, in these cases this check prevents execution of
notifyAnimationsRan() leads to Fatal Assert crash of runRemainingAnimations.
Allowing the animation to happen irrespective of animators solves the problem.
Change-Id: Ifa72286cdc6ff785fcc999f3b951dd787e7003e9
OpenGL ES 3.0+ lets us specify the row length for unpack operations
such as glTexSubImage2D(). This allows us to upload a sub-rectangle
of a texture. Also, the GL_EXT_unpack_subimage extension can also
support this feature in OpenGL ES 2.0
Change-Id: Id43c2c55c5eaefbace67087c955f0b4324fb2c35
Signed-off-by: xiaozhengdong <xiaozhengdong@xiaomi.com>
Bug: 22592975
Optimization added in MNC is not quite correct, occasionally
it will fail to repaint when it was supposed to leading
to buffer corruption. Disable the optimization for now.
Change-Id: I34dfdfb357eda298198043ded7335d4588a003fd
bug:21588246
Ensure we always set the mask before clearing, and removes
some unneeded optimizations around mask usage in
debug (overdraw) mode.
Change-Id: I71ed06c16f8d9f158953d5aa160098514f0f7f00
Bug: 22667315
HWUI internally always assumes that RenderNode->properties()
has a fully-baked matrix. However, RenderThread animations violate
this and will perform an update of that matrix after they run. This
was missing in the fallback scenario where an animation was
running on a View that is detached from the tree.
If a RenderThread animation is started on an attached view, it becomes
detached, and is then re-attached it will crash in the staging
properties push. The fix for this is to move the call to updateMatrix
from animate() to animateCommon() so that the animateNoDamage()
path will similarly perform the necessary matrix update.
Change-Id: I4c899a6f68659342a6515f1d7f20d3c4af65caf0
Bug: 22676664
If a task is queued on a worker thread that is busy
processing a task AND a trim memory signal comes along
prior to the initial task being completed then the
tasks that were queued prior to the exit request will
never be processed.
This is bad, as when those futures are used later on, such
as in trying to delete them from the cache, they will block
waiting for the orphaned task to be finished.
Simple fix is to just never stop the worker threads. Increase
RAM usage slightly as we won't reclaim that stack space, but
this cost is fairly small
Change-Id: I818b011f9bc6ba06942fdad81c27656bd97b42d4
bug:22291400
Work around clippath-clipped-to-view-bounds behavior by
implementing REPLACE op fast path, avoiding the transition to
SkRegion/SkPath.
Change-Id: I63c1cf961db2d6e3759d83914de1036c9ac7497a
Bug: 22444755
WindowManager may decide to yank the surface at any point, so
attempt to kinda handle this
Change-Id: Id2f665d2f0f93bccd4ec977fbf52dca4dc1ec891
bug:22390304
Fixes two issues:
1) The max texture unit wasn't large enough to handle the most complex
ComposeShader case (1 for draw primitive, 2 for gradient shader, 1 for
bitmap shader).
2) If a shader isn't supported by SkiaShader::store, the shader data
needs to be explicitly disabled, so we won't read uninitilized data
from it when trying to read shader information out.
Change-Id: I29ee7b7c1e07f67db88c1707bdc857daa305e713
Concats any matrix passed through from DisplayListCanvas with the
initialTransform of the containing RenderNode.
BUG:22189925
Change-Id: I5ea54a6e2a29520c79a8860bde7682694e8595d2
Bug: 20853441
Calculating duration that crosses the UI-RT
sync point will now subtract out the time spent waiting
in queue under the assumption that this time will be
accounted for in the previous frame's metrics
Change-Id: Ia8213f4410638840613f5ae439e98dfb77532a6a
Bug: 22208220
Increases performance of shadows by yet another
15% by using more aggressive math optimizations
Change-Id: Ie3fabeae3647632a19ff573bf6b2d7f7a7cef555
Bug: 22208220
Libcxx has a really good sort algorithm, use that
instead. This speeds up shadow tesellation by about 10%.
Also less code
Change-Id: Iaad424187121d7644076f94ba8a3cf4c110da2f2
bug:19062769
Glyphs were stored to the output buffer with the assumption of
non-overlap, which is incorrect for certain fonts/strings. Instead,
blend src into dst, so new glyphs don't clobber existing content.
Change-Id: I6e22037500e67d5348ee2a43d939416c23c4d1ea
Cherry pick of b561f39d01c211425bfefaaa7b31ebe097e7ba79 from AOSP master.
Due to precision loss of float math, we sometimes get 1.000001f for
dotProduct. This causes NaN result from acosf() and floor() funcs.
At the moment, this does not cause any problems on ARM, as casting
NaN to int results in 0. On mips however (possibly on x86), such cast
gives INT_MAX, so crash occurs when trying to use the resulting value.
Change-Id: I8e0285a0306a65b8469d9f4885c19665066fc4c8
Due to precision loss of float math, we sometimes get 1.000001f for
dotProduct. This causes NaN result from acosf() and floor() funcs.
At the moment, this does not cause any problems on ARM, as casting
NaN to int results in 0. On mips however (possibly on x86), such cast
gives INT_MAX, so crash occurs when trying to use the resulting value.
Change-Id: I8e0285a0306a65b8469d9f4885c19665066fc4c8