History log of /frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
551d08e2d50c7f73c5eb65fd366b92efba4f0ed5 20-Apr-2018 Derek Sollenberger <djsollen@google.com> Respect a Layer's (e.g. SurfaceTexture) colorSpace when compositing

This CL extracts the android_dataspace from the GLConsumer and converts
it to a SkColorSpace. HWUI always expects to composite into an sRGB
destination so when we draw the layer we run the draw through a
colorFilter that converts the input colorSpace into that of the
destination.

Test: CtsViewTestCases
Bug: 78016220
Merged-In: Ic0446a0d861e86a5a9d0382346b57fcc45c8a61b
Change-Id: Ic0446a0d861e86a5a9d0382346b57fcc45c8a61b
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
92a9eb9713f7bde9897de648604c74e0df25cd6e 12-Apr-2018 Derek Sollenberger <djsollen@google.com> Unpin bitmaps but don't purge all scratch resources.

This is a partial revert of b1f27aae89a9da9fbf3cb15a47f1a401db5a7974.

Test: hwui_unit_tests
Bug: 77654081
Change-Id: I5a58c156a280edfe3e9973ac3a8a30c97a2cff8b
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
216b1572b46ecb1225c8b1a904d7f98e2e6c4b01 26-Mar-2018 Stan Iliev <stani@google.com> Better error reporting for createOrUpdateLayer

Pass error handler down to the pipeline object, which allows
skia pipelines to print cache memory usage.
In case of an error, print arguments that were used to invoke
SkSurface::MakeRenderTarget.

Test: Ran android build on a device
Bug: 76115654
Change-Id: I5baddfa66debd505eddc3117cf94aa6ae69bedaa
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
aadc0320454d9094899c0e9cfdf33a14938707b8 23-Mar-2018 Stan Iliev <stani@google.com> Clear the frame buffer for F16 pixel format

This is a workaround for Qualcomm bug and should be reverted
after a proper fixed is found.

Bug: 74976293
Test: Ran Photo app
Change-Id: I9e0a4634f02c3553635f058eb588b510a63273ba
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
5b7f426ff04820f81877ccb696bf6245dede89e7 26-Jan-2018 Leon Scroggins III <scroggo@google.com> Use a separate thread to decode AnimatedImageDrawable

Bug: 63908092
Test: Manual: Ie18811ba29a1db163aca08472b04ae185e9344f0

Depends on https://skia-review.googlesource.com/#/c/skia/+/101544. That
change removes the Skia class's time checks, and leaving it up to the
client to keep track of the time. In this case, the client wants to keep
track of the time because it only wants to update while it is being
drawn. If it goes off screen (for example), it will just resume where it
left off when it returns on screen. This allows for smooth animations.

If an AnimatedImageDrawable is being drawn to a SkiaRecordingCanvas,
decode on the new (lazily-created) AnimatedImageThread.

When running, always decode one frame ahead on the AnimatedImageThread
so that it will be ready when it is time to display.

During prepareTree, update the time and check whether there is a new
frame ready to draw or the next frame needs to be decoded. In either
case, return true. The next frame to be decoded will be triggered by
onDraw.

Change-Id: If447976e9df417060a950f658dbca9cf7980dd02
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
2d14213849d6df70d0fa80319ab4ffc08743a683 22-Jan-2018 Derek Sollenberger <djsollen@google.com> Initial implmentation of AnimatedImageDrawables on the RenderThread.

The current implementation schedules the next frame of the images
to be decoded after the current frame completes but potentially
schedules tasks that will result in a no-op execution if a new
frame is not yet needed.

Test: HwAccelerationTest
Change-Id: I0510cb5a1b801abd651327e924deb586af0306d6
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
ebf96fbed70176625d0a1102bfce958e47244ec0 13-Dec-2017 Mike Reed <reed@google.com> SkPixelSerialize is deprecated (and unneeded in this case)

Test: make

Change-Id: Icc421586de82a516cb5e32b60949315d1108a9a3
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
03e6cff7a6b20d68babc0b90b15112561360f17f 04-Dec-2017 Derek Sollenberger <djsollen@google.com> Allocate textures in multiples of LAYER_SIZE.

