#include <IndirectBufferSignature.h>
Inherits AZ::RHI::MultiDeviceObject.
Public Member Functions | |
| AZ_CLASS_ALLOCATOR (IndirectBufferSignature, AZ::SystemAllocator, 0) | |
| AZ_RTTI (IndirectBufferSignature, "{3CCFF81D-DC5E-4B12-AC05-DC26D5D0C65C}", Base) | |
| AZ_RHI_MULTI_DEVICE_OBJECT_GETTER (IndirectBufferSignature) | |
| ResultCode | Init (MultiDevice::DeviceMask deviceMask, const IndirectBufferSignatureDescriptor &descriptor) |
| uint32_t | GetByteStride () const |
| Returns the stride in bytes of the command sequence defined by the provided layout. | |
| uint32_t | GetOffset (IndirectCommandIndex index) const |
| const IndirectBufferSignatureDescriptor & | GetDescriptor () const |
| const IndirectBufferLayout & | GetLayout () const |
| void | Shutdown () final |
Public Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| AZ_RTTI (MultiDeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object) | |
| bool | IsInitialized () const |
| Returns whether the device object is initialized. | |
| AZ_FORCE_INLINE bool | IsDeviceSet (int deviceIndex) const |
| MultiDevice::DeviceMask | GetDeviceMask () const |
Public Member Functions inherited from AZ::RHI::Object | |
| AZ_RTTI (Object, "{E43378F1-2331-4173-94B8-990ED20E6003}") | |
| void | SetName (const Name &name) |
| Sets the name of the object. | |
| const Name & | GetName () const |
| Returns the name set on the object by SetName. | |
| uint32_t | use_count () |
| Returns the current use count of the object. | |
Additional Inherited Members | |
Static Public Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| template<typename T > | |
| static AZ_FORCE_INLINE void | IterateDevices (MultiDevice::DeviceMask deviceMask, T callback) |
Protected Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| void | Init (MultiDevice::DeviceMask deviceMask) |
| The derived class should call this method to assign the device. | |
| void | Shutdown () override |
| Clears the current bound device to null. | |
| template<typename T > | |
| AZ_FORCE_INLINE void | IterateDevices (T callback) |
| Helper method that will iterate over all selected devices and call the provided callback. | |
| template<typename T , typename U > | |
| AZ_FORCE_INLINE decltype(auto) | IterateObjects (U callback) |
| template<typename T , typename U > | |
| AZ_FORCE_INLINE decltype(auto) | IterateObjects (U callback) const |
| template<typename T > | |
| AZ_FORCE_INLINE Ptr< T > | GetDeviceObject (int deviceIndex) const |
Protected Member Functions inherited from AZ::RHI::Object | |
| void | add_ref () const |
| void | release () const |
Protected Attributes inherited from AZ::RHI::MultiDeviceObject | |
| AZStd::unordered_map< int, Ptr< DeviceObject > > | m_deviceObjects |
| A map of all device-specific objects, indexed by the device index. | |
Protected Attributes inherited from AZ::RHI::Object | |
| AZStd::atomic_int | m_useCount = 0 |
The IndirectBufferSignature is an implementation object that represents the signature of the commands contained in an Indirect Buffer. Indirect Buffers hold the commands that will be used for doing Indirect Rendering.
It also exposes implementation dependent offsets for the commands in a layout. This information is useful when writing commands into a buffer.
| uint32_t AZ::RHI::IndirectBufferSignature::GetOffset | ( | IndirectCommandIndex | index | ) | const |
Returns the offset of the command in the position indicated by the index.
| index | The location in the layout of the command. |
| ResultCode AZ::RHI::IndirectBufferSignature::Init | ( | MultiDevice::DeviceMask | deviceMask, |
| const IndirectBufferSignatureDescriptor & | descriptor | ||
| ) |
Initialize an DeviceIndirectBufferSignature object.
| deviceMask | The deviceMask denoting all devices that will contain the signature. |
| descriptor | Descriptor with the necessary information for initializing the signature. |
|
finalvirtual |
Shuts down the object. Derived classes can make this public if it fits with their lifecycle model (i.e. if they use an explicit Init / Shutdown). By default, it is private in order to maintain consistency with a simpler RAII lifecycle.
Reimplemented from AZ::RHI::Object.