Nebula
Loading...
Searching...
No Matches
commandbuffer.h File Reference
#include "ids/id.h"
#include "util/stack.h"
#include "coregraphics/config.h"
#include "coregraphics/primitivetopology.h"
#include "util/fixedarray.h"
#include "math/rectangle.h"
#include "coregraphics/indextype.h"
#include "ids/idallocator.h"
#include "coregraphics/memory.h"
#include "math/vec4.h"

Go to the source code of this file.

Classes

struct  CoreGraphics::TextureCopy
 struct for texture copies More...
 
struct  CoreGraphics::BufferCopy
 
struct  CoreGraphics::CmdBufferPoolId
 
struct  CoreGraphics::CmdBufferPoolCreateInfo
 
struct  CoreGraphics::CmdBufferCreateInfo
 
struct  CoreGraphics::CmdBufferBeginInfo
 
struct  CoreGraphics::CmdBufferClearInfo
 
struct  CoreGraphics::CmdBufferMarkerBundle
 
struct  CoreGraphics::CmdBufferId
 
struct  CoreGraphics::RayDispatchTable
 
struct  CoreGraphics::RayDispatchTable::Entry
 

Namespaces

namespace  CoreGraphics
 Acceleration structures are used to enable ray tracing on the GPU by dividing the scene into a BVH.
 

Macros

#define N_CMD_SCOPE(x, y, z)
 

Enumerations

enum  CoreGraphics::CmdBufferQueryBits {
  CoreGraphics::NoQueries = 0x0 , CoreGraphics::Occlusion = 0x1 , CoreGraphics::Statistics = 0x2 , CoreGraphics::Timestamps = 0x4 ,
  CoreGraphics::NumBits = 3
}
 
enum class  CoreGraphics::CmdPipelineBuildBits : uint {
  CoreGraphics::NoInfoSet = 0 , CoreGraphics::ShaderInfoSet = N_BIT(0) , CoreGraphics::FramebufferLayoutInfoSet = N_BIT(1) , CoreGraphics::InputAssemblyInfoSet = N_BIT(2) ,
  CoreGraphics::AllInfoSet = ShaderInfoSet | FramebufferLayoutInfoSet | InputAssemblyInfoSet , CoreGraphics::PipelineBuilt = N_BIT(3)
}
 

Functions

 CoreGraphics::__ImplementEnumBitOperators (CmdBufferQueryBits)
 
 CoreGraphics::__ImplementEnumComparisonOperators (CmdBufferQueryBits)
 
 CoreGraphics::__ImplementEnumBitOperators (CmdPipelineBuildBits)
 
 CoreGraphics::__ImplementEnumComparisonOperators (CmdPipelineBuildBits)
 
const CmdBufferPoolId CoreGraphics::CreateCmdBufferPool (const CmdBufferPoolCreateInfo &info)
 create new command buffer pool
 
void CoreGraphics::DestroyCmdBufferPool (const CmdBufferPoolId pool)
 destroy command buffer pool
 
 CoreGraphics::_DECL_ACQUIRE_RELEASE (CmdBufferId)
 
const CmdBufferId CoreGraphics::CreateCmdBuffer (const CmdBufferCreateInfo &info)
 create new command buffer
 
void CoreGraphics::DestroyCmdBuffer (const CmdBufferId id)
 Destroy the command buffer immediately (use with caution as buffer might be in use by GPU)
 
void CoreGraphics::DeferredDestroyCmdBuffer (const CmdBufferId id)
 Issue command buffer for deletion (happens when GPU is finished with it)
 
void CoreGraphics::CmdBeginRecord (const CmdBufferId id, const CmdBufferBeginInfo &info)
 begin recording to command buffer
 
void CoreGraphics::CmdEndRecord (const CmdBufferId id)
 end recording command buffer, it may be submitted after this is done
 
void CoreGraphics::CmdReset (const CmdBufferId id, const CmdBufferClearInfo &info)
 clear the command buffer to be empty
 
void CoreGraphics::CmdSetVertexBuffer (const CmdBufferId id, IndexT streamIndex, const CoreGraphics::BufferId &buffer, SizeT bufferOffset)
 Set vertex buffer.
 
void CoreGraphics::CmdSetVertexLayout (const CmdBufferId id, const CoreGraphics::VertexLayoutId &vl)
 Set vertex layout.
 
void CoreGraphics::CmdSetIndexBuffer (const CmdBufferId id, const IndexType::Code indexType, const CoreGraphics::BufferId &buffer, SizeT bufferOffset)
 Set index buffer.
 