This matches the behavior of the old HWUI renderer and avoids
jank when trying to release a series of small textures.

Test: UiBenchJankTests #testResizeHwLayer
Bug: 69566781
Change-Id: Idc01f8438e85d4810032fd30a141132a6cdd47a1
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
1bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52 03-Nov-2017 John Reck <jreck@google.com> Format the world (or just HWUI)

Test: No code changes, just ran through clang-format
Change-Id: Id23aa4ec7eebc0446fe3a30260f33e7fd455bb8c
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
30dfc68a9ff17da03431fb4da2ae43366b22e965 21-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Convert skpCaptureEnabled compile time flag into a property"
e9d0012bbf8077c1b7e09e44ae30e7873eb7ac31 19-Sep-2017 Stan Iliev <stani@google.com> Convert skpCaptureEnabled compile time flag into a property

Convert SkiaPipeline::skpCaptureEnabled into a system property.
Add ability to capture drawing in layers. Add ability to capture
animations/sequence of frames. Fix crash when recording a
TextureView.

Test: Ran capture script.
Change-Id: I463eecf6ec90a601a6cc172ad1901bd4bcc86ac8
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
47fed6ba6ab8a68267a9b3ac6cb9decd4ba122ed 18-Oct-2017 Stan Iliev <stani@google.com> Fix crash in "Tree::updateBitmapCache"

Fix crash caused by updating vectordrawable cache for objects
from previous frames, which may have been deleted.

Bug: 67940327
Test: Ran CtsUiRenderingTestCases test
Change-Id: I4466235e78e9b7937a0d4428240574d9e3d0989f
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
232f3628bca9b07a3c6a815f0540c29df29b6f85 23-Aug-2017 Stan Iliev <stani@google.com> Unpin images when skia pipeline object is destroyed

Unpin images when skia pipeline object is destroyed. This fixes
an assert in skia ~SkImage_Raster.

Test: Built and ran Android on a device.
Bug: 66730647
Change-Id: I73603efd4fc2ca584cdb8f6a4774e48a187f6787
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
8ec9e88cdae4febf9ca9ff9d575b9add0a19409d 24-Aug-2017 Derek Sollenberger <djsollen@google.com> Enable multi-threading of cpu intensive tasks when using Skia pipelines

Test: CtsUiRenderingTestCases
Change-Id: Ifa36371f55d3f2d78faf0a23fb283c904ff1af5f
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
f7df184fa19391dea5df7377fb7f5cbc6a51e5c1 05-Sep-2017 Derek Sollenberger <djsollen@google.com> Only flush after all layers are drawn instead of after each layer.

This approach avoids paying for any extra overhead in flushing
commands from Skia to the GPU.

Test: LauncherJankTests#testOpenAllAppsContainer
Change-Id: Ie4be3592d1b032a06d848c994b8be435638d24c8
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
7fe53c1eafff36118d9d6116496d7649b5a3f89d 31-Aug-2017 Derek Sollenberger <djsollen@google.com> Render VectorDrawables in software and then upload to the VDAtlas.

For frames with multiple VDs the context switching involved was causing
worst case frame times of ~40ms to draw all VDs in the frame whereas
this new approach has worst case performance of ~5ms when drawing the
same frame (w/ approximately 26 VDs).

Bug: 64487466
Test: SystemUiJankTests#testGoToFullShade
Change-Id: I5cad0b5df86e5eac3722ee8695fc7511b38b8a7c
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
9552c2c98c8d9a5a47ec463a2f29e5aa32f774bb 31-Aug-2017 Derek Sollenberger <djsollen@google.com> Adding traces and some generic cleanup.

Test: CtsUiRenderingTestCases
Change-Id: I6863eca20bf6ca2d17e9867c3c3ac12cb35dc809
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
fb0c8fc3d5413a3ec357680d85084a17bb9ef64f 26-Jul-2017 Derek Sollenberger <djsollen@google.com> Enable colorspace conversion while perserving legacy blending.

When requesting an SkImage from a android::Bitmap we will also
return a colorFilter that will perform the sRGB conversion at draw
time.

