60 RHIPipelineStageBits::VertexShader | RHIPipelineStageBits::MeshShader | RHIPipelineStageBits::RayTracingShader |
61 RHIPipelineStageBits::AllGraphics;
63 RHIResourceAccessBits::RenderTargetWrite | RHIResourceAccessBits::DepthStencilWrite |
64 RHIResourceAccessBits::TransferWrite | RHIResourceAccessBits::HostWrite;
66 RHIResourceAccessBits::RenderTargetRead | RHIResourceAccessBits::UniformRead |
67 RHIResourceAccessBits::TransferRead | RHIResourceAccessBits::HostRead;
125 while (
v >=
in.size())
237 case RHIDeviceQueueType::Undefined:
239 case RHIDeviceQueueType::Graphics:
241 case RHIDeviceQueueType::Compute:
244 throw std::runtime_error(
"Unhandled queue type");
298#pragma region Render Graph Setup
315 template <
typename T,
typename...
Args>
316 requires std::is_base_of_v<RenderPass, T>
320 CHECK_MSG(queue == RHIDeviceQueueType::Graphics || queue == RHIDeviceQueueType::Compute,
321 "Invalid queue type. Only Graphics and Compute queues are supported.");
325 queue = RHIDeviceQueueType::Graphics;
326 mSetup->trackedPasses.emplace_back(
329 mSetup->epilogue = handle;
347 template <
typename FSetup,
typename FRecord>
352 name, queue, priority, std::forward<FSetup>(
setup), std::forward<FRecord>(
record));
372 template <
typename T>
378 return mSetup->trackedResources.size() - 1;
389#pragma region Resource Binding
558 RHITextureSubresourceRange
const& range = {})
const;
566 RHITextureSubresourceRange
const& range = {})
const;
569#pragma region PSO Flags
578 RHIPipelineState::PipelineStateDesc::Rasterizer
const& rasterizer = {},
579 RHIPipelineState::PipelineStateDesc::DepthStencil
const&
depth_stencil = {}
592#pragma region Swapchain
608 return {
xy.x,
xy.y, 1};
611#pragma region Render Graph Runtime
628 CHECK_MSG(!
res.valueless_by_exception(),
"Resource handle {} is valueless", handle);
629 return res.Visit([](
auto* ptr) ->
Tv {
return ptr; },
630 [](
auto&
hdl) ->
Tv {
return hdl.Get(); });
642 CHECK_MSG(!view.valueless_by_exception(),
"Texture view handle {} is valueless", handle);
643 return view.Visit([](
auto&
hdl) ->
Tv {
return hdl.Get(); });
662 return tpass.pso.Get();
671 return tpass.pDescriptorSets;
678#pragma region Command Recording Helpers
737 template <
typename T>
744 {reinterpret_cast<const char*>(&data), sizeof(T)});
747#pragma region Frame Execution
794 return mSetup->trackedPasses[pass];
860#pragma region Debugging
#define ENUM_NAME_CONV_BEGIN(T)
Defines convince to_string() method and format_as() [fmt] for the respective enum class Example usage...
Definition Enums.hpp:82
#define ENUM_NAME(E)
Definition Enums.hpp:93
#define CHECK(expr)
Definition Logging.hpp:45
#define CHECK_MSG(expr, format_str,...)
Definition Logging.hpp:50
Implements a lock-free stack-based bump allocator.
Definition AllocatorStack.hpp:12
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
Atomic, lock-free Thread Pool implementation with fixed bounds.
Definition ThreadPool.hpp:58
Definition Command.hpp:35
Definition Descriptor.hpp:11
virtual uint32_t GetVkQueueFamily() const =0
Definition Device.hpp:104
Definition Device.hpp:188
Handle type for RHI Objects.
Definition Details.hpp:42
Definition PipelineState.hpp:8
Definition PipelineState.hpp:22
Scoped move-only RAII handle wrapper for RHI Objects.
Definition Details.hpp:86
Definition Resource.hpp:188
Definition Resource.hpp:169
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:78
PassHandle CreatePass(StringView name, RHIDeviceQueueType queue, size_t priority, FSetup &&setup, FRecord &&record)
Create a render pass from a Setup(Renderer*, PassHandle) and Record(Renderer*, PassHandle,...
Definition Renderer.hpp:348
void PassSetRasterizerFlags(PassHandle pass, RHIPipelineState::PipelineStateDesc::Rasterizer const &rasterizer={}, RHIPipelineState::PipelineStateDesc::DepthStencil const &depth_stencil={}) const
Sets the rasterizer and depth-stencil state for a graphics pass.
Definition Renderer.cpp:282
UniquePtr< ExecuteResources > mResources
Definition Renderer.hpp:157
void BeginSetup()
Begins the setup phase of the render graph.
Definition Renderer.cpp:27
const RendererDesc mDesc
Definition Renderer.hpp:149
RHICommandList * ExecuteAllocateCommandList(RHIDeviceQueueType queue, int thread_id=-1)
Definition Renderer.cpp:1266
RHIDeviceHandle< RHISwapchain > mSwapchain
Definition Renderer.hpp:187
void DeclareBufferAccess(PassHandle pass, ResourceHandle handle, RHIPipelineStage stage, RHIResourceAccess access=RHIResourceAccessBits::ShaderRead) const
Explicitly declares that this pass will access the buffer in the specified stage with the specified a...
Definition Renderer.cpp:57
void BindBufferShaderRead(PassHandle pass, ResourceHandle buffer, RHIPipelineStage stage) const
Declares this pass has shaders that will read from this buffer. e.g. Vertex, Index.
Definition Renderer.cpp:154
Vector< Pair< RHIDeviceQueueType, RHIDeviceQueue::SubmitDesc > > * mExecuteSubmits
Definition Renderer.hpp:207
State mState
Definition Renderer.hpp:146
void CmdBindDescriptorSet(PassHandle pass, RHICommandList *cmd, uint32_t set_index, RHIDeviceDescriptorSet *descriptor_set) const
Helper that binds a single descriptor set to the current command list.
Definition Renderer.cpp:1629
Vector< Vector< UniquePtr< ExecutePerThreadCommandLists > > > mExecutePerSwapCmds
Definition Renderer.hpp:222
RHIDeviceScopedHandle< RHIDeviceDescriptorSetLayout > mSwapDescriptorSetLayout
Definition Renderer.hpp:181
void BindDescriptorSet(PassHandle pass, StringView bind_point, RHIDeviceDescriptorSetLayout *layout)
Manually bind an existing descriptor set (layout) to the pipeline.
Definition Renderer.cpp:175
RHIDeviceSampler * DerefSampler(const ResourceHandle handle) const
Dereference a sampler handle to its underlying RHI sampler.
Definition Renderer.hpp:650
void ExecuteFrame()
Executes all passes in the render graph for one frame.
Definition Renderer.cpp:1281
void ExecuteBarrierSubresourceState(PassHandle pass, RHITexture *res, TrackedResource::SubresourceState &sta, RHIResourceAccess access, RHIPipelineStage stage, RHITextureLayout layout, ExecuteBarrierPCmdOrPBarrierList cmd) const
Definition Renderer.cpp:1112
RHIDeviceQueue * mGraphicsQueue
Definition Renderer.hpp:188
Vector< RHIDeviceDescriptorSet * > const & DerefDescriptorSets(const PassHandle pass) const
Dereference the built descriptor sets associated with a given pass.
Definition Renderer.hpp:667
uint32_t ExecuteGetQueueFamily(RHIDeviceQueueType queue) const
Helper to get the queue index of a queue type.
Definition Renderer.hpp:233
ResourceHandle BindTextureUAV(PassHandle pass, ResourceHandle texture, StringView bind_point, RHIPipelineStage stage, RHITextureViewDesc const &desc) const
Binds a texture for unordered (UAV) read-write access in shaders.
Definition Renderer.cpp:193
ResourceHandle CreateTextureView(PassHandle pass, ResourceHandle handle, RHITextureViewDesc const &desc) const
Definition Renderer.cpp:37
void BindTextureSampler(PassHandle pass, ResourceHandle sampler, StringView bind_point) const
Binds a sampler to the shader.
Definition Renderer.cpp:169
void ExecuteBarrierSubresource(PassHandle pass, TrackedResource &res, RHITextureSubresourceRange const &range, RHIResourceAccess access, RHIPipelineStage stage, RHITextureLayout layout, ExecuteBarrierPCmdOrPBarrierList cmd)
Executes barriers for a subresource range of a texture.
Definition Renderer.cpp:1145
ScopedArena mExecuteArena
Definition Renderer.hpp:201
void CmdBeginGraphics(PassHandle pass, RHICommandList *cmd, RHIExtent2D const &extent, Span< const Optional< RHIClearColor > > clear_rtv={}, Optional< RHIClearDepthStencil > const &clear_dsv=RHIClearDepthStencil{0.0f, 0u})
Helper that pushes correct descriptor sets and PSO to the current command list, and pushes correct Be...
Definition Renderer.cpp:1651
void CmdDispatch(PassHandle pass, RHICommandList *cmd, RHIExtent3D thread_size) const
Helper that dispatches a compute shader with the specified THREAD count.
Definition Renderer.cpp:1704
Mutex mDescPoolMutex
Definition Renderer.hpp:159
void BindBackbufferRTV(PassHandle pass, RHIPipelineState::PipelineStateDesc::Attachment::Blending const &blending={}) const
Definition Renderer.cpp:244
void BindVertexInput(PassHandle pass, RHIPipelineState::PipelineStateDesc::VertexInput const &info) const
Associates Vertex Input description with this pass.
Definition Renderer.cpp:112
void CmdSetPipeline(PassHandle pass, RHICommandList *cmd) const
Helper that sets the current pass's PSO and descriptor sets to the current command list.
Definition Renderer.cpp:1616
uint32_t mFrameSwaps
Definition Renderer.hpp:153
void FinalizePasses()
Definition Renderer.cpp:869
void BuildPipelineState(PassHandle pass)
Definition Renderer.cpp:465
void BindPass(PassHandle pass, PassHandle other)
Declares an inter-pass dependency, where the other pass should execute-before the current pass.
Definition Renderer.cpp:51
void BindBufferStorageRead(PassHandle pass, ResourceHandle buffer, RHIPipelineStage stage, StringView bind_point) const
Binds a read-only storage buffer to a specified binding point.
Definition Renderer.cpp:138
RHIDeviceScopedHandle< RHIDeviceSemaphore > mGraphicsTimeline
Definition Renderer.hpp:185
void SetSwapchain(RHIDeviceHandle< RHISwapchain > swapchain)
Update the swapchain to a new one. You must call this when the window is resized or the swapchain is ...
Definition Renderer.cpp:1008
String DbgDumpActivePasses() const
Definition Renderer.cpp:1760
RHIPipelineState * DerefPipelineState(const PassHandle pass) const
Dereference the automatically built pipeline state object handle associated with a given pass.
Definition Renderer.hpp:658
PassHandle CreatePassImpl(StringView name, RHIDeviceQueueType queue, size_t priority, Args &&... args)
Create a render pass from a RenderPass* implementation and add it to the render graph.
Definition Renderer.hpp:317
uint32_t GetFrameSwaps() const
Get the number of frames that can be simultaneously in-flight.
Definition Renderer.hpp:755
AllocatorStack mExecuteAlloc
Definition Renderer.hpp:204
Vector< FrameSyncObjects > mSwaps
Definition Renderer.hpp:183
ResourceHandle BindTextureRTV(PassHandle pass, ResourceHandle texture, RHITextureViewDesc const &desc, RHIPipelineState::PipelineStateDesc::Attachment::Blending const &blending={}) const
Binds a texture as a Render Target View (color attachment) for a graphics pass.
Definition Renderer.cpp:207
String DbgDumpExecutionGroups() const
Definition Renderer.cpp:1773
uint64_t mFrameSwapped
Definition Renderer.hpp:151
ResourceHandle BindTextureDSV(PassHandle pass, ResourceHandle texture, RHITextureViewDesc const &desc) const
Binds a texture as a Depth-Stencil View for a graphics pass.
Definition Renderer.cpp:225
RHIDeviceScopedHandle< RHIDeviceDescriptorPool > mDescPool
Definition Renderer.hpp:158
ThreadPool mExecuteThreadPool
Definition Renderer.hpp:209
void SetFrameSyncObjects()
Sets backbuffer views and sync primitives.
Definition Renderer.cpp:981
void BindBufferCopySrc(PassHandle pass, ResourceHandle buffer) const
Declares that this pass will read from the buffer via copy.
Definition Renderer.cpp:164
uint32_t mCurrentSwap
Definition Renderer.hpp:155
void DeclareTextureAccess(PassHandle pass, ResourceHandle handle, RHIPipelineStage stage, RHITextureSubresourceRange range={}, RHIResourceAccess access=RHIResourceAccessBits::ShaderRead, RHITextureLayout layout=RHITextureLayout::ShaderReadOnly) const
Declares that this pass will access the texture in the specified stage with the specified access.
Definition Renderer.cpp:76
RHIExtent3D GetSwapchainExtent3D() const
Get the current swapchain extents as a 3D extent with depth 1.
Definition Renderer.hpp:604
UniquePtr< RendererSetup > mSetup
Definition Renderer.hpp:190
void CullPasses(PassHandle epilogue) const
Definition Renderer.cpp:312
Allocator * GetAllocator() const
Definition Renderer.hpp:676
void BindTextureCopyDst(PassHandle pass, ResourceHandle texture, RHITextureSubresourceRange const &range={}) const
Declares that this pass will write to the texture via copy / blit (transfer destination).
Definition Renderer.cpp:264
RHIExtent2D GetSwapchainExtent() const
Get the current swapchain extents.
Definition Renderer.hpp:596
RHIApplicationHandle< RHIDevice > mDevice
Definition Renderer.hpp:186
Allocator * mAllocator
Definition Renderer.hpp:147
void ExecuteBarriers(TrackedPass &pass, ExecuteBarrierPCmdOrPBarrierList cmd)
Executes all barriers for a pass.
Definition Renderer.cpp:1188
void BindBufferCopyDst(PassHandle pass, ResourceHandle buffer) const
Declares that this pass will write to the buffer via copy.
Definition Renderer.cpp:159
void BeginExecute()
Resets the temporary execution allocator , and waits for the possibly multi-buffered next frame to fi...
Definition Renderer.cpp:1059
TrackedPass const & GetTrackedPass(PassHandle pass)
Retrieves an internal tracked pass associated with the given handle, read-only.
Definition Renderer.hpp:791
void EndExecute()
Ends the execution phase and performs GPU submission, possibly with a RHIDeviceQueue::Present.
Definition Renderer.cpp:1565
Variant< RHIBuffer *, RHITexture * > DerefResource(const ResourceHandle handle) const
Dereference a resource handle to its underlying RHI resource.
Definition Renderer.hpp:623
void FinalizeResources()
Definition Renderer.cpp:889
uint32_t mCurrentSync
Definition Renderer.hpp:154
void BindPushConstant(PassHandle pass, RHIShaderStage stage, size_t offset, size_t size) const
Declares a range of Push Constant used in a stage.
Definition Renderer.cpp:120
void ExecuteBarrierBuffer(PassHandle pass, TrackedResource &res, RHIResourceAccess access, RHIPipelineStage stage, ExecuteBarrierPCmdOrPBarrierList cmd)
Executes barriers for a whole buffer.
Definition Renderer.cpp:1160
Span< const uint64_t > DbgProfilePassTiming(uint64_t sync, float &resolutionNS) const
Retrieves timings for all passes executed in the last frame associated with the specified sync index....
Definition Renderer.cpp:1788
String DbgDumpGraphviz() const
Definition Renderer.cpp:1712
void BindTextureCopySrc(PassHandle pass, ResourceHandle texture, RHITextureSubresourceRange const &range={}) const
Declares that this pass will read from the texture via copy / blit (transfer source).
Definition Renderer.cpp:273
void BindBufferUnordered(PassHandle pass, ResourceHandle buffer, RHIPipelineStage stage, StringView bind_point) const
Binds a buffer for unordered (UAV) access from shaders (read and/or write in any order).
Definition Renderer.cpp:146
RHIDeviceQueue * mComputeQueue
Definition Renderer.hpp:188
Vector< Pair< Variant< RHIBuffer *, RHITexture * >, RHICommandList::TransitionDesc > > ExecuteBarrierList
Definition Renderer.hpp:247
RHIDeviceScopedHandle< RHIDeviceSemaphore > mComputeTimeline
Definition Renderer.hpp:185
void CmdSetPushConstant(PassHandle pass, RHICommandList *cmd, RHIShaderStage stage, size_t offset, T const &data)
Helper that sets a Push Constant range data with a single l-value.
Definition Renderer.hpp:738
void BindShader(PassHandle pass, RHIShaderStage stage, StringView entry_point, const char *shader_path, Span< const char > specializationData={}) const
Binds shader file path to a certain pass at a certain stage.
Definition Renderer.cpp:98
ResourceHandle BindTextureSRV(PassHandle pass, ResourceHandle texture, StringView bind_point, RHIPipelineStage stage, RHITextureViewDesc const &desc) const
Binds a texture as a Shader Resource View (read-only sampling / fetch).
Definition Renderer.cpp:180
bool IsAsyncComputeEnabled() const
Returns whether async compute is enabled.
Definition Renderer.hpp:802
RHIDeviceIdleGuard mWaitIdle
Definition Renderer.hpp:292
uint64_t DbgProfilePresentTiming(uint64_t sync, float &resolutionNS) const
Retrieves the total ticks between two subsequent swapchain presents by EndExecute,...
Definition Renderer.cpp:1794
uint64_t GetSync() const
Retrieves the current synchronization index.
Definition Renderer.hpp:787
State
Definition Renderer.hpp:138
bool IsPresentEnabled() const
Returns whether the swapchain is enabled.
Definition Renderer.hpp:809
void BuildPipelineStateAll()
Definition Renderer.cpp:841
RHIExtent3D CmdGetComputeLocalSize(PassHandle pass) const
Helper that retrieves the local size declared by a compute pass.
Definition Renderer.cpp:1696
uint32_t GetSwap() const
Retrieves the current swap index at the time of ExecuteFrame().
Definition Renderer.hpp:773
uint64_t GetFrame() const
Retrieves the current frame number.
Definition Renderer.hpp:762
State GetState() const
Retrieves the current state of the renderer.
Definition Renderer.hpp:751
RHITextureView * DerefTextureView(const ResourceHandle handle) const
Dereference a texture view handle to its underlying RHI texture view.
Definition Renderer.hpp:637
void EndSetup()
Finish setting up the render graph.
Definition Renderer.cpp:292
void BindBufferUniform(PassHandle pass, ResourceHandle buffer, RHIPipelineStage stage, StringView bind_point) const
Binds a uniform buffer to a specified binding point in a rendering pass.
Definition Renderer.cpp:130
ResourceHandle CreateSampler(RHIDeviceSampler::SamplerDesc const &desc) const
Creates a sampler with the specified name and descriptor.
Definition Renderer.cpp:45
ResourceHandle CreateResource(StringView name, T const &desc)
Create a new resource to be used in the render graph.
Definition Renderer.hpp:373
void BindBackbufferUAV(PassHandle pass, int set_index) const
Binds the backbuffer as RW access at binding 0 of set index.
Definition Renderer.cpp:254
RHIDeviceScopedHandle< RHIDeviceDescriptorPool > mSwapDescriptorPool
Definition Renderer.hpp:180
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:130
std::basic_string< char > String
Alias for std::basic_string<char>, without an explicit allocator constructor.
Definition Container.hpp:112
std::mutex Mutex
Definition Thread.hpp:10
std::map< K, V, Predicate, StlAllocator< Pair< const K, V > > > Map
std::map with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:160
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:55
std::unique_ptr< T, Deleter > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:166
T * Construct(Allocator *resource, Args &&...args)
Convenience placement new with object of type T using a Foundation::Core::Allocator.
Definition Allocator.hpp:149
std::span< T > Span
Alias for std::span
Definition Container.hpp:60
std::optional< T > Optional
Alias for std::optional
Definition Container.hpp:26
const uint32_t kCommandQueueTransferIgnored
Definition Command.hpp:34
RHITextureLayout
Definition Common.hpp:144
glm::vec< 3, uint32_t > RHIExtent3D
Definition Common.hpp:11
RHIDeviceQueueType
Definition Common.hpp:107
Pair< float, uint32_t > RHIClearDepthStencil
Definition Common.hpp:18
static constexpr Handle kInvalidHandle
Definition Details.hpp:9
glm::vec< 2, uint32_t > RHIExtent2D
Definition Common.hpp:10
Core functionalities for rendering, including the Frame Graph implementation.
Definition Bindless.cpp:2
size_t ResourceHandle
Definition RenderPass.hpp:11
size_t PassHandle
Definition RenderPass.hpp:10
const RHIResourceAccessBits kAllShaderWrites
Definition Renderer.hpp:62
constexpr size_t kMaxRenderPasses
Definition Renderer.hpp:54
const RHIResourceAccessBits kAllShaderReads
Definition Renderer.hpp:65
const RHIPipelineStage kComputeStagesMask
Definition Renderer.hpp:59
constexpr size_t kExecuteArenaSize
Definition Renderer.hpp:58
constexpr size_t kMaxCommandListsPerThread
Definition Renderer.hpp:56
RAII wrapper for an arena allocated from an Allocator.
Definition Allocator.hpp:44
Extended std::variant with C++23 visit() behavior and convenience Get()/GetIf() methods.
Definition Variant.hpp:17
Definition Command.hpp:41
RAII guard to wait for device idle on destruction.
Definition Device.hpp:299
Definition Device.hpp:110
Definition Resource.hpp:124
Definition Resource.hpp:164
Parameters for Renderer creation.
Definition Renderer.hpp:16
uint32_t threadCount
Number of worker threads to use for recording command lists.
Definition Renderer.hpp:43
bool asyncCompute
Enable Async Compute support.
Definition Renderer.hpp:31
bool present
Enable presentation support.
Definition Renderer.hpp:38
RHIPipelineStateCache * pipelineCache
Optional PSO cache to potentially speed up pipeline state recompilation in Setup time.
Definition Renderer.hpp:48
Definition Renderer.hpp:211
Vector< RHICommandPoolScopedHandle< RHICommandList > > computeCmds
Definition Renderer.hpp:213
RHICommandList * AllocateCompute()
Definition Renderer.cpp:1256
size_t graphicsCtr
Definition Renderer.hpp:215
RHIDeviceScopedHandle< RHICommandPool > computePool
Definition Renderer.hpp:212
RHICommandList * AllocateGraphics()
Definition Renderer.cpp:1246
RHIDeviceScopedHandle< RHICommandPool > graphicsPool
Definition Renderer.hpp:212
Vector< RHICommandPoolScopedHandle< RHICommandList > > graphicsCmds
Definition Renderer.hpp:213
size_t computeCtr
Definition Renderer.hpp:215
void Reset()
Definition Renderer.cpp:1239
Definition Renderer.hpp:162
ResourceHandle backbuffer
Definition Renderer.hpp:171
RHIDeviceScopedHandle< RHIDeviceQueryPool > dbgQueryPool
Definition Renderer.hpp:173
RHIDeviceScopedHandle< RHIDeviceFence > computeFence
Definition Renderer.hpp:166
RHIDeviceScopedHandle< RHIDeviceFence > graphicsFence
Definition Renderer.hpp:166
uint64_t dbgSwapLastPresentToPresentTicks
Definition Renderer.hpp:177
FrameSyncObjects(size_t swapIndex, Allocator *alloc)
Definition Renderer.hpp:178
const size_t swapIndex
Definition Renderer.hpp:164
Vector< uint64_t > dbgQueryPassTimestampsResults
Definition Renderer.hpp:174
RHITextureScopedHandle< RHITextureView > view
Definition Renderer.hpp:168
RHIDeviceScopedHandle< RHIDeviceSemaphore > render
Definition Renderer.hpp:165
RHIDeviceScopedHandle< RHIDeviceSemaphore > present
Definition Renderer.hpp:165
RHIDeviceDescriptorPoolScopedHandle< RHIDeviceDescriptorSet > viewSet
Definition Renderer.hpp:169
std::chrono::steady_clock::time_point dbgSwapLastPresentTick
Definition Renderer.hpp:176
Definition Renderer.hpp:101
const int groupIndex
Definition Renderer.hpp:102
Vector< PassHandle > passes
Definition Renderer.hpp:106
int graphicsGroupIndex
Definition Renderer.hpp:103
bool isLastGraphics
Definition Renderer.hpp:109
int computeGroupIndex
Definition Renderer.hpp:104
Vector< ResourceHandle > resources
Definition Renderer.hpp:108
bool isLastCompute
Definition Renderer.hpp:110
ExecutionGroups(int groupIndex, RHIDeviceQueueType queue, Allocator *allocator)
Definition Renderer.hpp:112
const RHIDeviceQueueType queue
Definition Renderer.hpp:105
Helper class containing all states pertaining to Renderer's Setup phase.
Definition Renderer.hpp:83
Vector< ExecutionGroups > executionGroups
Definition Renderer.hpp:117
PassHandle lastBackbufferProducer
Definition Renderer.hpp:89
bool executionAnyCompute
Definition Renderer.hpp:118
int executionNumGraphicsGroups
Definition Renderer.hpp:119
Vector< PassHandle > execution
Definition Renderer.hpp:96
Vector< Vector< Pair< PassHandle, ResourceHandle > > > graph
Definition Renderer.hpp:84
Vector< TrackedPass > trackedPasses
Definition Renderer.hpp:86
Map< ResourceHandle, Pair< PassHandle, PassHandle > > activeResources
Definition Renderer.hpp:94
int executionNumComputeGroups
Definition Renderer.hpp:119
Vector< PassHandle > in
Definition Renderer.hpp:85
void add_edge(const PassHandle u, const PassHandle v, const ResourceHandle hdl)
Definition Renderer.hpp:120
PassHandle epilogue
Definition Renderer.hpp:98
Vector< RHIDeviceSampler::SamplerDesc > trackedSamplers
Definition Renderer.hpp:92
Map< RHIDescriptorType, uint32_t > bindingCounts
Definition Renderer.hpp:97
Vector< TrackedResource > trackedResources
Definition Renderer.hpp:87
Vector< Pair< ResourceHandle, RHITextureViewDesc > > trackedViews
Definition Renderer.hpp:91
bool executionAnyGraphics
Definition Renderer.hpp:118
RendererSetup(Allocator *allocator)
Definition Renderer.hpp:129
Internal tracking information for a render pass in the frame graph.
Definition RenderPass.hpp:77
Definition RenderResource.hpp:53
Internal tracking information for a resource in the frame graph.
Definition RenderResource.hpp:16