Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::gpu_audio::GpuAudioStatus Struct Reference

Versioned, allocation-free status shared by native hosts and UI adapters. More...

#include <gpu_audio_status.hpp>

Public Attributes

std::uint32_t schema_version = kSchemaVersion
GpuAudioEngine requested_engine = GpuAudioEngine::Unknown
GpuAudioEngine selected_engine = GpuAudioEngine::Unknown
GpuAudioProviderState provider_state = GpuAudioProviderState::Uninitialized
GpuAudioProvider provider = GpuAudioProvider{}
MissPolicy fallback_policy = MissPolicy{}
std::uint32_t sample_rate = 0
std::uint32_t block_size = 0
std::uint32_t latency_samples = 0
std::uint32_t prepared_lead_blocks = 0
bool fallback_available = false
bool diagnostics_available = false
std::uint64_t produced_blocks = 0
std::uint64_t missed_blocks = 0
std::uint64_t fallback_blocks = 0
std::uint64_t resynced_blocks = 0
std::uint64_t input_dropped_frames = 0
double last_block_us = 0.0
double avg_block_us = 0.0
GpuAudioRecoveryReason recovery_reason = GpuAudioRecoveryReason::None
 The first cause latched in the current delivery epoch.
std::uint64_t recovery_sequence = UINT64_MAX
std::uint64_t epoch = 0
bool delivery_epoch_active = false
std::uint64_t terminal_counts [kTerminalDispositionCount] = {}
 Admitted blocks by terminal disposition, indexed by the numeric value of GpuAudioTerminalDisposition.
GpuAudioCompletionMode completion_mode = GpuAudioCompletionMode::Unknown
bool timestamps_available = false
std::uint64_t last_delivery_ns = 0
bool gpu_kernel_available = false
GpuAudioShadowMode shadow_mode = GpuAudioShadowMode::None
float shadow_inline_cost_pct = 0.0f
 Inline shadow cost as a percentage of the callback budget.
std::uint64_t shadow_delivered_blocks = 0
 Blocks delivered from the shadow instead of the GPU result.
std::uint64_t shadow_late_blocks = 0
 Blocks whose shadow result was not ready in time.
std::uint64_t shadow_double_miss_blocks = 0
 Blocks where both the GPU result and the shadow missed the deadline.
bool shadow_model_differs = false
 The shadow runs a different model from the GPU path, so its output is a substitute rather than a bit-identical fallback.
std::uint64_t reacquire_attempts = 0
 Provider replacements the transport attempted after a fence.
std::uint64_t reacquire_successes = 0
 Attempts that opened a new delivery epoch on a new provider.
std::uint64_t last_reacquire_to_gpu_ns = 0
 Nanoseconds from the transport first observing the fence to the first GPU-delivered block of the epoch that replaced it; zero until measured.

Static Public Attributes

static constexpr std::uint32_t kSchemaVersion = 4
static constexpr std::uint32_t kTerminalDispositionCount = 8
 Number of GpuAudioTerminalDisposition values counted by terminal_counts.

Detailed Description

Versioned, allocation-free status shared by native hosts and UI adapters.

A web or plugin-specific status object may project this into JSON, but must preserve the distinction between GPU production and CPU fallback. In particular, missed_blocks is not a synonym for fallback_blocks.

Member Data Documentation

◆ avg_block_us

double pulp::gpu_audio::GpuAudioStatus::avg_block_us = 0.0

◆ block_size

std::uint32_t pulp::gpu_audio::GpuAudioStatus::block_size = 0

◆ completion_mode

GpuAudioCompletionMode pulp::gpu_audio::GpuAudioStatus::completion_mode = GpuAudioCompletionMode::Unknown

◆ delivery_epoch_active

bool pulp::gpu_audio::GpuAudioStatus::delivery_epoch_active = false

◆ diagnostics_available

bool pulp::gpu_audio::GpuAudioStatus::diagnostics_available = false

◆ epoch

std::uint64_t pulp::gpu_audio::GpuAudioStatus::epoch = 0

◆ fallback_available

bool pulp::gpu_audio::GpuAudioStatus::fallback_available = false

◆ fallback_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::fallback_blocks = 0

◆ fallback_policy

MissPolicy pulp::gpu_audio::GpuAudioStatus::fallback_policy = MissPolicy{}

◆ gpu_kernel_available

bool pulp::gpu_audio::GpuAudioStatus::gpu_kernel_available = false

◆ input_dropped_frames

std::uint64_t pulp::gpu_audio::GpuAudioStatus::input_dropped_frames = 0

