Nebula
Loading...
Searching...
No Matches
vkcommandbuffer.cc File Reference
#include "render/stdneb.h"
#include "coregraphics/config.h"
#include "coregraphics/resourcetable.h"
#include "coregraphics/pipeline.h"
#include "vkcommandbuffer.h"
#include "vkgraphicsdevice.h"
#include "vkbuffer.h"
#include "vktexture.h"
#include "vkvertexlayout.h"
#include "vkshader.h"
#include "vktypes.h"
#include "vkshaderprogram.h"
#include "vkresourcetable.h"
#include "vkevent.h"
#include "vkpass.h"
#include "vkpipeline.h"
#include "vkaccelerationstructure.h"
#include "graphics/globalconstants.h"

Namespaces

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

Functions

const VkCommandPool Vulkan::CmdBufferPoolGetVk (const CoreGraphics::CmdBufferPoolId id)
 get vk command buffer pool
 
const VkDevice Vulkan::CmdBufferPoolGetVkDevice (const CoreGraphics::CmdBufferPoolId id)
 get vk device that created the pool
 
const VkCommandBuffer Vulkan::CmdBufferGetVk (const CoreGraphics::CmdBufferId id)
 Get vk command buffer.
 
const VkCommandPool Vulkan::CmdBufferGetVkPool (const CoreGraphics::CmdBufferId id)
 Get vk command buffer pool.
 
const VkDevice Vulkan::CmdBufferGetVkDevice (const CoreGraphics::CmdBufferId id)
 Get vk device.
 
 CoreGraphics::_IMPL_ACQUIRE_RELEASE (CmdBufferId, commandBuffers)
 
const CmdBufferPoolId CoreGraphics::CreateCmdBufferPool (const CmdBufferPoolCreateInfo &info)
 create new command buffer pool
 
void CoreGraphics::DestroyCmdBufferPool (const CmdBufferPoolId pool)
 destroy command buffer pool
 
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::CmdSetIndexBuffer (const CmdBufferId id, const CoreGraphics::BufferId &buffer, CoreGraphics::IndexType::Code indexSize, SizeT bufferOffset)
 
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::CmdPushGraphicsConstants (const CmdBufferId id, uint offset, uint size, const void *data)
 
void CoreGraphics::CmdPushComputeConstants (const CmdBufferId id, uint offset, uint size, const void *data)
 
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 Util::FixedArray< TextureBarrierInfo, true > &textures, const Util::FixedArray< BufferBarrierInfo, true > &buffers, const Util::FixedArray< AccelerationStructureBarrierInfo, true > &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, true > &textures, const Util::FixedArray< BufferBarrierInfo, true > &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, 4 > &from, const CoreGraphics::TextureId toTexture, const Util::Array< CoreGraphics::TextureCopy, 4 > &to)
 Copy between textures.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::TextureId fromTexture, const Util::Array< CoreGraphics::TextureCopy, 4 > &from, const CoreGraphics::BufferId toBuffer, const Util::Array< CoreGraphics::BufferCopy, 4 > &to)
 Copy from texture to buffer.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::BufferId fromBuffer, const Util::Array< CoreGraphics::BufferCopy, 4 > &from, const CoreGraphics::BufferId toBuffer, const Util::Array< CoreGraphics::BufferCopy, 4 > &to, const SizeT size)
 Copy between buffers.
 
void CoreGraphics::CmdCopy (const CmdBufferId id, const CoreGraphics::BufferId fromBuffer, const Util::Array< CoreGraphics::BufferCopy, 4 > &from, const CoreGraphics::TextureId toTexture, const Util::Array< CoreGraphics::TextureCopy, 4 > &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, const Util::FixedArray< Math::rectangle< int > > &viewports)
 Set viewport array.
 
void CoreGraphics::CmdSetScissors (const CmdBufferId id, const 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.
 

Variables

VkCommandBufferAllocator Vulkan::commandBuffers
 
VkCommandBufferPoolAllocator Vulkan::commandBufferPools (0x00FFFFFF)
 
Threading::CriticalSection Vulkan::commandBufferCritSect