pub struct AndroidSdkSyspropGuardConfig {
pub surfaceflinger_skia_track_events: Option<bool>,
pub hwui_skia_track_events: Option<bool>,
pub hwui_package_name_filter: Vec<String>,
}
Expand description
Data source that controls the system properties used to guard initialization of track_event producers (i.e. Skia) in apps using HWUI, and certain processes like SurfaceFlinger.
This data source only tells Skia to initialized the Perfetto SDK and start routing data to the Track Event system instead of ATrace. For those events to actually show up in a trace, the track_event data source must be used as well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and processes may need to be restarted for Skia to revert to using ATrace if Track Events are no longer desired.
In addition to switching Skia to use Perfetto’s track_event data source, this “guard” also controls Skia’s “broad tracing”, which removes Skia’s internal tracing constraints and allows the track_event config to specify which categories should be traced. Filtering to the “skia.always” category tag in a track_event config can be used to re-enable the standard constraints typically used with ATrace.
Data source name: android.sdk_sysprop_guard Introduced in Android 14 (U) QPR1. Next id: 4
Fields§
§surfaceflinger_skia_track_events: Option<bool>
If true, configures SurfaceFlinger to initialize Skia’s Perfetto integration with the track_event data source in RenderEngine. If false or omitted, the simpler ATrace fallback is used.
NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is restarted.
Specifically this sets the following system properties:
- debug.tracing.ctl.renderengine.skia_tracing_enabled
- debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
Does not affect actual track_event data collection, which must be configured seperately.
hwui_skia_track_events: Option<bool>
If true, configures HWUI apps to initialize Skia’s Perfetto integration with the track_event data source. hwui_package_name_filter can be used to control which apps are affected. If false or omitted, the simpler ATrace fallback is used.
NOTE: once enabled, Skia will only revert to ATrace if the app is restarted.
ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set! If filtering is NOT set, this controls these GLOBAL system properties:
- debug.tracing.ctl.hwui.skia_tracing_enabled
- debug.tracing.ctl.hwui.skia_use_perfetto_track_events If filtering IS set, this controls these APP-SPECIFIC system properties, for each package listed in the filter:
- debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
- debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
Does not affect actual track_event data collection, which must be configured seperately.
hwui_package_name_filter: Vec<String>
If non-empty, hwui_skia_track_events applies to only the packages listed. Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
Implementations§
Source§impl AndroidSdkSyspropGuardConfig
impl AndroidSdkSyspropGuardConfig
Sourcepub fn surfaceflinger_skia_track_events(&self) -> bool
pub fn surfaceflinger_skia_track_events(&self) -> bool
Returns the value of surfaceflinger_skia_track_events
, or the default value if surfaceflinger_skia_track_events
is unset.
Sourcepub fn hwui_skia_track_events(&self) -> bool
pub fn hwui_skia_track_events(&self) -> bool
Returns the value of hwui_skia_track_events
, or the default value if hwui_skia_track_events
is unset.
Trait Implementations§
Source§impl Clone for AndroidSdkSyspropGuardConfig
impl Clone for AndroidSdkSyspropGuardConfig
Source§fn clone(&self) -> AndroidSdkSyspropGuardConfig
fn clone(&self) -> AndroidSdkSyspropGuardConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for AndroidSdkSyspropGuardConfig
impl Debug for AndroidSdkSyspropGuardConfig
Source§impl Message for AndroidSdkSyspropGuardConfig
impl Message for AndroidSdkSyspropGuardConfig
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
Source§fn decode<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
Source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
Source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
self
. Read moreSource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
self
.Source§impl PartialEq for AndroidSdkSyspropGuardConfig
impl PartialEq for AndroidSdkSyspropGuardConfig
Source§fn eq(&self, other: &AndroidSdkSyspropGuardConfig) -> bool
fn eq(&self, other: &AndroidSdkSyspropGuardConfig) -> bool
self
and other
values to be equal, and is used by ==
.impl StructuralPartialEq for AndroidSdkSyspropGuardConfig
Auto Trait Implementations§
impl Freeze for AndroidSdkSyspropGuardConfig
impl RefUnwindSafe for AndroidSdkSyspropGuardConfig
impl Send for AndroidSdkSyspropGuardConfig
impl Sync for AndroidSdkSyspropGuardConfig
impl Unpin for AndroidSdkSyspropGuardConfig
impl UnwindSafe for AndroidSdkSyspropGuardConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)