Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
gpu_audio_status.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4
5namespace pulp::gpu_audio {
6
7// Defined in gpu_audio_node.hpp and gpu_audio_capability.hpp, which include
8// this header: GpuAudioNode::status_snapshot() returns GpuAudioStatus by value,
9// so the status definition cannot depend on the node header being complete.
10enum class MissPolicy;
11enum class GpuAudioProvider : std::uint8_t;
12
16enum class GpuAudioEngine : std::uint8_t {
18 Cpu = 1,
19 Gpu = 2,
20};
21
28enum class GpuAudioProviderState : std::uint8_t {
30 Ready = 1,
33};
34
57
60enum class GpuAudioCompletionMode : std::uint8_t {
65};
66
70enum class GpuAudioShadowMode : std::uint8_t {
71 None = 0,
72 Inline = 1,
73 Worker = 2,
74};
75
81 static constexpr std::uint32_t kSchemaVersion = 4;
84 static constexpr std::uint32_t kTerminalDispositionCount = 8;
85
90 GpuAudioProvider provider = GpuAudioProvider{}; // GpuAudioProvider::Unknown
91 MissPolicy fallback_policy = MissPolicy{}; // MissPolicy::Silence
92
93 std::uint32_t sample_rate = 0;
94 std::uint32_t block_size = 0;
95 std::uint32_t latency_samples = 0;
96 std::uint32_t prepared_lead_blocks = 0;
97 bool fallback_available = false;
99 std::uint64_t produced_blocks = 0;
100 std::uint64_t missed_blocks = 0;
101 std::uint64_t fallback_blocks = 0;
102 std::uint64_t resynced_blocks = 0;
103 std::uint64_t input_dropped_frames = 0;
104 double last_block_us = 0.0;
105 double avg_block_us = 0.0;
106 // Appended after the v1 fields so positional aggregate initialization of
107 // the installed status prefix remains source-compatible.
115 std::uint64_t recovery_sequence = UINT64_MAX;
116 // Schema v3, appended after the v2 fields for the same reason.
117 std::uint64_t epoch = 0;
124 std::uint64_t last_delivery_ns = 0;
126 // CPU shadow reporting. Still schema v3: these were appended before any
127 // release carried v3, so kSchemaVersion does not move for them.
132 std::uint64_t shadow_delivered_blocks = 0;
134 std::uint64_t shadow_late_blocks = 0;
136 std::uint64_t shadow_double_miss_blocks = 0;
140 // Schema v4: automatic re-acquire (GpuAudioRecoveryPolicy::AutoReacquire).
142 std::uint64_t reacquire_attempts = 0;
144 std::uint64_t reacquire_successes = 0;
147 std::uint64_t last_reacquire_to_gpu_ns = 0;
148};
149
150} // namespace pulp::gpu_audio
151
152// Kept for consumers that reach the capability and node types through this
153// header; included last because those headers include this one.
Definition flow_pans.hpp:19
@ Unavailable
Definition gpu_audio_capability.hpp:11
@ Cpu
A prepared CPU implementation with no GPU provider resources.
Definition gpu_audio_capability.hpp:16
GpuAudioRecoveryReason
First latched reason that a node entered recovery.
Definition gpu_audio_status.hpp:40
@ InvalidCallback
Definition gpu_audio_status.hpp:47
@ OfflineFence
Definition gpu_audio_status.hpp:46
@ InputSaturated
Definition gpu_audio_status.hpp:43
@ ProviderUnresponsive
The provider stopped completing work within its watchdog budget.
Definition gpu_audio_status.hpp:49
@ SequenceGap
Definition gpu_audio_status.hpp:42
@ ProviderLost
Definition gpu_audio_status.hpp:45
@ ProviderReacquired
Informational: a lost provider was re-acquired under an automatic recovery policy and delivery resume...
Definition gpu_audio_status.hpp:52
@ None
Definition gpu_audio_status.hpp:41
@ SustainedDeadlineMisses
The GPU is alive but repeatedly late; the node switched to CPU with periodic GPU probes.
Definition gpu_audio_status.hpp:55
@ ProviderFailure
Definition gpu_audio_status.hpp:44
MissPolicy
What the transport does for a block when the GPU result is not ready in time (the worker fell behind,...
Definition gpu_audio_node.hpp:12
@ None
Definition gpu_audio_capability.hpp:75
GpuAudioProvider
Provider identity when the selected path can establish it without exposing backend handles.
Definition gpu_audio_capability.hpp:21
@ Unknown
Definition gpu_audio_capability.hpp:22
GpuAudioEngine
The engine a host asked the audio provider to use.
Definition gpu_audio_status.hpp:16
@ Gpu
Definition gpu_audio_status.hpp:19
@ Unknown
Definition gpu_audio_status.hpp:17
GpuAudioShadowMode
How a node runs its CPU shadow alongside the GPU path.
Definition gpu_audio_status.hpp:70
@ Inline
Definition gpu_audio_status.hpp:72
@ Worker
Definition gpu_audio_status.hpp:73
@ None
Definition gpu_audio_status.hpp:71
GpuAudioProviderState
Lifecycle state suitable for UI, trace, and host diagnostics.
Definition gpu_audio_status.hpp:28
@ Degraded
Definition gpu_audio_status.hpp:31
@ Ready
Definition gpu_audio_status.hpp:30
@ Uninitialized
Definition gpu_audio_status.hpp:29
GpuAudioCompletionMode
How the non-realtime dispatcher services provider completions.
Definition gpu_audio_status.hpp:60
@ Unknown
Definition gpu_audio_status.hpp:61
@ TimedWaitAny
Definition gpu_audio_status.hpp:64
@ WaitAny
Definition gpu_audio_status.hpp:63
@ ProcessEvents
Definition gpu_audio_status.hpp:62
Versioned, allocation-free status shared by native hosts and UI adapters.
Definition gpu_audio_status.hpp:80
GpuAudioEngine requested_engine
Definition gpu_audio_status.hpp:87
std::uint64_t last_delivery_ns
Definition gpu_audio_status.hpp:124
std::uint32_t prepared_lead_blocks
Definition gpu_audio_status.hpp:96
std::uint64_t shadow_double_miss_blocks
Blocks where both the GPU result and the shadow missed the deadline.
Definition gpu_audio_status.hpp:136
bool timestamps_available
Definition gpu_audio_status.hpp:123
std::uint64_t shadow_delivered_blocks
Blocks delivered from the shadow instead of the GPU result.
Definition gpu_audio_status.hpp:132
GpuAudioProvider provider
Definition gpu_audio_status.hpp:90
std::uint64_t recovery_sequence
Definition gpu_audio_status.hpp:115
double last_block_us
Definition gpu_audio_status.hpp:104
std::uint64_t shadow_late_blocks
Blocks whose shadow result was not ready in time.
Definition gpu_audio_status.hpp:134
bool delivery_epoch_active
Definition gpu_audio_status.hpp:118
bool gpu_kernel_available
Definition gpu_audio_status.hpp:125
static constexpr std::uint32_t kSchemaVersion
Definition gpu_audio_status.hpp:81
std::uint64_t reacquire_successes
Attempts that opened a new delivery epoch on a new provider.
Definition gpu_audio_status.hpp:144
std::uint64_t input_dropped_frames
Definition gpu_audio_status.hpp:103
std::uint32_t latency_samples
Definition gpu_audio_status.hpp:95
std::uint64_t fallback_blocks
Definition gpu_audio_status.hpp:101
float shadow_inline_cost_pct
Inline shadow cost as a percentage of the callback budget.
Definition gpu_audio_status.hpp:130
std::uint32_t block_size
Definition gpu_audio_status.hpp:94
std::uint32_t sample_rate
Definition gpu_audio_status.hpp:93
static constexpr std::uint32_t kTerminalDispositionCount
Number of GpuAudioTerminalDisposition values counted by terminal_counts.
Definition gpu_audio_status.hpp:84
bool shadow_model_differs
The shadow runs a different model from the GPU path, so its output is a substitute rather than a bit-...
Definition gpu_audio_status.hpp:139
GpuAudioProviderState provider_state
Definition gpu_audio_status.hpp:89
GpuAudioCompletionMode completion_mode
Definition gpu_audio_status.hpp:122
std::uint64_t last_reacquire_to_gpu_ns
Nanoseconds from the transport first observing the fence to the first GPU-delivered block of the epoc...
Definition gpu_audio_status.hpp:147
std::uint64_t resynced_blocks
Definition gpu_audio_status.hpp:102
bool diagnostics_available
Definition gpu_audio_status.hpp:98
std::uint32_t schema_version
Definition gpu_audio_status.hpp:86
bool fallback_available
Definition gpu_audio_status.hpp:97
std::uint64_t produced_blocks
Definition gpu_audio_status.hpp:99
std::uint64_t terminal_counts[kTerminalDispositionCount]
Admitted blocks by terminal disposition, indexed by the numeric value of GpuAudioTerminalDisposition.
Definition gpu_audio_status.hpp:121
std::uint64_t missed_blocks
Definition gpu_audio_status.hpp:100
std::uint64_t epoch
Definition gpu_audio_status.hpp:117
MissPolicy fallback_policy
Definition gpu_audio_status.hpp:91
GpuAudioEngine selected_engine
Definition gpu_audio_status.hpp:88
double avg_block_us
Definition gpu_audio_status.hpp:105
GpuAudioShadowMode shadow_mode
Definition gpu_audio_status.hpp:128
GpuAudioRecoveryReason recovery_reason
The first cause latched in the current delivery epoch.
Definition gpu_audio_status.hpp:114
std::uint64_t reacquire_attempts
Provider replacements the transport attempted after a fence.
Definition gpu_audio_status.hpp:142