void CoreGraphics::CmdSetPrimitiveTopology (const CmdBufferId id, const CoreGraphics::PrimitiveTopology::Code topo)
 Set the type of topology used.
 
void CoreGraphics::CmdSetShaderProgram (const CmdBufferId id, const CoreGraphics::ShaderProgramId pro, bool bindGlobals=true)
 Set shader program.
 
void CoreGraphics::CmdSetResourceTable (const CmdBufferId id, const CoreGraphics::ResourceTableId table, const IndexT slot, CoreGraphics::ShaderPipeline pipeline, const Util::FixedArray< uint > &offsets)
 Set resource table.
 
void CoreGraphics::CmdSetResourceTable (const CmdBufferId id, const CoreGraphics::ResourceTableId table, const IndexT slot, CoreGraphics::ShaderPipeline pipeline, uint32 numOffsets, uint32 *offsets)
 Set resource table using raw offsets.
 
void CoreGraphics::CmdPushConstants (const CmdBufferId id, ShaderPipeline pipeline, uint offset, uint size, const void *data)
 Set push constants.
 
void CoreGraphics::CmdSetGraphicsPipeline (const CmdBufferId id)
 Create (if necessary) and bind pipeline based on state thus far.
 
void CoreGraphics::CmdSetGraphicsPipeline (const CmdBufferId buf, const PipelineId pipeline)
 Set graphics pipeline directly.
 
void CoreGraphics::CmdSetRayTracingPipeline (const CmdBufferId buf, const PipelineId pipeline)
 Set ray tracing pipeline.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, CoreGraphics::BarrierDomain domain, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Insert pipeline barrier.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, CoreGraphics::BarrierDomain domain, const Util::FixedArray< TextureBarrierInfo > &textures, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Insert pipeline barrier.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, CoreGraphics::BarrierDomain domain, const Util::FixedArray< BufferBarrierInfo > &buffers, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Insert pipeline barrier.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, CoreGraphics::BarrierDomain domain, const Util::FixedArray< AccelerationStructureBarrierInfo > &accelerationStructures, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Insert pipeline barrier.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, CoreGraphics::BarrierDomain domain, const Util::FixedArray< TextureBarrierInfo > &textures, const Util::FixedArray< BufferBarrierInfo > &buffers, const Util::FixedArray< AccelerationStructureBarrierInfo > &accelerationStructures, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Insert pipeline barrier.
 
void CoreGraphics::CmdHandover (const CmdBufferId from, const CmdBufferId to, CoreGraphics::PipelineStage fromStage, CoreGraphics::PipelineStage toStage, const Util::FixedArray< TextureBarrierInfo > &textures, const Util::FixedArray< BufferBarrierInfo > &buffers, const IndexT fromQueue=InvalidIndex, const IndexT toQueue=InvalidIndex, const char *name=nullptr)
 Handover.
 
void CoreGraphics::CmdBarrier (const CmdBufferId id, const CoreGraphics::BarrierId barrier)
 Insert execution barrier.
 
void CoreGraphics::CmdSignalEvent (const CmdBufferId id, const CoreGraphics::EventId ev, const CoreGraphics::PipelineStage stage)
 Signals an event.
 
void CoreGraphics::CmdWaitEvent (const CmdBufferId id, const EventId ev, const CoreGraphics::PipelineStage waitStage, const CoreGraphics::PipelineStage signalStage)
 Signals an event.
 
void CoreGraphics::CmdResetEvent (const CmdBufferId id, const CoreGraphics::EventId ev, const CoreGraphics::PipelineStage stage)
 Signals an event.
 
void CoreGraphics::CmdBeginPass (const CmdBufferId id, const CoreGraphics::PassId pass)
 Begin pass.
 
void CoreGraphics::CmdNextSubpass (const CmdBufferId id)
 Progress to next subpass.
 
void CoreGraphics::CmdEndPass (const CmdBufferId id)
 End pass.
 
void CoreGraphics::CmdDraw (const CmdBufferId id, const CoreGraphics::PrimitiveGroup &pg)
 Draw primitives.
 
void CoreGraphics::CmdDraw (const CmdBufferId id, SizeT numInstances, const CoreGraphics::PrimitiveGroup &pg)
 Draw primitives instanced.
 
void CoreGraphics::CmdDraw (const CmdBufferId id, SizeT numInstances, IndexT baseInstance, const CoreGraphics::PrimitiveGroup &pg)
 Draw primitives instanced with base instance.
 
void CoreGraphics::CmdDrawIndirect (const CmdBufferId id, const CoreGraphics::BufferId buffer, IndexT bufferOffset, SizeT numDraws, SizeT stride)
 Draw indirect, draws is the amount of draws in the buffer, and stride is the byte offset between each call.
 
