105 const bool operator==(
const std::nullptr_t)
const;
107 const bool operator!=(
const std::nullptr_t)
const;
112 uint64_t timelineIndex;
167#ifdef NEBULA_ENABLE_PROFILING
222 ,
const char* name =
nullptr
232template<
class TYPE> uint64_t
SetConstants(
const TYPE& data);
343#if NEBULA_ENABLE_PROFILING
349SizeT GetNumDrawCalls();
352#if NEBULA_GRAPHICS_DEBUG
354template<
typename OBJECT_ID_TYPE>
void ObjectSetName(
const OBJECT_ID_TYPE
id,
const char* name);
370 const uint uploadSize =
sizeof(TYPE);
383 const uint uploadSize =
sizeof(TYPE) * numElements;
416 const uint uploadSize =
sizeof(TYPE);
418 if (buffer != CoreGraphics::InvalidBufferId)
430 const uint uploadSize =
sizeof(TYPE) * numElements;
432 if (buffer != CoreGraphics::InvalidBufferId)
444 const uint uploadSize =
sizeof(TYPE);
455 const uint uploadSize =
sizeof(TYPE) * numElements;
467 if (buffer != CoreGraphics::InvalidBufferId)
Code
index types enum
Definition indextype.h:22
Defines a group of primitives as a subset of a vertex buffer and index buffer plus the primitive topo...
Definition primitivegroup.h:20
Code
enumeration
Definition primitivetopology.h:23
Render events are sent by the RenderDevice to registered render event handlers.
Definition renderevent.h:19
A 2d rectangle class.
Definition rectangle.h:20
Allocates memory ranges using the TLSF method, with extended handling of padding to better suit GPUs.
Definition rangeallocator.h:46
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Nebula's dynamic array class.
Definition array.h:60
Implements a fixed size one-dimensional array.
Definition fixedarray.h:20
A collection of unique values with quick lookup.
Definition set.h:34
Acceleration structures are used to enable ray tracing on the GPU by dividing the scene into a BVH.
Definition accelerationstructure.h:24
uint MaxResourceTableReadWriteBuffers
Definition vkgraphicsdevice.cc:765
uint MaxPushConstantSize
Definition vkgraphicsdevice.cc:753
void DelayedDeleteBuffer(const CoreGraphics::BufferId id)
Add buffer to delete queue.
Definition vkgraphicsdevice.cc:1988
CoreGraphics::ImageFileFormat::Code SaveScreenshot(CoreGraphics::ImageFileFormat::Code fmt, const Ptr< IO::Stream > &outStream)
save a screenshot to the provided stream
Definition vkgraphicsdevice.cc:2438
uint64_t ConstantBufferOffset
Definition config.h:21
void DelayedDeletePass(const CoreGraphics::PassId id)
Add a pass to delayed delete.
Definition vkgraphicsdevice.cc:2070
bool GetRenderWireframe()
get the render as wireframe flag
Definition vkgraphicsdevice.cc:2474
ConstantBufferOffset AllocateConstantBufferMemory(uint size)
Reserve range of constant buffer memory and return offset.
Definition vkgraphicsdevice.cc:1858
void DelayedDeleteCommandBuffer(const CoreGraphics::CmdBufferId id)
Add command buffer to late deletion.
Definition vkgraphicsdevice.cc:2028
void UnlockGraphicsSetupCommandBuffer(CoreGraphics::CmdBufferId cmdBuf)
Release lock on immediate graphics command buffer.
Definition vkgraphicsdevice.cc:1637
void SubmitImmediateCommandBuffers()
Submit immediate command buffers.
Definition vkgraphicsdevice.cc:1749
IndexT GetQueueIndex(const QueueType queue)
Get queue index.
Definition vkgraphicsdevice.cc:2141
uint TimestampPeriod
Definition vkgraphicsdevice.cc:773
void WaitAndClearPendingCommands()
wait for all queues to finish
Definition vkgraphicsdevice.cc:1963
uint64_t SetConstants(const TYPE &data)
Allocate range of memory and set data, return offset (thread safe)
Definition graphicsdevice.h:368
const Util::Set< uint32_t > & GetQueueIndices()
Get queue indices.
Definition vkgraphicsdevice.cc:2150
uint ReadWriteBufferAlignment
Definition vkgraphicsdevice.cc:750
const CoreGraphics::BufferId GetVertexBuffer()
Get vertex buffer.
Definition vkgraphicsdevice.cc:2199
bool VariableRateShadingSupported
Definition vkgraphicsdevice.cc:747
QueryType
Definition config.h:52
void RemoveBackBufferTexture(const CoreGraphics::TextureId tex)
remove a render texture
Definition vkgraphicsdevice.cc:1575
const CoreGraphics::CmdBufferId LockGraphicsSetupCommandBuffer(const char *name=nullptr)
Lock immediate graphics command buffer.
Definition vkgraphicsdevice.cc:1618
bool NotifyEventHandlers(const CoreGraphics::RenderEvent &e)
notify event handlers about an event
Definition vkgraphicsdevice.cc:1548
Util::Pair< Memory::RangeAllocation, CoreGraphics::BufferId > AllocateUpload(const SizeT numBytes, const SizeT alignment=1)
Allocate upload memory.
Definition vkgraphicsdevice.cc:2257
void ReloadShaderProgram(const CoreGraphics::ShaderProgramId &pro)
trigger reloading a shader
Definition vkgraphicsdevice.cc:1894
void DelayedDeleteTextureView(const CoreGraphics::TextureViewId id)
Add texture view to delete queue.
Definition vkgraphicsdevice.cc:2016
Util::Pair< Memory::RangeAllocation, CoreGraphics::BufferId > Upload(const TYPE &data, const SizeT alignment=1)
Upload single item to GPU source buffer.
Definition graphicsdevice.h:414
bool DynamicVertexInputSupported
Definition vkgraphicsdevice.cc:745
uint64_t ShaderGroupSize
Definition vkgraphicsdevice.cc:777
void AddBackBufferTexture(const CoreGraphics::TextureId tex)
add a render texture used by the back buffer
Definition vkgraphicsdevice.cc:1566
QueueType
Definition config.h:40
void RemoveEventHandler(const Ptr< CoreGraphics::RenderEventHandler > &h)
remove a render event handler
Definition vkgraphicsdevice.cc:1534
bool MeshShadersSupported
Definition vkgraphicsdevice.cc:746
uint AccelerationStructureScratchAlignment
Raytracing properties.
Definition vkgraphicsdevice.cc:775
void FreeUploads(const Util::Array< Memory::RangeAllocation > &allocations)
Free upload allocations directly.
Definition vkgraphicsdevice.cc:2288
void FlushUploads(const Util::Array< Memory::RangeAllocation > &allocations)
Flush upload allocations directly.
Definition vkgraphicsdevice.cc:2301
void FinishFrame(IndexT frameIndex)
Finish current frame.
Definition vkgraphicsdevice.cc:1903
IndexT GetBufferedFrameIndex()
get current frame index, which is between 0 and GetNumBufferedFrames
Definition vkgraphicsdevice.cc:1512
CoreGraphics::BufferId GetConstantBuffer(IndexT i)
return id to global graphics constant buffer
Definition vkgraphicsdevice.cc:1885
uint MaxResourceTableSamplers
Definition vkgraphicsdevice.cc:769
@ NumMemoryPoolTypes
Memory which is visible on both device and host side.
Definition memory.h:37
void DelayedDeleteBlas(const CoreGraphics::BlasId id)
Add a blas for delayed delete.
Definition vkgraphicsdevice.cc:2083
uint MaxResourceTableConstantBuffers
Definition vkgraphicsdevice.cc:763
CmdPipelineBuildBits
Definition commandbuffer.h:54
bool NvidiaCheckpointsSupported
Definition vkgraphicsdevice.cc:748
void FinishQueries(const CoreGraphics::CmdBufferId cmdBuf, const CoreGraphics::QueryType type, IndexT *starts, SizeT *counts, SizeT numCopies)
Copy query results to buffer.
Definition vkgraphicsdevice.cc:2123
void EnqueueUploadsFlushAndFree(const Util::Array< Memory::RangeAllocation > &allocations)
Queue uploads to flush and free at immediate submit.
Definition vkgraphicsdevice.cc:2328
uint MemoryRangeGranularity
Definition vkgraphicsdevice.cc:772
SizeT GetNumBufferedFrames()
get number of buffered frames
Definition vkgraphicsdevice.cc:1503
const CoreGraphics::BufferId GetIndexBuffer()
Get index buffer.
Definition vkgraphicsdevice.cc:2247
void DelayedDeleteTexture(const CoreGraphics::TextureId id)
Add texture to delete queue.
Definition vkgraphicsdevice.cc:2002
uint MaxPerStageConstantBuffers
Definition vkgraphicsdevice.cc:756
void UnlockTransferHandoverSetupCommandBuffer(CoreGraphics::CmdBufferId cmdBuf)
Release lock on handover command buffer.
Definition vkgraphicsdevice.cc:1669
uint64_t SparseAddressSize
Definition vkgraphicsdevice.cc:754
void SetVisualizeMipMaps(bool val)
set visualization of mipmaps flag
Definition vkgraphicsdevice.cc:2465
uint64_t MaxConstantBufferSize
Definition vkgraphicsdevice.cc:752
const CoreGraphics::CmdBufferId LockTransferSetupCommandBuffer()
Lock resource command buffer.
Definition vkgraphicsdevice.cc:1586
uint AllocateQueries(const CoreGraphics::QueryType type, uint numQueries)
Allocate a range of queries.
Definition vkgraphicsdevice.cc:2107
void DestroyGraphicsDevice()
destroy graphics device
Definition vkgraphicsdevice.cc:1424
uint MaxPerStageInputAttachments
Definition vkgraphicsdevice.cc:761
SubmissionWaitEvent SubmitCommandBuffers(const Util::Array< CoreGraphics::CmdBufferId, 8 > &cmds, CoreGraphics::QueueType type, Util::Array< CoreGraphics::SubmissionWaitEvent, 8 > waitEvents=nullptr)
Submit a command buffer, but doesn't necessarily execute it immediately.
Definition vkgraphicsdevice.cc:1700
uint MaxPerStageReadWriteBuffers
Definition vkgraphicsdevice.cc:757
uint ShaderGroupAlignment
Definition vkgraphicsdevice.cc:776
uint MaxResourceTableSampledImages
Definition vkgraphicsdevice.cc:767
void UnlockConstantUpdates()
Unlock constants.
Definition vkgraphicsdevice.cc:1828
void DeallocateIndices(const VertexAlloc &alloc)
Deallocate indices.
Definition vkgraphicsdevice.cc:2236
void DeallocateVertices(const VertexAlloc &alloc)
Deallocate vertices.
Definition vkgraphicsdevice.cc:2188
void SetConstantsInternal(ConstantBufferOffset offset, const void *data, SizeT size)
Use pre-allocated range of memory to update graphics constants.
Definition vkgraphicsdevice.cc:1849
void DelayedDeleteTlas(const CoreGraphics::TlasId id)
Add a tlas for delayed delete.
Definition vkgraphicsdevice.cc:2095
void AttachEventHandler(const Ptr< CoreGraphics::RenderEventHandler > &h)
attach a render event handler
Definition vkgraphicsdevice.cc:1521
bool GetVisualizeMipMaps()
get visualization of mipmaps flag
Definition vkgraphicsdevice.cc:2456
uint MaxPerStageReadWriteImages
Definition vkgraphicsdevice.cc:759
bool RayTracingSupported
Definition vkgraphicsdevice.cc:744
void DelayedDeleteDescriptorSet(const CoreGraphics::ResourceTableId id)
Add a descriptor set to delete queue.
Definition vkgraphicsdevice.cc:2054
uint MaxResourceTableInputAttachments
Definition vkgraphicsdevice.cc:770
uint MaxResourceTableDynamicOffsetConstantBuffers
Definition vkgraphicsdevice.cc:764
const CoreGraphics::CmdBufferId LockTransferHandoverSetupCommandBuffer()
Lock handover transfer command buffer.
Definition vkgraphicsdevice.cc:1650
void DelayedFreeMemory(const CoreGraphics::Alloc alloc)
Add memory allocation to delete queue.
Definition vkgraphicsdevice.cc:2044
uint MaxRecursionDepth
Definition vkgraphicsdevice.cc:778
bool CreateGraphicsDevice(const GraphicsDeviceCreateInfo &info)
create graphics device
Definition vkgraphicsdevice.cc:795
void NewFrame()
Progress to next frame.
Definition vkgraphicsdevice.cc:2356
const VertexAlloc AllocateVertices(const SizeT numVertices, const SizeT vertexSize)
Allocate vertices from the global vertex pool.
Definition vkgraphicsdevice.cc:2161
bool PollSubmissionIndex(const CoreGraphics::QueueType queue, uint64_t index)
Poll a submission for completion.
Definition vkgraphicsdevice.cc:1682
void SetRenderWireframe(bool b)
set the render as wireframe flag
Definition vkgraphicsdevice.cc:2483
Util::Pair< Memory::RangeAllocation, CoreGraphics::BufferId > UploadArray(const TYPE *data, SizeT elements, const SizeT alignment=1)
Upload array of items to GPU source buffer.
Definition graphicsdevice.h:428
uint MaxResourceTableReadWriteImages
Definition vkgraphicsdevice.cc:768
uint MaxPerStageSamplers
Definition vkgraphicsdevice.cc:760
PipelineStage
Definition config.h:192
void UploadInternal(const CoreGraphics::BufferId buffer, uint offset, const void *data, SizeT size)
Upload memory to upload buffer with given offset, return offset.
Definition vkgraphicsdevice.cc:2278
void WaitForQueue(CoreGraphics::QueueType queue)
wait for an individual queue to finish
Definition vkgraphicsdevice.cc:1954
void LockConstantUpdates()
Lock constant updates.
Definition vkgraphicsdevice.cc:1838
const VertexAlloc AllocateIndices(const SizeT numIndices, const IndexType::Code indexType)
Allocate indices from the global index pool.
Definition vkgraphicsdevice.cc:2208
uint ConstantBufferAlignment
Definition vkgraphicsdevice.cc:751
uint MaxPerStageSampledImages
Definition vkgraphicsdevice.cc:758
uint MaxResourceTableDynamicOffsetReadWriteBuffers
Definition vkgraphicsdevice.cc:766
void UnlockTransferSetupCommandBuffer(CoreGraphics::CmdBufferId cmdBuf)
Release lock on resource command buffer.
Definition vkgraphicsdevice.cc:1605
constexpr Pair< A, B > MakePair(const A &a, const B &b)
Definition tupleutility.h:54
std::pair< A, B > Pair
Wrap std::pair.
Definition tupleutility.h:47
#define NEBULA_GRAPHICS_DEBUG
Definition config.h:398
Graphics memory interface.
A resource table declares a list of resources (ResourceTable in DX12, DescriptorSet in Vulkan)
Definition accelerationstructure.h:48
Definition commandbuffer.h:168
Definition commandbuffer.h:101
Definition graphicsdevice.h:95
CoreGraphics::CmdBufferId buf
Definition graphicsdevice.h:96
Threading::Event * event
Definition graphicsdevice.h:97
Definition graphicsdevice.h:76
bool enableRayTracing
Definition graphicsdevice.h:77
bool enableGPUCrashAnalytics
Definition graphicsdevice.h:80
bool enableVariableRateShading
Definition graphicsdevice.h:79
bool enableMeshShaders
Definition graphicsdevice.h:78
Definition graphicsdevice.h:66
uint64_t maxStatisticsQueries
Definition graphicsdevice.h:72
uint64_t globalVertexBufferMemorySize
Definition graphicsdevice.h:68
uint64_t globalConstantBufferMemorySize
Definition graphicsdevice.h:67
uint64_t memoryHeaps[NumMemoryPoolTypes]
Definition graphicsdevice.h:71
struct CoreGraphics::GraphicsDeviceCreateInfo::Features features
uint64_t maxTimestampQueries
Definition graphicsdevice.h:72
uint64_t maxOcclusionQueries
Definition graphicsdevice.h:72
bool enableValidation
Definition graphicsdevice.h:74
uint64_t globalIndexBufferMemorySize
Definition graphicsdevice.h:69
byte numBufferedFrames
Definition graphicsdevice.h:73
uint64_t globalUploadMemorySize
Definition graphicsdevice.h:70
Definition graphicsdevice.h:118
Util::FixedArray< CoreGraphics::FenceId > presentFences
Definition graphicsdevice.h:127
Util::Array< Ptr< CoreGraphics::RenderEventHandler > > eventHandlers
Definition graphicsdevice.h:139
bool enableValidation
Definition graphicsdevice.h:157
Util::FixedArray< CoreGraphics::BufferId > globalConstantBuffer
Definition graphicsdevice.h:132
Util::Array< CoreGraphics::CmdBufferId > setupGraphicsCommandBuffers
Definition graphicsdevice.h:125
Util::Array< CoreGraphics::CmdBufferId > setupTransferCommandBuffers
Definition graphicsdevice.h:122
bool isOpen
Definition graphicsdevice.h:153
uint maxNumBufferedFrames
Definition graphicsdevice.h:150
Util::Array< CoreGraphics::TextureId > backBuffers
Definition graphicsdevice.h:119
_declare_counter(NumBufferBytesAllocated)
CoreGraphics::ResourceTableId tickResourceTableCompute
Definition graphicsdevice.h:135
CoreGraphics::CmdBufferPoolId setupGraphicsCommandBufferPool
Definition graphicsdevice.h:124
CoreGraphics::ResourceTableId tickResourceTableGraphics
Definition graphicsdevice.h:134
Memory::RangeAllocator uploadAllocator
Definition graphicsdevice.h:147
bool renderWireframe
Definition graphicsdevice.h:155
bool visualizeMipMaps
Definition graphicsdevice.h:156
CoreGraphics::BufferId vertexBuffer
Definition graphicsdevice.h:142
CoreGraphics::ResourceTableId frameResourceTableGraphics
Definition graphicsdevice.h:136
_declare_counter(NumImageBytesAllocated)
uint32_t currentBufferedFrameIndex
Definition graphicsdevice.h:151
bool inNotifyEventHandlers
Definition graphicsdevice.h:154
_declare_counter(GraphicsDeviceNumDrawCalls)
CoreGraphics::BufferId indexBuffer
Definition graphicsdevice.h:145
_declare_counter(GraphicsDeviceNumComputes)
Memory::RangeAllocator indexAllocator
Definition graphicsdevice.h:144
Util::FixedArray< CoreGraphics::SemaphoreId > renderingFinishedSemaphores
Definition graphicsdevice.h:128
Util::Array< CoreGraphics::CmdBufferId > handoverTransferCommandBuffers
Definition graphicsdevice.h:123
Memory::RangeAllocator vertexAllocator
Definition graphicsdevice.h:141
CoreGraphics::ResourceTableId frameResourceTableCompute
Definition graphicsdevice.h:137
IndexT currentFrameIndex
Definition graphicsdevice.h:158
CoreGraphics::CmdBufferPoolId setupTransferCommandBufferPool
Definition graphicsdevice.h:121
_declare_counter(GraphicsDeviceNumPrimitives)
uint globalConstantBufferMaxValue
Definition graphicsdevice.h:131
_declare_counter(NumBytesAllocated)
Util::FixedArray< CoreGraphics::SemaphoreId > backbufferFinishedSemaphores
Definition graphicsdevice.h:129
Definition graphicsdevice.h:173
CoreGraphics::CmdBufferId graphicsCommandBuffer
Definition graphicsdevice.h:174
CmdPipelineBuildBits currentPipelineBits
Definition graphicsdevice.h:176
bool usePatches
Definition graphicsdevice.h:184
bool renderWireframe
Definition graphicsdevice.h:182
bool isOpen
Definition graphicsdevice.h:180
CoreGraphics::PassId pass
Definition graphicsdevice.h:179
bool enableValidation
Definition graphicsdevice.h:185
CoreGraphics::PrimitiveTopology::Code primitiveTopology
Definition graphicsdevice.h:177
bool visualizeMipMaps
Definition graphicsdevice.h:183
bool inNotifyEventHandlers
Definition graphicsdevice.h:181
CoreGraphics::PrimitiveGroup primitiveGroup
Definition graphicsdevice.h:178
CoreGraphics::CmdBufferId computeCommandBuffer
Definition graphicsdevice.h:174
Definition resourcetable.h:95
Definition graphicsdevice.h:101
const bool operator==(const std::nullptr_t) const
Definition vkgraphicsdevice.cc:2800
SubmissionWaitEvent()
Definition vkgraphicsdevice.cc:2791
void operator=(const std::nullptr_t)
Definition vkgraphicsdevice.cc:2818
CoreGraphics::QueueType queue
Definition graphicsdevice.h:114
const bool operator!=(const std::nullptr_t) const
Definition vkgraphicsdevice.cc:2809
texture type
Definition texture.h:25
Definition textureview.h:16
Definition accelerationstructure.h:98
A 4D vector.
Definition vec4.h:24
int SizeT
Definition types.h:42
unsigned int uint
Definition types.h:33
int IndexT
Definition types.h:41