Struct wgpu_profiler::GpuProfiler
source · pub struct GpuProfiler {
pub enable_debug_marker: bool,
/* private fields */
}
Fields§
§enable_debug_marker: bool
Implementations§
source§impl GpuProfiler
impl GpuProfiler
sourcepub const ALL_WGPU_TIMER_FEATURES: Features = _
pub const ALL_WGPU_TIMER_FEATURES: Features = _
Combination of all timer query features GpuProfiler can leverage.
sourcepub const REQUIRED_WGPU_FEATURES: Features = GpuProfiler::ALL_WGPU_TIMER_FEATURES
👎Deprecated since 0.9.0: Use ALL_WGPU_TIMER_FEATURES instead
pub const REQUIRED_WGPU_FEATURES: Features = GpuProfiler::ALL_WGPU_TIMER_FEATURES
Combination of all timer query features GpuProfiler can leverage.
sourcepub fn new(
_adapter: &Adapter,
device: &Device,
queue: &Queue,
max_num_pending_frames: usize
) -> Self
pub fn new( _adapter: &Adapter, device: &Device, queue: &Queue, max_num_pending_frames: usize ) -> Self
Creates a new Profiler object.
There is nothing preventing the use of several independent profiler objects.
active_features
should contain the features enabled on the device to
be used in the profiler scopes, these will be used to determine what
queries are supported and configure the profiler accordingly
(see GpuProfiler::ALL_WGPU_TIMER_FEATURES
)
A profiler queues up to max_num_pending_frames
“profiler-frames” at a time.
A profiler-frame is in-flight until its queries have been successfully resolved using GpuProfiler::process_finished_frame
.
If this threshold is reached, GpuProfiler::end_frame
will drop frames.
(Typical values for max_num_pending_frames
are 2~4)
timestamp_period
needs to be set to the result of wgpu::Queue::get_timestamp_period
sourcepub fn begin_scope<Recorder: ProfilerCommandRecorder>(
&mut self,
label: &str,
encoder_or_pass: &mut Recorder,
device: &Device
)
pub fn begin_scope<Recorder: ProfilerCommandRecorder>( &mut self, label: &str, encoder_or_pass: &mut Recorder, device: &Device )
Starts a new debug/timer scope on a given encoder or rendering/compute pass.
Scopes can be arbitrarily nested.
May create new wgpu query objects (which is why it needs a wgpu::Device
reference)
See also wgpu_profiler!
, GpuProfiler::end_scope
sourcepub fn end_scope<Recorder: ProfilerCommandRecorder>(
&mut self,
encoder_or_pass: &mut Recorder
)
pub fn end_scope<Recorder: ProfilerCommandRecorder>( &mut self, encoder_or_pass: &mut Recorder )
Ends a debug/timer scope.
Panics if no scope has been open previously.
See also wgpu_profiler!
, GpuProfiler::begin_scope
sourcepub fn resolve_queries(&mut self, encoder: &mut CommandEncoder)
pub fn resolve_queries(&mut self, encoder: &mut CommandEncoder)
Puts query resolve commands in the encoder for all unresolved, pending queries of the current profiler frame.
sourcepub fn end_frame(&mut self) -> Result<(), ()>
pub fn end_frame(&mut self) -> Result<(), ()>
Marks the end of a frame. Needs to be called after submitting any encoder used in the current frame.
sourcepub fn process_finished_frame(&mut self) -> Option<Vec<GpuTimerScopeResult>>
pub fn process_finished_frame(&mut self) -> Option<Vec<GpuTimerScopeResult>>
Checks if all timer queries for the oldest pending finished frame are done and returns that snapshot if any.