![]() |
LiteFX 0.3.1.2022
Computer Graphics Engine
|
Implements the DirectX 12 PushConstantsLayout. More...
#include <dx12.hpp>
Inherits LiteFX::Rendering::PushConstantsLayout< DirectX12PushConstantsRange >.
Classes | |
class | DirectX12PushConstantsLayoutImpl |
Public Member Functions | |
DirectX12PushConstantsLayout (Array< UniquePtr< DirectX12PushConstantsRange > > &&ranges, const UInt32 &size) | |
Initializes a new push constants layout. More... | |
DirectX12PushConstantsLayout (const DirectX12PushConstantsLayout &)=delete | |
DirectX12PushConstantsLayout (DirectX12PushConstantsLayout &&)=delete | |
virtual | ~DirectX12PushConstantsLayout () noexcept |
virtual const UInt32 & | size () const noexcept override |
Returns the size (in bytes) of the push constants backing memory. More... | |
virtual const DirectX12PushConstantsRange & | range (const ShaderStage &stage) const override |
Returns the push constant range associated with the shader stage provided in stage . More... | |
virtual Array< const DirectX12PushConstantsRange * > | ranges () const noexcept override |
![]() | |
virtual | ~PushConstantsLayout () noexcept=default |
virtual Array< const push_constants_range_type * > | ranges () const noexcept=0 |
![]() | |
virtual | ~IPushConstantsLayout () noexcept=default |
virtual const UInt32 & | size () const noexcept=0 |
Returns the size (in bytes) of the push constants backing memory. More... | |
virtual const IPushConstantsRange & | range (const ShaderStage &stage) const =0 |
Returns the push constant range associated with the shader stage provided in stage . More... | |
Array< const IPushConstantsRange * > | ranges () const noexcept |
Returns all push constant ranges. More... | |
Protected Member Functions | |
virtual Array< DirectX12PushConstantsRange * > | ranges () noexcept |
Returns an array of pointers to the push constant ranges of the layout. More... | |
Friends | |
class | DirectX12PipelineLayout |
Additional Inherited Members | |
![]() | |
using | push_constants_range_type = DirectX12PushConstantsRange |
Implements the DirectX 12 PushConstantsLayout.
In DirectX 12, push constants map to root constants. Those are 32 bit values that are directly stored on the root signature. Thus, push constants can bloat your root signature, since all the required memory is directly reserved on it. The way they are implemented is, that each range gets directly written in 4 byte chunks into the command buffer. Thus, overlapping is not directly supported (as opposed to Vulkan). If you have overlapping push constants ranges, the overlap will be duplicated in the root signature.
|
explicit |
Initializes a new push constants layout.
ranges | The ranges contained by the layout. |
size | The overall size (in bytes) of the push constants backing memory. |
|
delete |
|
delete |
|
virtualdefaultnoexcept |
|
overridevirtual |
Returns the push constant range associated with the shader stage provided in stage .
Implements LiteFX::Rendering::IPushConstantsLayout.
|
overridevirtualnoexcept |
|
protectedvirtualnoexcept |
Returns an array of pointers to the push constant ranges of the layout.
|
overridevirtualnoexcept |
Returns the size (in bytes) of the push constants backing memory.
Implements LiteFX::Rendering::IPushConstantsLayout.
|
friend |