Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::view::WaveformGpuResourceCache Class Reference

Metadata-only LRU for backend-owned waveform resources. More...

#include <waveform_gpu_primitives.hpp>

Public Member Functions

 WaveformGpuResourceCache (std::size_t capacity=8)
bool prepare (std::size_t capacity, std::vector< WaveformGpuResourceRecord > *evicted_records=nullptr)
std::vector< WaveformGpuResourceRecord > clear_and_return_records ()
WaveformGpuResourcePutResult put (const WaveformGpuUploadKey &key, std::uint64_t resource_id, std::size_t bytes, std::uint64_t backend_generation=1)
const WaveformGpuResourceRecord * find (const WaveformGpuUploadKey &key) noexcept
const WaveformGpuResourceRecord * find (const WaveformGpuUploadKey &key, std::uint64_t backend_generation) noexcept
bool erase (const WaveformGpuUploadKey &key, WaveformGpuResourceRecord &removed_record) noexcept
WaveformGpuResourceCacheStats stats () const noexcept
std::size_t capacity () const noexcept
std::size_t size () const noexcept

Detailed Description

Metadata-only LRU for backend-owned waveform resources.

The cache stores stable keys and opaque resource IDs; platform renderers own the real GPU buffers/textures and may use resource_id however they choose. Any operation that removes a record can report it so the backend can release resources. Not thread-safe; async backend completions should marshal cache updates back to the owning render/control thread or use external synchronization.

Constructor & Destructor Documentation

◆ WaveformGpuResourceCache()

pulp::view::WaveformGpuResourceCache::WaveformGpuResourceCache ( std::size_t capacity = 8)
explicit

Member Function Documentation

◆ capacity()

std::size_t pulp::view::WaveformGpuResourceCache::capacity ( ) const
inlinenodiscardnoexcept

◆ clear_and_return_records()

std::vector< WaveformGpuResourceRecord > pulp::view::WaveformGpuResourceCache::clear_and_return_records ( )
nodiscard

◆ erase()

bool pulp::view::WaveformGpuResourceCache::erase ( const WaveformGpuUploadKey & key,
WaveformGpuResourceRecord & removed_record )
noexcept

◆ find() [1/2]

const WaveformGpuResourceRecord * pulp::view::WaveformGpuResourceCache::find ( const WaveformGpuUploadKey & key)
noexcept

◆ find() [2/2]

const WaveformGpuResourceRecord * pulp::view::WaveformGpuResourceCache::find ( const WaveformGpuUploadKey & key,
std::uint64_t backend_generation )
noexcept

◆ prepare()

bool pulp::view::WaveformGpuResourceCache::prepare ( std::size_t capacity,
std::vector< WaveformGpuResourceRecord > * evicted_records = nullptr )

◆ put()

WaveformGpuResourcePutResult pulp::view::WaveformGpuResourceCache::put ( const WaveformGpuUploadKey & key,
std::uint64_t resource_id,
std::size_t bytes,
std::uint64_t backend_generation = 1 )
nodiscard

◆ size()

std::size_t pulp::view::WaveformGpuResourceCache::size ( ) const
inlinenodiscardnoexcept

◆ stats()

WaveformGpuResourceCacheStats pulp::view::WaveformGpuResourceCache::stats ( ) const
nodiscardnoexcept

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