This enforces stricter rules on the SkSL at effect creation time, and
ensures it's valid as an SkShader (vs. an SkColorFilter). Also updated
some SkSL that was already (or would become) illegal:
- Child shaders must be declared 'uniform', not 'in'
- sampling a child requires coordinates
Bug: skia:11813
Change-Id: I743b985b5012723186a43e58e9e3ccf29d809d2b
(cherry picked from commit 7556777511)
On the old version of the ripple, the alpha is limited to 50%, we should
also do the same on the latest designs.
Bug: 184165556
Test: manual
Change-Id: Iec14394e0a0bca00283a713a409dd0794eb6fb9a
This CL introduces a new attr: effectColor.
The attribute can be used on ripple tags to customize the color and
alpha of the ripple decoration.
It's also possible to change the effect color via code by invoking
RippleDrawable#setEffectColor.
Fixes: 185602477
Test: atest RippleDrawableTest
Change-Id: I9b50f330729a67ef4b529283a92c83c28387fa0b
The basic idea is to create a child surface control from the root surface control passed from ViewRootImpl to the render thread.
Transactions are sent back to the java layer to get merged.
In case of offscreen layers, SurfaceControl must be disabled.
This new feature is disabled for Vulkan at the moment, a new CL will be used to enable the support.
Bug: 173671170
Test: manual, webview apks
Change-Id: I119405d13eca3c59fd3ec78e50dc7739f78411d4
The sparkle loop animation was happening on the UI thread and is poses
some interesting challengers:
- Animations freezes when UI thread is busy, for example when
startActivity is called.
- onDraw calls add unnecessary work to the UI thread, leading to jank
in some cases, like PIP
Test: manual
Fixes: 184760248
Change-Id: Ie2840c767da61476678839eaac215dc3aff95b5c
- Use GPU finish time as well as actual deadline to determine jank
rate.
- Use dynamic interval to adjust for 60/90hz switching
- Move frame metrics reporting into JankTracker to adjust the
deadline communicated to the app when in stuffing scenario.
- Adjust double-stuffing detection to be a bit more readable.
Test: GraphicsStatsValidationTest.java
Test: adb shell dumpsys gfxinfo
Test: FrameMetricsListenerTest
Test: Log output of FrameMetricsObserver
Bug: 169858044
Change-Id: I3a6b8ed163e2cf9cf2b67667110340ebe35f98a1
PerformanceHintManager.Session is in java, so add JNI and a HintSessionWrapper
class in HardwareRenderer. Then pass the two calls as two std::functions
into DrawFrameTask.
Note Session is created per HardwareRenderer, not global (per
RenderThread).
Session includes UI thread, render thread, and the thread pool.
Desired duration is from the intended start duration to the frame
deadline. Add an actual frame start time to compute
Add system properties:
debug.hwui.use_hint_manager to enable PerformanceHintManager
debug.hwui.target_cpu_time_percent to control percentage of frame time
to be used for target cpu duration.
Test: Manual test that there are no crashes and values make sense.
Bug: 158791282
Change-Id: I83f25433c10daa20033803fb7c4ae45eab34f1d3
The ring that masks sparkles was suddenly appearing after a few frames,
causing the sparkles to show up, instead of fade in.
Fixes: 184594674
Test: visual
Change-Id: Id88c26352379e689663808fa8c70834b7ea840b5
Update RenderNodeDrawable to hole punch areas into
layers created for SurfaceView
Bug: 184297961
Test: Added CTS test to SurfaceViewTests
Change-Id: I1f03a4fe34c5a8b7411ebe728ea3d4195fcd1fac
Support vendor configure max bitmap size, because of
8k bitmap was over 100M
Bug: 178353420
Test: build
Change-Id: I582883cca51d42505ec8a81044e471998b88854b
The animator had infinite duration, and was only cancelled during a
render loop. It was possible that it would get stuck, leaking the
drawable.
Bug: 183950010
Test: TaplTestsLauncher3 (on sysui studio)
Change-Id: I2cc0d69ef19bb4fb775d319befde9bfc9df8d0ae
This CL is a refactoring to address following things:
- Separate XML definition of fonts.xml and update.
Since there are lots of concept mismatches between system font config
and update config, e.g. file paths, family variants, etc.
It is good to manage separtely.
- Stop keeping udpated config in memory in FontManagerService.
As a side effect of above change, FontManagerService no longer keeps
FontConfig.FontFamily mappings. This will be created from XML file
when necessary. This is better in FontManagerService since this map
is only necessary the boot time. After the system is booted, this
map is only necessary when the update request is called from client
which happens quite rare.
Bug: 183752879
Test: atest UpdatableFontDirTest
Test: atest FontManagerTest
Test: atest UpdatableSystemFontTest
Test: atest FontFamilyUpdateRequestTest
Test: atest PersistentSystemFontConfigTest
Change-Id: If2c12a8029f859efc52721b07cfeab04be2deb78