Skip to main content

GpuProfiler

Struct GpuProfiler 

Source
pub struct GpuProfiler { /* private fields */ }

Implementations§

Source§

impl GpuProfiler

Source

pub fn new(context: Arc<GraphicsContext>, max_queries: u32) -> Self

Create a new GPU profiler.

§Arguments
  • context - Graphics context (must support TIMESTAMP_QUERY)
  • max_queries - Maximum number of timestamp queries per frame
§Panics

Panics if the device doesn’t support timestamp queries.

Source

pub fn begin_frame(&mut self)

Begin a new frame.

Call this at the start of each frame before recording any regions.

Source

pub fn begin_region( &mut self, encoder: &mut CommandEncoder, label: &str, ) -> Option<ProfileRegion>

Begin a profiling region.

§Arguments
  • encoder - Command encoder to write the timestamp
  • label - Human-readable label for this region
§Returns

A ProfileRegion handle that must be passed to end_region.

Source

pub fn end_region( &mut self, encoder: &mut CommandEncoder, region: ProfileRegion, )

End a profiling region.

§Arguments
  • encoder - Command encoder to write the timestamp
  • region - The region handle from begin_region
Source

pub fn resolve(&self, encoder: &mut CommandEncoder)

Resolve all queries from this frame.

Call this after all regions have been recorded, before submitting commands.

Source

pub fn read_results(&mut self) -> &[(String, f64)]

Read profiling results synchronously.

This blocks until the results are available from the GPU. For non-blocking reads, consider using double-buffering or reading results from the previous frame.

§Returns

A vector of (label, duration_ms) pairs for each completed region.

Source

pub fn try_read_results(&mut self) -> &[(String, f64)]

Try to read profiling results without blocking.

Returns None if the results are not yet available. This is useful when you want to display results from the previous frame.

§Returns

Some reference to the cached results if new data was read, or the existing cached results.

Source

pub fn queries_used(&self) -> u32

Get the number of queries used this frame.

Source

pub fn max_queries(&self) -> u32

Get the maximum queries per frame.

Source

pub fn timestamp_period(&self) -> f32

Get the timestamp period in nanoseconds per tick.

Trait Implementations§

Source§

impl RenderCapability for GpuProfiler

High-level GPU profiler for measuring execution times.

This profiler uses timestamp queries to measure GPU execution time for different regions of your rendering code.

§Requirements

  • Device must support TIMESTAMP_QUERY feature
  • Must call begin_frame() at the start of each frame
  • Must call resolve() before submitting commands

§Example

let mut profiler = GpuProfiler::new(context.clone(), 256);

// Each frame:
profiler.begin_frame();

let region = profiler.begin_region(&mut encoder, "My Pass");
// ... do rendering ...
profiler.end_region(&mut encoder, region);

profiler.resolve(&mut encoder);

// Read results (may be from previous frame)
for (label, duration_ms) in profiler.read_results() {
    println!("{}: {:.2}ms", label, duration_ms);
}
Source§

fn requirements() -> GpuRequirements

GPU requirements (features + limits) for this component.
Source§

fn name() -> &'static str

Human-readable name for diagnostics.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,