◆ kSchemaVersion

std::uint32_t pulp::gpu_audio::GpuAudioStatus::kSchemaVersion = 4
staticconstexpr

◆ kTerminalDispositionCount

std::uint32_t pulp::gpu_audio::GpuAudioStatus::kTerminalDispositionCount = 8
staticconstexpr

Number of GpuAudioTerminalDisposition values counted by terminal_counts.

◆ last_block_us

double pulp::gpu_audio::GpuAudioStatus::last_block_us = 0.0

◆ last_delivery_ns

std::uint64_t pulp::gpu_audio::GpuAudioStatus::last_delivery_ns = 0

◆ last_reacquire_to_gpu_ns

std::uint64_t pulp::gpu_audio::GpuAudioStatus::last_reacquire_to_gpu_ns = 0

Nanoseconds from the transport first observing the fence to the first GPU-delivered block of the epoch that replaced it; zero until measured.

◆ latency_samples

std::uint32_t pulp::gpu_audio::GpuAudioStatus::latency_samples = 0

◆ missed_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::missed_blocks = 0

◆ prepared_lead_blocks

std::uint32_t pulp::gpu_audio::GpuAudioStatus::prepared_lead_blocks = 0

◆ produced_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::produced_blocks = 0

◆ provider

GpuAudioProvider pulp::gpu_audio::GpuAudioStatus::provider = GpuAudioProvider{}

◆ provider_state

GpuAudioProviderState pulp::gpu_audio::GpuAudioStatus::provider_state = GpuAudioProviderState::Uninitialized

◆ reacquire_attempts

std::uint64_t pulp::gpu_audio::GpuAudioStatus::reacquire_attempts = 0

Provider replacements the transport attempted after a fence.

◆ reacquire_successes

std::uint64_t pulp::gpu_audio::GpuAudioStatus::reacquire_successes = 0

Attempts that opened a new delivery epoch on a new provider.

◆ recovery_reason

GpuAudioRecoveryReason pulp::gpu_audio::GpuAudioStatus::recovery_reason = GpuAudioRecoveryReason::None

The first cause latched in the current delivery epoch.

A successful automatic re-acquire opens a new epoch, so the cause that fenced the old one is replaced by the informational ProviderReacquired, with recovery_sequence set to the first block the new provider can deliver. The replaced cause remains in the trace (a Recovery record for the epoch change) and in the reacquire_* counters below.

◆ recovery_sequence

std::uint64_t pulp::gpu_audio::GpuAudioStatus::recovery_sequence = UINT64_MAX

◆ requested_engine

GpuAudioEngine pulp::gpu_audio::GpuAudioStatus::requested_engine = GpuAudioEngine::Unknown

◆ resynced_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::resynced_blocks = 0

◆ sample_rate

std::uint32_t pulp::gpu_audio::GpuAudioStatus::sample_rate = 0

◆ schema_version

std::uint32_t pulp::gpu_audio::GpuAudioStatus::schema_version = kSchemaVersion

◆ selected_engine

GpuAudioEngine pulp::gpu_audio::GpuAudioStatus::selected_engine = GpuAudioEngine::Unknown

◆ shadow_delivered_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_delivered_blocks = 0

Blocks delivered from the shadow instead of the GPU result.

◆ shadow_double_miss_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_double_miss_blocks = 0

Blocks where both the GPU result and the shadow missed the deadline.

◆ shadow_inline_cost_pct

float pulp::gpu_audio::GpuAudioStatus::shadow_inline_cost_pct = 0.0f

Inline shadow cost as a percentage of the callback budget.

◆ shadow_late_blocks

std::uint64_t pulp::gpu_audio::GpuAudioStatus::shadow_late_blocks = 0

Blocks whose shadow result was not ready in time.

◆ shadow_mode

GpuAudioShadowMode pulp::gpu_audio::GpuAudioStatus::shadow_mode = GpuAudioShadowMode::None

◆ shadow_model_differs

bool pulp::gpu_audio::GpuAudioStatus::shadow_model_differs = false

The shadow runs a different model from the GPU path, so its output is a substitute rather than a bit-identical fallback.

◆ terminal_counts

std::uint64_t pulp::gpu_audio::GpuAudioStatus::terminal_counts[kTerminalDispositionCount] = {}

Admitted blocks by terminal disposition, indexed by the numeric value of GpuAudioTerminalDisposition.

◆ timestamps_available

bool pulp::gpu_audio::GpuAudioStatus::timestamps_available = false

The documentation for this struct was generated from the following file: