Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
waveform_gpu_render_controller.hpp
Go to the documentation of this file.
1#pragma once
2
12
15
16#include <cstddef>
17#include <cstdint>
18#include <span>
19#include <vector>
20
21namespace pulp::view {
22
24 bool backend_available = true;
25 // Opaque renderer-owned namespace for backend resources. Increment when a
26 // GPU device/surface/resource arena is recreated; 0 disables GPU cache use.
27 std::uint64_t backend_generation = 1;
28};
29
41
47 std::uint64_t backend_generation = 0;
48 // Caller-owned staging vertices are valid only for CpuFallbackReady and
49 // UploadStaticLayerReady, and only when vertices_written equals this count.
50 std::size_t required_vertices = 0;
51 std::size_t vertices_written = 0;
52 std::size_t upload_bytes = 0;
53 bool used_gpu_path = false;
54 bool cache_hit = false;
55 bool static_layer_dirty = false;
56};
57
67 public:
68 explicit WaveformGpuRenderController(std::size_t cache_capacity = 8);
69
70 bool prepare(std::size_t cache_capacity,
71 std::vector<WaveformGpuResourceRecord>* evicted_records = nullptr);
72
73 [[nodiscard]] WaveformGpuRenderDecision
75 const WaveformGpuRenderContext& context,
76 std::span<WaveformPeakVertex> staging_vertices) noexcept;
77
79 commit_uploaded_resource(const WaveformGpuUploadKey& key, std::uint64_t resource_id,
80 std::size_t bytes, std::uint64_t backend_generation = 1);
81
83 commit_uploaded_resource(const WaveformGpuRenderDecision& decision, std::uint64_t resource_id,
84 std::uint64_t current_backend_generation);
85
86 bool erase(const WaveformGpuUploadKey& key, WaveformGpuResourceRecord& removed_record) noexcept;
87
88 [[nodiscard]] std::vector<WaveformGpuResourceRecord> clear_and_return_records();
89
90 [[nodiscard]] WaveformGpuResourceCacheStats stats() const noexcept;
91 [[nodiscard]] std::size_t capacity() const noexcept {
92 return cache_.capacity();
93 }
94 [[nodiscard]] std::size_t size() const noexcept {
95 return cache_.size();
96 }
97
98 private:
100};
101
102} // namespace pulp::view
Definition waveform_overview.hpp:89
WaveformGpuResourceCacheStats stats() const noexcept
std::size_t capacity() const noexcept
Definition waveform_gpu_render_controller.hpp:91
bool erase(const WaveformGpuUploadKey &key, WaveformGpuResourceRecord &removed_record) noexcept
std::size_t size() const noexcept
Definition waveform_gpu_render_controller.hpp:94
std::vector< WaveformGpuResourceRecord > clear_and_return_records()
WaveformGpuRenderController(std::size_t cache_capacity=8)
WaveformGpuResourcePutResult commit_uploaded_resource(const WaveformGpuUploadKey &key, std::uint64_t resource_id, std::size_t bytes, std::uint64_t backend_generation=1)
WaveformGpuResourcePutResult commit_uploaded_resource(const WaveformGpuRenderDecision &decision, std::uint64_t resource_id, std::uint64_t current_backend_generation)
WaveformGpuRenderDecision plan_render(const pulp::audio::WaveformOverview &thumbnail, const WaveformGpuLayerPlan &plan, const WaveformGpuRenderContext &context, std::span< WaveformPeakVertex > staging_vertices) noexcept
bool prepare(std::size_t cache_capacity, std::vector< WaveformGpuResourceRecord > *evicted_records=nullptr)
Metadata-only LRU for backend-owned waveform resources.
Definition waveform_gpu_primitives.hpp:130
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
WaveformGpuRenderActionKind
Definition waveform_gpu_render_controller.hpp:30
@ DrawCachedStaticLayer
Definition waveform_gpu_render_controller.hpp:38
@ NoOpBackendUnavailable
Definition waveform_gpu_render_controller.hpp:32
@ NoOpInvalidPlan
Definition waveform_gpu_render_controller.hpp:31
@ UploadStaticLayerReady
Definition waveform_gpu_render_controller.hpp:37
@ PlayheadOnlyRedraw
Definition waveform_gpu_render_controller.hpp:39
@ NoOpVertexFillFailed
Definition waveform_gpu_render_controller.hpp:35
@ CpuFallbackReady
Definition waveform_gpu_render_controller.hpp:36
@ NoOpCpuFallbackUnavailable
Definition waveform_gpu_render_controller.hpp:33
@ NoOpStagingTooSmall
Definition waveform_gpu_render_controller.hpp:34
STL namespace.
Definition waveform_gpu_primitives.hpp:72
Definition waveform_gpu_render_controller.hpp:23
std::uint64_t backend_generation
Definition waveform_gpu_render_controller.hpp:27
bool backend_available
Definition waveform_gpu_render_controller.hpp:24
Definition waveform_gpu_render_controller.hpp:42
WaveformPlayheadOverlay playhead
Definition waveform_gpu_render_controller.hpp:46
std::size_t upload_bytes
Definition waveform_gpu_render_controller.hpp:52
std::uint64_t backend_generation
Definition waveform_gpu_render_controller.hpp:47
std::size_t vertices_written
Definition waveform_gpu_render_controller.hpp:51
WaveformGpuResourceRecord cached_resource
Definition waveform_gpu_render_controller.hpp:45
WaveformGpuRenderActionKind action
Definition waveform_gpu_render_controller.hpp:43
bool used_gpu_path
Definition waveform_gpu_render_controller.hpp:53
bool static_layer_dirty
Definition waveform_gpu_render_controller.hpp:55
WaveformGpuUploadKey upload_key
Definition waveform_gpu_render_controller.hpp:44
std::size_t required_vertices
Definition waveform_gpu_render_controller.hpp:50
bool cache_hit
Definition waveform_gpu_render_controller.hpp:54
Definition waveform_gpu_primitives.hpp:107
Definition waveform_gpu_primitives.hpp:116
Definition waveform_gpu_primitives.hpp:97
Definition waveform_gpu_primitives.hpp:29
Definition waveform_editor_primitives.hpp:214
Backend-neutral waveform thumbnail upload and composition planning helpers.