The CPU overhead of glDrawElements in the GPU driver is significant
with client-side vertex data (unique per draw call) as the driver has
to calculate the mininimum and maximum indices from the index buffer
in order to evaluate the range of vertex data required. This can be
avoided by keeping track of the min-max in hwui and passing it with
glDrawRangeElements. This requires OpenGL ES3.0 support (which is
already checked for elsewhere in hwui).
Test: manual - visual inspection on fugu (nexus player)
Change-Id: I57bb1ddd239a1032f74f1cd2683bbe0970e84bd9
This was calling std::max on an unsigned integer and 0, which is
essentially no-op. Remove this code.
Test: Build
Bug: 37752547
Change-Id: I74ce45b95960621dff11f574fbe1af60ad147cf0
Condition::wait() can spuriously wake up, so we must guard it with
another check to ensure that a given wake was truly due to having
been signaled.
Bug: 34592766
Test: Boot bullhead
Change-Id: Iaa5a0ca6186aea50c51e2c402ef95d7ba861be92
- libRS.so is not directly used. It is accessed by libRScpp.so.
Test: mm, and boot-up test on sailfish
Change-Id: I5742d2ee3b34ef09bcb997524408affce1ace8fd
(cherry picked from commit 629fd3d48ba1dbedc6e84e91a26f72fb1fba0e22)
Bug: 34809371
Test: manual
New benchmark uses several levels of overdraw from just shadows to benchmark
shadow shader performance.
Tessellation workload is minimal, due to simple rect caster shape.
Change-Id: I572476bd54e04566851f39027ada7254597b37f8
This warning was generated by the static analyzer:
warning: The left expression of the compound assignment is an
uninitialized value. The computed value will also be garbage
*mDirtyMask |= animator->dirtyMask();
This can be fixed by initializing dirtyMask before using it in
AnimateFunctor.
Bug: None
Test: Static analyzer no longer complains about this.
Change-Id: I892749079cf93a012f1bed059a3f0c8bbaed9d7e
hwui already exports most of its headers, move its private headers
into its source directory.
Bug: 33630870
Test: m -j native
Change-Id: I4968d5aaaa68d9e92c826841d20f29cef349c9d8
Test: Manual, usleep(16000) in DrawFrameTask and tap
on recents
Merged-In: I88bb30a2503bc908ec45650c7d36b6fb3cc750d0
Change-Id: I88bb30a2503bc908ec45650c7d36b6fb3cc750d0
Move all the includes for androidfw under
a common base path for that library instead
of frameworks/base/includes.
Also fixes -Werror issues that resulted in
no longer being -isystem.
Test: builds
Change-Id: Ic4312eb61b197af114dded5691d5ae1ec82923f7
Merged-In: Ic4312eb61b197af114dded5691d5ae1ec82923f7
(cherry picked from commit f6113af2d6f6eebee68d3ac510fe96d38a7a39e9)
This CL fixes a SkShader leak in VD when applying local matrix
to the shader. Specifically, the usage of newWithLocalMatrix(...)
increments the shader's ref count in every draw() call for
Gradient VectorDrawable, whereas there's no balancing call to
decrement the ref count in draw(). In this CL, we assume
the ownership of the shader returned from newWithLocalMatrix(...)
to ensure the correct ref count management.
Also, add test to verify that shader is no longer being leaked
BUG: 32067647
Test: this CL
Change-Id: Ic15fe46cde06a73d81b44e2d3c56b51907344cc0
Bug: 29628138
1: Make windowPositionLost synchronous as that's
what the Java side was expecting
2: Make the listener ref counted as otherwise
there's a race condition with the GC, which could
end up with use-after-frees
3: Ensure that all position updates are invoked
prior to frame completion
Change-Id: Iedbc017f611ba2878a49b4586612f79249ca2fe3
(cherry picked from commit 7b570deea65bc7ac417a26ce3e4103bcef30e957)