Bug: 62347704
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases, CtsViewTestCases
Change-Id: Icc4694e2c42605e29fcc834c252bc21263bac658
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
08fc19af877ea4e2aed216facd469d2bd13b013e 24-Jul-2017 Stan Iliev <stani@google.com> Use F16 render target when wide color rendering is enabled

Support F16 render targets in Skia pipeline. Enable readback from
F16 surface.

Test: device boots with Skia pipeline
Change-Id: Ib31e618be1a987de3736987a496c799693923594
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
5c936fcfd3b7e330aeb0f3158529fb65f02c13e0 19-Jul-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix incorrect asserts"
3310fb1b24c6cdd0781674fab69e359caf9d17e5 23-Mar-2017 Stan Iliev <stani@google.com> Cache VectorDrawables in an atlas

Optimize VectorDrawables for Skia pipeline: draw small VectorDrawables
in a GPU atlas instead of seprate offscreen buffers.
This implementation is using CacheManger and allows for the atlas to
be released if there is a memory pressure.

Test: A new unit test for VectorDrawableAtlas is passing. Systrace shows
0.5ms faster DrawFrame for fling in Settings app main screen.
Change-Id: Ide3884eefae777e1547f1dfdb67b807185839fb4
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
18b388d67b041d0a12a75db4c8e2940b9a270f1b 18-Jul-2017 Stan Iliev <stani@google.com> Fix incorrect asserts

Fix a few Skia asserts, which prevent HWUI from compiling and
running when SkDebug is defined.

Test: Built and ran Android on device.
Change-Id: Ie7f16016ba105e1d376c266c5b030e4bc04629d9
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
07ae505d4045e2b1ae501e87560984dae06f9dd8 14-Jun-2017 Romain Guy <romainguy@google.com> Use RGBA16F layers when wide color gamut rendering is on

Layers created using View.setLayerType() or Canvas.saveLayer() need
to be RGBA16F/scRGB-nl when within a window that requested wide color
gamut rendering.

Bug: 29940137
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases, hwui_unit_tests
Change-Id: I42fd6355448c92041491a7109e3ac8a153d38bf9
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
f9e45d1d818ae0956ba77ed598b7040cfecca553 01-Jun-2017 Derek Sollenberger <djsollen@google.com> Implement CacheManager for the Skia pipelines.

The core of the implementation is complete and provides heuristic
cache sizing based on the size of the surface being used. This CL
will also be used to add the following features in the future...

1) Support Vulkan pipeline reporting on the size of the surface.
2) Complete the VectorDrawableAtlas stub code
3) Automatic purging of stale resources for low memory devices.

Test: hwui_unit_tests (new test added) and CtsUiRendering
Bug: 62260637
Change-Id: Ib85159cca28b646fe249f2190b07f1b7e0f50d8f
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
7bc3bc6028d0c7b16fec72c3922fc627c8657951 24-May-2017 Stan Iliev <stani@google.com> Implement HW Bitmap for Skia pipeline

Implement HW Bitmap for Skia pipeline. Use new Skia
SkImage::MakeFromAHardwareBuffer API, which will enable to
record HW Bitmap into a picture. Move logic that uploads
SkBitmap into a GraphicBuffer into pipeline specific classes.

Test: All CTS and other tests pass for HWUI pipleine. For Skia
pipeline graphics CTS tests pass, 2 UIRendering CTS tests which
excise HW bitmaps with color spaces fail, bitmapShaderEglImage
macrobench fails (to be fixed by a CL in Skia), HWUI unit tests
pass, no EGL leaks found.

Change-Id: Id5926d7cccd81af8b55400f44fb524a427543d05
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
59069e00a8965cb67350e95f32d62c31d6bf010e 17-May-2017 John Reck <jreck@google.com> Revert "Fix recent apps in system UI for Skia pipeline"

This reverts commit b33013fb3c570e0a3ced8729dced9f0d294761a6.

Reason for revert: Caused a memory leak, b/38330767
Bug: 38136140
Bug: 38330767
Test: manual, verified memory isn't leaking doing the steps in b/38330767

