10 using namespace RenderCore;
71 "Bad alignment for type. Type must be aligned on multiples of {}",
alignment);
72 return {
reinterpret_cast<T*
>(
data),
size /
sizeof(
T)};
116 template <
typename T>
#define CHECK_MSG(expr, format_str,...)
Definition Logging.hpp:31
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
Definition Device.hpp:131
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:78
Scene data management for asynchronous data updates/uploads on the GPU.
Definition GPUScene.hpp:50
Pair< size_t, size_t > QueryShared(VirtualAllocation allocation)
Definition GPUScene.cpp:42
void UpdateConst(VirtualAllocation allocation, Span< const char > data)
Updates a previously allocated Const allocation.
Definition GPUScene.cpp:63
StagedDoubleBuffer mConst
Definition GPUScene.hpp:85
void FreeConst(VirtualAllocation allocation)
Frees a previously allocated const.
Definition GPUScene.cpp:71
VirtualAllocator mConstAlloc
Definition GPUScene.hpp:86
void UpdateShared(VirtualAllocation allocation, Span< const char > data)
Updates a previously allocated Shared allocation.
Definition GPUScene.cpp:43
Vector< Pair< size_t, size_t > > mSharedUpdateRegions
Definition GPUScene.hpp:83
Span< T > MapInstanceData()
Maps the instance data for writing. The returned span is valid until UnmapInstanceData is called.
Definition GPUScene.hpp:117
StagedDoubleBuffer mInstance
Definition GPUScene.hpp:77
void FreeShared(VirtualAllocation allocation)
Frees a previously allocated Shared allocation.
Definition GPUScene.cpp:51
void UnmapInstanceData()
Unmaps the instance data, allowing other threads to map it again.
Definition GPUScene.hpp:127
Vector< Pair< size_t, size_t > > mConstUpdateRegions
Definition GPUScene.hpp:87
VirtualAllocation PushShared(Span< const char > data, size_t alignment)
Push a block of data into the Shared buffer.
Definition GPUScene.cpp:33
Pair< size_t, size_t > QueryConst(VirtualAllocation id)
Query a previous const allocation.
Definition GPUScene.cpp:62
StagedDoubleBuffer mShared
Definition GPUScene.hpp:81
VirtualAllocation PushConst(Span< const char > data, size_t alignment)
Push a block of data into the Const buffer.
Definition GPUScene.cpp:53
Async::Mutex mInstanceMutex
Definition GPUScene.hpp:79
void CreateUpdatePasses(Renderer *renderer, ResourceHandle &outInstanceBuffer, ResourceHandle &outSharedBuffer, ResourceHandle &outConstBuffer, RHIDeviceQueueType queue=RHIDeviceQueueType::Graphics)
Creates a pass that performs per-frame updates with correct synchronization.
Definition GPUScene.cpp:73
bool mInstanceDirty
Definition GPUScene.hpp:78
VirtualAllocator mSharedAlloc
Definition GPUScene.hpp:82
Allocator * mAllocator
Definition GPUScene.hpp:75
Helper class for GPU buffer updates.
Definition StagingBuffer.hpp:72
Thread-safe wrapper around VulkanMemoryAllocator's Virtual Allocator interface.
Definition VirtualAllocator.hpp:26
std::mutex Mutex
Definition Future.hpp:15
std::unique_ptr< T, StlDeleter< T > > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:161
RHIDeviceQueueType
Definition Common.hpp:69
size_t ResourceHandle
Definition RenderPass.hpp:12
Reference implementations of real-time rendering routines.
Definition Application.hpp:18
uint32_t VirtualAllocation
Definition VirtualAllocator.hpp:9
Definition GPUScene.hpp:13
constexpr size_t totalBudget() const
Definition GPUScene.hpp:23
size_t instanceAlignment
Definition GPUScene.hpp:16
constexpr size_t totalStaging() const
Definition GPUScene.hpp:24
size_t constBudget
Definition GPUScene.hpp:21
size_t instanceBudget
Definition GPUScene.hpp:15
size_t constStaging
Definition GPUScene.hpp:22
size_t sharedStaging
Definition GPUScene.hpp:19
size_t sharedBudget
Definition GPUScene.hpp:18
Internal staged buffer with a CPU-side (non-driver) data for immediate writes.
Definition GPUScene.hpp:55
~StagedDoubleBuffer()
Definition GPUScene.cpp:19
Async::Mutex mutex
Definition GPUScene.hpp:62
Span< T > View()
Definition GPUScene.hpp:68
StagedBuffer buffer
Definition GPUScene.hpp:61
char *const data
Definition GPUScene.hpp:57
Allocator *const alloc
Definition GPUScene.hpp:56
const size_t alignment
Definition GPUScene.hpp:59
const size_t size
Definition GPUScene.hpp:58