Vireo  0.0
Vireo 3D Rendering Hardware Interface
CommandList Class Referenceabstract

Detailed Description

Records a sequence of GPU commands for later submission. Obtained from CommandAllocator.create_command_list().

Lua full name: vireo.CommandList

Public Member Functions

nil begin ()
 Begins command recording. Must be called before any other recording command. More...
 
nil end ()
 Ends command recording. Must be called before submitting to a queue. More...
 
nil upload_buffer (destination: Buffer, data: lightuserdata|any)
 Copies CPU data into a BUFFER_UPLOAD staging buffer. More...
 
nil upload_image (destination: Image, data: lightuserdata|any, firstMipLevel: integer)
 Copies CPU data into an IMAGE_UPLOAD staging buffer starting at the given mip level. More...
 
nil copy_buffer_to_image (src: Buffer, dst: Image, mipLevel: integer, arrayLayer: integer, generateMips: boolean)
 Copies a staging buffer into a single image mip level and array layer; optionally generates remaining mips. More...
 
nil copy_buffer_to_image_levels (src: Buffer, dst: Image, offsets: integer[], generateMips: boolean)
 Copies a staging buffer into multiple mip levels using explicit byte offsets per mip level. More...
 
nil copy_buffer_to_buffer (src: Buffer, dst: Buffer, size: integer, srcOffset: integer, dstOffset: integer)
 Copies size bytes from src (at srcOffset) into dst (at dstOffset). More...
 
nil copy_buffer_regions (src: Buffer, dst: Buffer, regions: BufferCopyRegion[])
 Copies multiple non-contiguous regions between two buffers in a single command. More...
 
nil copy_image_to_swap_chain (src: Image, swapChain: SwapChain)
 Blits or resolves src into the swap chain's current back buffer. More...
 
nil begin_rendering (config: RenderingConfiguration)
 Begins a dynamic render pass. Must be paired with end_rendering(). More...
 
nil end_rendering ()
 Ends the current dynamic render pass. More...
 
nil dispatch (x: integer, y: integer, z: integer)
 Dispatches a compute shader with the given thread-group counts in X, Y, and Z. More...
 
nil bind_pipeline (pipeline: Pipeline, descriptorsAlreadyBound: boolean|nil)
 Binds a graphics or compute pipeline. Pass descriptorsAlreadyBound=true to skip re-binding unchanged descriptor sets. More...
 
nil bind_vertex_buffer (buffer: Buffer, offset: integer|nil)
 Binds a vertex buffer at the default slot with an optional byte offset (default 0). More...
 
nil bind_vertex_buffers (buffers: Buffer[], offsets: integer[]|nil)
 Binds multiple vertex buffers at once with optional per-buffer byte offsets. More...
 
nil bind_index_buffer (buffer: Buffer, indexType: IndexType|nil, firstIndex: integer|nil)
 Binds an index buffer with an optional index type (default UINT32) and first-index offset (default 0). More...
 
nil bind_descriptors (pipelineType: PipelineType, resources: PipelineResources, descriptors: DescriptorSet[])
 Binds descriptor sets before a pipeline is bound; supply pipelineType and resources explicitly. More...
 
nil bind_descriptors (descriptors: DescriptorSet[])
 Binds descriptor sets after a pipeline is bound; pipeline type is inferred. More...
 
nil bind_descriptor (descriptor: DescriptorSet, set: integer)
 Binds a single descriptor set at the given set index (pipeline must already be bound). More...
 
nil bind_descriptor_dynamic (descriptor: DescriptorSet, set: integer, offset: integer)
 Binds a dynamic-uniform descriptor set at the given set index with a byte offset into the uniform buffer. More...
 
nil draw (vertexCountPerInstance: integer, instanceCount: integer|nil, firstVertex: integer|nil, firstInstance: integer|nil)
 Issues a non-indexed draw call. More...
 
nil draw_indexed (indexCountPerInstance: integer, instanceCount: integer|nil, firstIndex: integer|nil, firstVertex: integer|nil, firstInstance: integer|nil)
 Issues an indexed draw call. More...
 
nil draw_indirect (buffer: Buffer, offset: integer, drawCount: integer, stride: integer, firstCommandOffset: integer)
 Issues indirect (non-indexed) draw calls whose arguments are read from a GPU buffer. More...
 
nil draw_indexed_indirect_count (buffer: Buffer, offset: integer, countBuffer: Buffer, countOffset: integer, maxDrawCount: integer, stride: integer, firstCommandOffset: integer)
 Issues indirect indexed draw calls with the actual draw count stored in a GPU buffer. More...
 
nil draw_indexed_indirect (buffer: Buffer, offset: integer, maxDrawCount: integer, stride: integer, firstCommandOffset: integer)
 Issues indirect indexed draw calls with a CPU-specified maximum draw count. More...
 
nil barrier_image (image: Image, oldState: ResourceState, newState: ResourceState)
 Inserts a pipeline barrier transitioning an image from oldState to newState. More...
 