Change-Id: I98b2dfd750be57a15785808e2d5723616e2ce20a
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
b33013fb3c570e0a3ced8729dced9f0d294761a6 06-May-2017 Stan Iliev <stani@google.com> Fix recent apps in system UI for Skia pipeline

Enable HW Bitmaps for Skia pipeline just enough to make
recent apps list working by adding support for BitmapShader.
Drawing HW bitmaps in a canvas is also supported.

Test: recent apps work, HWUI unit tests pass, CTS tests pass.
bug: 38136140
Change-Id: Ibd06c859c86dc213310d5ce5272497e1882d0cc6
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
23c38a9ed9c28a9fda438e7d30532aad7a3844f7 23-Mar-2017 Stan Iliev <stani@google.com> Update VectorDrawables cache at frame start

Draw VectorDrawables in GPU backed surface. Render VD cache
at the beginning of the frame to avoid context switching.

Test: CTS graphics tests pass.
Change-Id: Ia14e0ec4049c3fa87f03547fbda44043bf8dd793
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
3aeda5c5c47ae29197e8b8b665749cb6cb449e19 17-Mar-2017 Ben Wagner <bungeman@google.com> Use access directly instead of sk_exists.

Skia would like to move SkOSFile and make it private spi. This appears
to be the only place SkOSFile is used outside Skia, and using access
here directly is more apropriate.

Test: Simple inline refactor, built and ran. Changes test code only.
Change-Id: Ib76c180bb3bccc54c20dcadc842837e3e8270929
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
fc29f7acd1352efa97269b5f3856eb879d5cfd53 02-Mar-2017 John Reck <jreck@google.com> Fix potential use-after-free in LayerUpdateQueue

Change-Id: I090af2191576175b165a9db574a80123c16f0778
Fixes: 26548204
Test: Builds & hwui unit tests pass
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
b66b8bb4a089593ee7c20ad7f59980c16dde9cc9 16-Dec-2016 Stan Iliev <stani@google.com> Ensure root render node clip cannot expand beyond dirty area

Use new Skia API to enfore clip restriction for root render node.
This brings Skia pipeline in line with HWUI. Unit test is
updated to reflect the new behaviour.

Test: Built and ran angler-eng, ran HWUI unit tests.

Change-Id: Iffce70fd37b6aff45eb6a23c8b1a64f45b5f1463
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
66b9d4486abb9e6d1edc624cd9ff522b12acece0 16-Dec-2016 Chris Craik <ccraik@google.com> Revert "try to stop using exotic clipps"

This reverts commit 834653bcf80a3879c4d80004469053f205d45b69.

Change-Id: Ie8cb787490832a0be154ec1263313982157faa81
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
834653bcf80a3879c4d80004469053f205d45b69 14-Dec-2016 Mike Reed <reed@google.com> try to stop using exotic clipps

Change-Id: Id11d7744daa69c19fdc9b7723862b3d71ad21384
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
6c67f1d04591f44bccb476d715a005ad5bbdf840 14-Dec-2016 Mike Reed <reed@google.com> SkClipOp is now an enum class

Change-Id: If423dd013a264162ae0b7674a0eeef34bc2cdaae
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
ee708facf127f2e8bed5970d5c05fa823fcfc1ce 12-Dec-2016 Leon Scroggins III <scroggo@google.com> Remove unnecessary dependency, and fix the chain

Test: No new tests. This should not affect behavior; only dependencies.

Font.h does not need to include SkGlyphCache.h, and doing so requires
a transitive dependency on external/skia/src/utils, which was not
intended. Forward declare it instead, and fix the build errors that
resulted.

Change-Id: Ifd09430bb848d51b139df0f0c06c63e7e48711eb
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
52771272f4f018f4fc6846224bf047497e784af1 17-Nov-2016 Stan Iliev <stani@google.com> Add more Skia pipeline unit tests.

Add more Skia pipeline unit tests and fix an issue
in backdrop/content bounds clip logic.

