18 RHIDeviceQueueFlagsBits::Transfer};
46 .usage = RHIBufferUsageBits::TransferSource,
71 virtual void*
Map() = 0;
97 return {
static_cast<T*
>(p), count};
102 template <
typename T>
105 return static_cast<T*
>(
Map());
109 size_t offset = 0) = 0;
128 class RHITextureView;
129 template <
typename T>
131 template <
typename T>
204 size_t offset = 0) = 0;
Definition Resource.hpp:291
virtual void DebugSetObjectName(const char *name)=0
RHIAccelerationStructure(const RHIDevice &device, RHIAccelerationStructureDesc const &desc)
Definition Resource.hpp:297
const RHIAccelerationStructureDesc & mDesc
Definition Resource.hpp:294
const RHIDevice & mDevice
Definition Resource.hpp:293
Definition Resource.hpp:57
virtual void Flush(size_t offset=0, size_t size=kFullSize)=0
Flushes the mapped region to the device. Depending on the implementation, this may be a no-op.
virtual void DestroyAliasedBuffer(Handle handle)=0
virtual void Unmap()=0
Releases or unmaps a previously mapped resource. Implementations MUST guarantee that Unmap() is calle...
Span< T > MapSpan(size_t count=kFullSize)
Creates a span that maps a contiguous region of the buffer to the host memory. Behaviour of the memor...
Definition Resource.hpp:92
const RHIDevice & mDevice
Definition Resource.hpp:59
virtual RHIBufferScopedHandle< RHIBuffer > CreateAliasedBuffer(RHIBufferDesc const &desc, size_t offset=0)=0
virtual void DebugSetObjectName(const char *name)=0
const RHIBufferDesc mDesc
Definition Resource.hpp:62
virtual RHIBuffer * GetAliasedBuffer(Handle handle) const =0
virtual void * Map()=0
Maps the entire buffer to the host memory. Alignment is implementation-defined. Implementations MUST ...
T * Map()
Maps as pointer of T.
Definition Resource.hpp:103
RHIBuffer(RHIDevice const &device, RHIBufferDesc const &desc)
Definition Resource.hpp:63
Definition Device.hpp:189
Handle type for RHI Objects.
Definition Details.hpp:42
Base class for all RHI objects.
Definition Details.hpp:16
Scoped move-only RAII handle wrapper for RHI Objects.
Definition Details.hpp:86
Definition Resource.hpp:211
const RHITextureViewDesc & mDesc
Definition Resource.hpp:214
virtual void DebugSetObjectName(const char *name)=0
RHITextureView(RHITexture const &image, RHITextureViewDesc const &desc)
Definition Resource.hpp:217
virtual RHITexture * GetTexture() const =0
const RHITexture & mImage
Definition Resource.hpp:213
Definition Resource.hpp:190
const RHITextureDesc mDesc
Definition Resource.hpp:195
virtual void DestroyAliasedTexture(Handle handle)=0
virtual RHITextureScopedHandle< RHITexture > CreateAliasedTexture(RHITextureDesc const &desc, size_t offset=0)=0
virtual void DebugSetObjectName(const char *name)=0
RHITexture(RHIDevice const &device, RHITextureDesc const &desc)
Definition Resource.hpp:196
virtual void DestroyImageView(Handle handle)=0
virtual RHITextureView * GetImageView(Handle handle) const =0
const RHIDevice & mDevice
Definition Resource.hpp:192
virtual RHITextureScopedHandle< RHITextureView > CreateTextureView(RHITextureViewDesc const &desc)=0
virtual RHITexture * GetAliasedTexture(Handle handle) const =0
std::pair< First, Second > Pair
Alias for std::pair
Definition Container.hpp:32
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
Low-level Rendering Hardware Interface (RHI) abstractions.
Definition Application.hpp:4
RHIAccelerationStructureBuildOp
Definition Common.hpp:166
RHITextureLayout
Definition Common.hpp:148
RHIDeviceHeapType
Definition Common.hpp:142
uintptr_t Handle
Definition Details.hpp:8
RHIAccelerationStructureType
Definition Common.hpp:160
glm::vec< 3, uint32_t > RHIExtent3D
Definition Common.hpp:11
RHIAccelerationGeometryType
Definition Common.hpp:172
RHITextureDimension
Definition Common.hpp:204
RHIResourceFormat
Definition Common.hpp:20
static constexpr size_t kFullSize
Definition Common.hpp:8
RHIMultisampleCount
Definition Common.hpp:201
RHIResourceHostAccess
Definition Common.hpp:177
Definition Resource.hpp:279
uint32_t scratchBufferOffset
Definition Resource.hpp:286
Span< const RHIAccelerationStructureGeometryInfo > geometries
Definition Resource.hpp:287
RHIAccelerationStructureType type
Definition Resource.hpp:280
RHIAccelerationStructureBuildOp operation
Definition Resource.hpp:282
RHIAccelerationStructure * dstAS
Definition Resource.hpp:284
RHIBuffer * scratchBuffer
Definition Resource.hpp:285
RHIAccelerationStructure * srcAS
Definition Resource.hpp:283
Span< const RHIAccelerationStructureBuildRangeInfo > ranges
Definition Resource.hpp:288
RHIAccelerationStructureBuildFlags flags
Definition Resource.hpp:281
Definition Resource.hpp:272
uint32_t primitiveOffset
Definition Resource.hpp:274
uint32_t primitiveCount
Definition Resource.hpp:273
uint32_t firstVertex
Definition Resource.hpp:275
uint32_t transformOffset
Definition Resource.hpp:276
Definition Resource.hpp:229
uint32_t offset
Definition Resource.hpp:233
uint32_t size
Definition Resource.hpp:234
RHIAccelerationStructureBuildFlags flags
Definition Resource.hpp:231
RHIAccelerationStructureType type
Definition Resource.hpp:230
RHIBuffer * buffer
Definition Resource.hpp:232
Definition Resource.hpp:265
RHIAccelerationStructureGeometryTriangleData triangleData
Definition Resource.hpp:267
RHIAccelerationStructureGeometryInstanceData instanceData
Definition Resource.hpp:268
bool allowUpdate
Definition Resource.hpp:269
RHIAccelerationGeometryType type
Definition Resource.hpp:266
Definition Resource.hpp:259
RHIBuffer * instanceBuffer
Definition Resource.hpp:260
uint32_t totalPrimitives
Definition Resource.hpp:262
uint32_t instanceOffset
Definition Resource.hpp:261
Definition Resource.hpp:250
uint32_t instanceID
Definition Resource.hpp:254
RHIAccelerationStructure const * blas
Definition Resource.hpp:251
RHIAccelerationGeometryInstanceFlags flags
Definition Resource.hpp:256
float transformTranslation[3]
Definition Resource.hpp:253
float transformBasisRowMajor[3][3]
Definition Resource.hpp:252
uint32_t mask
Definition Resource.hpp:255
Definition Resource.hpp:237
uint32_t indexOffset
Definition Resource.hpp:245
uint32_t indexCount
Definition Resource.hpp:246
uint32_t vertexCount
Definition Resource.hpp:241
RHIBuffer * vertexBuffer
Definition Resource.hpp:239
uint32_t vertexOffset
Definition Resource.hpp:240
RHIResourceFormat vertexFormat
Definition Resource.hpp:238
RHIBuffer * indexBuffer
Definition Resource.hpp:244
uint32_t vertexStride
Definition Resource.hpp:242
RHIResourceFormat indexFormat
Definition Resource.hpp:243
Definition Resource.hpp:223
uint32_t buildScratchSize
Definition Resource.hpp:225
uint32_t accelerationStructureSize
Definition Resource.hpp:224
uint32_t updateScratchSize
Definition Resource.hpp:226
Definition Resource.hpp:28
static RHIBufferDesc CreateStagingDesc(size_t size)
Definition Resource.hpp:35
RHIBufferUsage usage
How the buffer can be used by the device, initially.
Definition Resource.hpp:31
RHIResourceDesc resource
Definition Resource.hpp:29
size_t alignment
Definition Resource.hpp:33
size_t size
Definition Resource.hpp:32
static RHIBuffer * Get(RHIBuffer const *buffer, Handle handle)
Definition Resource.hpp:313
static void Destroy(RHIBuffer *buffer, Handle handle)
Definition Resource.hpp:314
static RHITextureView * Get(RHITexture const *image, Handle handle)
Definition Resource.hpp:307
static void Destroy(RHITexture *image, Handle handle)
Definition Resource.hpp:308
static void Destroy(RHITexture *texture, Handle handle)
Definition Resource.hpp:320
static RHITexture * Get(RHITexture const *texture, Handle handle)
Definition Resource.hpp:319
Provides type traits for types derived from RHIObject.
Definition Details.hpp:30
Definition Resource.hpp:7
bool coherent
Definition Resource.hpp:21
RHIDeviceQueueFlags sharedQueues
Definition Resource.hpp:17
RHIDeviceHeapType heap
Which heap the resource is allocated in.
Definition Resource.hpp:10
RHIResourceHostAccess hostAccess
How the resource can be accessed by the host (CPU)
Definition Resource.hpp:12
bool staging
Definition Resource.hpp:25
bool shared
Can be shared with other device queues.
Definition Resource.hpp:14
bool isAlias
Definition Resource.hpp:8
Definition Resource.hpp:116
RHITextureUsage usage
Definition Resource.hpp:119
RHIExtent3D extent
Definition Resource.hpp:120
RHIResourceDesc resource
Definition Resource.hpp:117
RHIMultisampleCount sampleCount
Definition Resource.hpp:122
RHIResourceFormat format
Definition Resource.hpp:121
RHITextureDimension dimension
Definition Resource.hpp:118
RHITextureLayout initialLayout
Definition Resource.hpp:125
uint32_t mipLevels
Definition Resource.hpp:123
uint32_t arrayLayers
Definition Resource.hpp:124
Definition Resource.hpp:134
uint32_t baseArrayLayer
Definition Resource.hpp:137
uint32_t mipLevel
Definition Resource.hpp:136
RHITextureAspectFlag aspect
Definition Resource.hpp:135
uint32_t layerCount
Definition Resource.hpp:138
Definition Resource.hpp:141
RHITextureSubresourceLayer layer
Definition Resource.hpp:143
Pair< uint32_t, uint32_t > GetMipLevelRange() const
Definition Resource.hpp:147
static RHITextureSubresourceRange Create(RHITextureAspectFlag aspect=RHITextureAspectFlagBits::Color, uint32_t base_mip_level=0, uint32_t mip_count=1, uint32_t base_array_layer=0, uint32_t layer_count=1)
Helper function to create a Subresource Range with default parameters.
Definition Resource.hpp:165
Pair< uint32_t, uint32_t > GetArrayLayerRange() const
Definition Resource.hpp:152
uint32_t mipCount
Definition Resource.hpp:145
constexpr bool IsValid() const
Definition Resource.hpp:181
Definition Resource.hpp:184
RHIResourceFormat format
Definition Resource.hpp:185
RHITextureDimension dimension
Definition Resource.hpp:186
RHITextureSubresourceRange range
Definition Resource.hpp:187