nil barrier_render_target (renderTarget: RenderTarget, oldState: ResourceState, newState: ResourceState)
 Inserts a pipeline barrier transitioning a render target's image between resource states. More...
 
nil barrier_swap_chain (swapChain: SwapChain, oldState: ResourceState, newState: ResourceState)
 Inserts a pipeline barrier for the swap chain's currently acquired back buffer. More...
 
nil barrier_buffer (buffer: Buffer, oldState: ResourceState, newState: ResourceState)
 Inserts a pipeline barrier transitioning a buffer between resource states. More...
 
nil set_viewports (viewports: Viewport[])
 Sets multiple viewports for the rasterizer. More...
 
nil set_scissors (rects: Rect[])
 Sets multiple scissor rectangles for the rasterizer. More...
 
nil set_viewport (viewport: Viewport)
 Sets a single viewport for the rasterizer. More...
 
nil set_scissor (rect: Rect)
 Sets a single scissor rectangle for the rasterizer. More...
 
nil set_stencil_reference (reference: integer)
 Sets the stencil reference value used in stencil comparison operations. More...
 
nil push_constants (resources: PipelineResources, desc: PushConstantsDesc, data: any)
 Uploads push-constant data for the currently bound pipeline. More...
 
nil cleanup ()
 Releases internal temporary resources. Call after the command list has been submitted and the GPU has finished. More...
 

Member Function Documentation

nil begin ( )

Begins command recording. Must be called before any other recording command.

nil end ( )

Ends command recording. Must be called before submitting to a queue.

nil upload_buffer ( Buffer  destination,
lightuserdata|any  data)

Copies CPU data into a BUFFER_UPLOAD staging buffer.

Parameters
destinationBuffer
datalightuserdata|any
nil upload_image ( Image  destination,
lightuserdata|any  data,
integer  firstMipLevel)

Copies CPU data into an IMAGE_UPLOAD staging buffer starting at the given mip level.

Parameters
destinationImage
datalightuserdata|any
firstMipLevelinteger
nil copy_buffer_to_image ( Buffer  src,
Image  dst,
integer  mipLevel,
integer  arrayLayer,
boolean  generateMips)

Copies a staging buffer into a single image mip level and array layer; optionally generates remaining mips.

Parameters
srcBuffer
dstImage
mipLevelinteger
arrayLayerinteger
generateMipsboolean
nil copy_buffer_to_image_levels ( Buffer  src,
Image  dst,
integer[]  offsets,
boolean  generateMips)

Copies a staging buffer into multiple mip levels using explicit byte offsets per mip level.

Parameters
srcBuffer
dstImage
offsetsinteger[]
generateMipsboolean
nil copy_buffer_to_buffer ( Buffer  src,
Buffer  dst,
integer  size,
integer  srcOffset,
integer  dstOffset)

Copies size bytes from src (at srcOffset) into dst (at dstOffset).

Parameters
srcBuffer
dstBuffer
sizeinteger
srcOffsetinteger
dstOffsetinteger
nil copy_buffer_regions ( Buffer  src,
Buffer  dst,
BufferCopyRegion[]  regions)

Copies multiple non-contiguous regions between two buffers in a single command.

Parameters
srcBuffer
dstBuffer
regionsBufferCopyRegion[]
nil copy_image_to_swap_chain ( Image  src,
SwapChain  swapChain)

Blits or resolves src into the swap chain's current back buffer.

Parameters
srcImage
swapChainSwapChain
nil begin_rendering ( RenderingConfiguration  config)

Begins a dynamic render pass. Must be paired with end_rendering().

Parameters
configRenderingConfiguration
nil end_rendering ( )

Ends the current dynamic render pass.

nil dispatch ( integer  x,
integer  y,
integer  z)

Dispatches a compute shader with the given thread-group counts in X, Y, and Z.

Parameters
xinteger
yinteger
zinteger
nil bind_pipeline ( Pipeline  pipeline,
boolean|nil  descriptorsAlreadyBound)

Binds a graphics or compute pipeline. Pass descriptorsAlreadyBound=true to skip re-binding unchanged descriptor sets.

Parameters
pipelinePipeline
descriptorsAlreadyBoundboolean|nil
nil bind_vertex_buffer ( Buffer  buffer,
integer|nil  offset)

Binds a vertex buffer at the default slot with an optional byte offset (default 0).

Parameters
bufferBuffer
offsetinteger|nil
nil bind_vertex_buffers ( Buffer[]  buffers,
integer[]|nil  offsets)

Binds multiple vertex buffers at once with optional per-buffer byte offsets.

Parameters
buffersBuffer[]
offsetsinteger[]|nil
nil bind_index_buffer ( Buffer  buffer,
IndexType|nil  indexType,
integer|nil  firstIndex)

Binds an index buffer with an optional index type (default UINT32) and first-index offset (default 0).