Test: built and run angler-eng and HWUI unit tests.
Change-Id: Ie41f80ff7ce9802a4d76e8b14f1695dbc9771a2b
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
9a648a1c74f39b8aca525ae3787d379cb4c76971 07-Dec-2016 Mike Reed <reed@google.com> Merge "switch over clip calls to use SkClipOp instead of SkRegion::Op"
6e49c9f007c879f05b035c40c0ba543c00f9d0d0 02-Dec-2016 Mike Reed <reed@google.com> switch over clip calls to use SkClipOp instead of SkRegion::Op

Change-Id: I67d23c487b5249bc31d96e3b2393f693c0b2bcff
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
10219fb261606fcc71c607167b28295b4578a10d 24-Nov-2016 Hal Canary <halcanary@google.com> SkImageEncoder->SkEncodeImage

Test: none
Change-Id: I15630d2852d12840329181f135852e28d287bbcf
(cherry picked from commit 8c6bac4c77caeefb667bec90d16b5384fd2b2b31)
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
f58cc92066903b900396f640159ea3ea992fc67d 15-Nov-2016 Matt Sarett <msarett@google.com> Add overdraw debugging feature to Skia pipelines

Test: Compared to OpenGL pipeline and sanity checked
with understanding of the drawing pipeline. Also
wrote a unit test.

BUG:32370375

Change-Id: Iab397d21f0def725fa89551d48c764c67fd2bda8
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
e92d4045ebea6bb0491f8f9de0fcf051598d9563 17-Nov-2016 Derek Sollenberger <djsollen@google.com> Merge "Update pinImages to report when GPU resource limits are exceeded."
189e87498f666e94dc8c8201e7bac56bb09b9251 16-Nov-2016 Derek Sollenberger <djsollen@google.com> Update pinImages to report when GPU resource limits are exceeded.

Bug: 32691999
Test: proposed CTS test (ag/1500396) and existing UiRendering tests
Change-Id: I190f888ae5499ac048569af8256fdd31d19d1285
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
79756be175dea78ee9d51bb22abba7621bd9b5cc 09-Nov-2016 Matt Sarett <msarett@google.com> Add layer updates debugging feature to Skia pipelines

When this property is turned on, we flash green
every time a hardware layer is updated.

Test: Matches the behavior in OpenGLPipeline

BUG:32370375

Change-Id: I916f94eee644c185d8a3f9fa4cd69e087ed1e92d
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
e3d281ea18f7ccd477e4db5e74cf4fc1506e9f98 08-Nov-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Add debug memory tracking to SkiaGLPipeline"
4bda6bfaa6b8cb775f18f2453720d05f4cb29152 07-Nov-2016 Matt Sarett <msarett@google.com> Add debug memory tracking to SkiaGLPipeline

Test: Sample output is below

D/OpenGLRenderer: Resource Cache Usage:
D/OpenGLRenderer: 32 items out of 8192 maximum items
D/OpenGLRenderer: 4635572 bytes (4.42 MB) out of 96.00 MB maximum

This is less verbose than OpenGL memory debug output for
two reasons:
(1) SkiaGL has less caches.
(2) SkiaGL does not support printing on cache additions/evictions.
This seems like more of an internal debugging tool rather than
a user-facing debug feature. I think it's best to leave this
unimplemented until we find that it might be useful.

BUG:32370375

Change-Id: Ib063f1c2a7f88e9840341b1001d227f556d88f26
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
b7d34b64dd32e3d84bd43344c9c3d9ad098129af 04-Nov-2016 Derek Sollenberger <djsollen@google.com> Refactor pin/unpinImages to work across pipelines.

Test: existing CTS tests still pass
Change-Id: Ib2607e9853396bad42f298829b5c5da0d210af32
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp
500a0c30d4dcd012218c3e44a62926a1c34a259f 26-Oct-2016 Stan Iliev <stani@google.com> Implement Skia pipelines for OpenGL and Vulkan.

Implement Skia pipelines for OpenGL and Vulkan:
base SkiaPipeline, SkiaOpenGLPipeline and SkiaVulkanPipeline.
Write unit tests for SkiaPipeline.

Test: Built and run manually on angler-eng.
Change-Id: Ie02583426cb3547541ad9bf91700602a6163ff58
/frameworks/base/libs/hwui/pipeline/skia/SkiaPipeline.cpp