void CoreGraphics::CmdDrawIndirectIndexed (const CmdBufferId id, const CoreGraphics::BufferId buffer, IndexT bufferOffset, SizeT numDraws, SizeT stride)
 Draw indirect, draws is the amount of draws in the buffer, and stride is the byte offset between each call.
 
void CoreGraphics::CmdDispatch (const CmdBufferId id, int dimX, int dimY, int dimZ)
 Perform computation.
 
void CoreGraphics::CmdResolve (const CmdBufferId id, const CoreGraphics::TextureId source, const CoreGraphics::TextureCopy sourceCopy, const CoreGraphics::TextureId dest, const CoreGraphics::TextureCopy destCopy)
 Resolve MSAA source to non-MSAA target.
 
void CoreGraphics::CmdBuildBlas (const CmdBufferId id, const CoreGraphics::BlasId blas)
 Build BLAS.
 
void CoreGraphics::CmdBuildTlas (const CmdBufferId id, const CoreGraphics::TlasId tlas)
 Build TLAS.
 
void CoreGraphics::CmdRaysDispatch (const CmdBufferId id, const RayDispatchTable &table, int dimX, int dimY, int dimZ)
 Fire rays.
 
void CoreGraphics::CmdDrawMeshlets (const CmdBufferId id, int dimX, int dimY, int dimZ)
 Draw meshlets.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::TextureId fromTexture, const Util::Array< CoreGraphics::TextureCopy > &from, const CoreGraphics::TextureId toTexture, const Util::Array< CoreGraphics::TextureCopy > &to)
 Copy between textures.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::TextureId fromTexture, const Util::Array< CoreGraphics::TextureCopy > &from, const CoreGraphics::BufferId toBuffer, const Util::Array< CoreGraphics::BufferCopy > &to)
 Copy from texture to buffer.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::BufferId fromBuffer, const Util::Array< CoreGraphics::BufferCopy > &from, const CoreGraphics::BufferId toBuffer, const Util::Array< CoreGraphics::BufferCopy > &to, const SizeT size)
 Copy between buffers.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::BufferId fromBuffer, const Util::Array< CoreGraphics::BufferCopy > &from, const CoreGraphics::TextureId toTexture, const Util::Array< CoreGraphics::TextureCopy > &to)
 Copy from buffer to texture.
 
void CoreGraphics::CmdBlit (const CmdBufferId id, const CoreGraphics::TextureId fromTexture, const CoreGraphics::TextureCopy &from, const CoreGraphics::TextureId toTexture, const CoreGraphics::TextureCopy &to)
 Blit textures.
 
void CoreGraphics::CmdSetViewports (const CmdBufferId id, Util::FixedArray< Math::rectangle< int > > viewports)
 Set viewport array.
 
void CoreGraphics::CmdSetScissors (const CmdBufferId id, Util::FixedArray< Math::rectangle< int > > rects)
 Set scissor array.
 
void CoreGraphics::CmdSetViewport (const CmdBufferId id, const Math::rectangle< int > &rect, int index)
 Sets a viewport for a certain index.
 
void CoreGraphics::CmdSetScissorRect (const CmdBufferId id, const Math::rectangle< int > &rect, int index)
 Sets a scissor rect for a certain index.
 
void CoreGraphics::CmdSetStencilRef (const CmdBufferId id, const uint frontRef, const uint backRef)
 Set the stencil reference values.
 
void CoreGraphics::CmdSetStencilReadMask (const CmdBufferId id, const uint readMask)
 Set the stencil read mask (compare mask(.
 
void CoreGraphics::CmdSetStencilWriteMask (const CmdBufferId id, const uint writeMask)
 Set the stencil write mask.
 
void CoreGraphics::CmdUpdateBuffer (const CmdBufferId id, const CoreGraphics::BufferId buffer, uint offset, uint size, const void *data)
 Update buffer using memory pointer in command buffer.
 
void CoreGraphics::CmdStartOcclusionQueries (const CmdBufferId id)
 Start occlusion queries.
 
void CoreGraphics::CmdEndOcclusionQueries (const CmdBufferId id)
 End occlusion queries.
 
void CoreGraphics::CmdStartPipelineQueries (const CmdBufferId id)
 Start pipeline statistics.
 
void CoreGraphics::CmdEndPipelineQueries (const CmdBufferId id)
 End pipeline statistics.
 
void CoreGraphics::CmdFinishQueries (const CmdBufferId id)
 Finish queries.
 

Macro Definition Documentation

◆ N_CMD_SCOPE

#define N_CMD_SCOPE ( x,
y,
z )