Parameters
bufferBuffer
indexTypeIndexType|nil
firstIndexinteger|nil
nil bind_descriptors ( PipelineType  pipelineType,
PipelineResources  resources,
DescriptorSet[]  descriptors)

Binds descriptor sets before a pipeline is bound; supply pipelineType and resources explicitly.

Parameters
pipelineTypePipelineType
resourcesPipelineResources
descriptorsDescriptorSet[]
nil bind_descriptors ( DescriptorSet[]  descriptors)

Binds descriptor sets after a pipeline is bound; pipeline type is inferred.

Parameters
descriptorsDescriptorSet[]
nil bind_descriptor ( DescriptorSet  descriptor,
integer  set)

Binds a single descriptor set at the given set index (pipeline must already be bound).

Parameters
descriptorDescriptorSet
setinteger
nil bind_descriptor_dynamic ( DescriptorSet  descriptor,
integer  set,
integer  offset)

Binds a dynamic-uniform descriptor set at the given set index with a byte offset into the uniform buffer.

Parameters
descriptorDescriptorSet
setinteger
offsetinteger
nil draw ( integer  vertexCountPerInstance,
integer|nil  instanceCount,
integer|nil  firstVertex,
integer|nil  firstInstance)

Issues a non-indexed draw call.

Parameters
vertexCountPerInstanceinteger
instanceCountinteger|nil
firstVertexinteger|nil
firstInstanceinteger|nil
nil draw_indexed ( integer  indexCountPerInstance,
integer|nil  instanceCount,
integer|nil  firstIndex,
integer|nil  firstVertex,
integer|nil  firstInstance)

Issues an indexed draw call.

Parameters
indexCountPerInstanceinteger
instanceCountinteger|nil
firstIndexinteger|nil
firstVertexinteger|nil
firstInstanceinteger|nil
nil draw_indirect ( Buffer  buffer,
integer  offset,
integer  drawCount,
integer  stride,
integer  firstCommandOffset)

Issues indirect (non-indexed) draw calls whose arguments are read from a GPU buffer.

Parameters
bufferBuffer
offsetinteger
drawCountinteger
strideinteger
firstCommandOffsetinteger
nil draw_indexed_indirect_count ( Buffer  buffer,
integer  offset,
Buffer  countBuffer,
integer  countOffset,
integer  maxDrawCount,
integer  stride,
integer  firstCommandOffset)

Issues indirect indexed draw calls with the actual draw count stored in a GPU buffer.

Parameters
bufferBuffer
offsetinteger
countBufferBuffer
countOffsetinteger
maxDrawCountinteger
strideinteger
firstCommandOffsetinteger
nil draw_indexed_indirect ( Buffer  buffer,
integer  offset,
integer  maxDrawCount,
integer  stride,
integer  firstCommandOffset)

Issues indirect indexed draw calls with a CPU-specified maximum draw count.

Parameters
bufferBuffer
offsetinteger
maxDrawCountinteger
strideinteger
firstCommandOffsetinteger
nil barrier_image ( Image  image,
ResourceState  oldState,
ResourceState  newState)

Inserts a pipeline barrier transitioning an image from oldState to newState.

Parameters
imageImage
oldStateResourceState
newStateResourceState
nil barrier_render_target ( RenderTarget  renderTarget,
ResourceState  oldState,
ResourceState  newState)

Inserts a pipeline barrier transitioning a render target's image between resource states.

Parameters
renderTargetRenderTarget
oldStateResourceState
newStateResourceState
nil barrier_swap_chain ( SwapChain  swapChain,
ResourceState  oldState,
ResourceState  newState)

Inserts a pipeline barrier for the swap chain's currently acquired back buffer.

Parameters
swapChainSwapChain
oldStateResourceState
newStateResourceState
nil barrier_buffer ( Buffer  buffer,
ResourceState  oldState,
ResourceState  newState)

Inserts a pipeline barrier transitioning a buffer between resource states.

Parameters
bufferBuffer
oldStateResourceState
newStateResourceState
nil set_viewports ( Viewport[]  viewports)

Sets multiple viewports for the rasterizer.

Parameters
viewportsViewport[]
nil set_scissors ( Rect[]  rects)

Sets multiple scissor rectangles for the rasterizer.

Parameters
rectsRect[]
nil set_viewport ( Viewport  viewport)

Sets a single viewport for the rasterizer.

Parameters
viewportViewport
nil set_scissor ( Rect  rect)

Sets a single scissor rectangle for the rasterizer.

Parameters
rectRect
nil set_stencil_reference ( integer  reference)

Sets the stencil reference value used in stencil comparison operations.

Parameters
referenceinteger
nil push_constants ( PipelineResources  resources,
PushConstantsDesc  desc,
any  data)

Uploads push-constant data for the currently bound pipeline.

Parameters
resourcesPipelineResources
descPushConstantsDesc
dataany
nil cleanup ( )

Releases internal temporary resources. Call after the command list has been submitted and the GPU has finished.