Vixen
02b45cc4
csharp
public interface ICommandList

A list of recorded work, submitted to a queue as a unit.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Recorded on any thread — one list per thread per frame — which is what makes a renderer scale with cores rather than with the main thread. The OpenGL backend cannot record in parallel and does not pretend to: it records into a replayable buffer in managed memory and replays it on the GL thread at submit, which keeps this contract true everywhere at a modest CPU cost (docs/plan/05).

Disposing returns the list to its pool. It is not a resource with a lifetime the caller has to reason about; it is a scratch buffer.

Fields and properties (2)

  • QueueKind Kind

    Which queue this list may be submitted to.

  • bool IsRecorded

    Whether recording has finished.

Methods (29)

  • void Finish()

    Finishes recording. The list may then be submitted, once.

  • void BeginRenderPass(in RenderPassDescription description)

    Begins a render pass.

  • void EndRenderPass()

    Ends the current render pass.

  • void SetViewport(in Viewport viewport)

    Sets the viewport.

  • void SetScissor(in ScissorRect scissor)

    Sets the scissor rectangle.

  • void SetBlendConstant(in Color4 colour)

    Sets the blend constant used by Constant.

  • void SetStencilReference(uint reference)

    Sets the stencil reference value.

  • void BindPipeline(PipelineHandle pipeline)

    Binds a pipeline.

  • void BindDescriptorSet(DescriptorSetSlot slot, DescriptorSetHandle descriptors, ReadOnlySpan<uint> dynamicOffsets = default(ReadOnlySpan<uint>))

    Binds a descriptor set.

  • void PushConstants(ShaderStage stages, int offset, ReadOnlySpan<byte> data)

    Writes push constants.

  • void BindVertexBuffer(int slot, BufferHandle buffer, long offset = 0)

    Binds a vertex buffer.

  • void BindIndexBuffer(BufferHandle buffer, IndexFormat format = UInt16, long offset = 0)

    Binds the index buffer.

  • void Draw(int vertexCount, int instanceCount = 1, int firstVertex = 0, int firstInstance = 0)

    Draws without indices.

  • void DrawIndexed(int indexCount, int instanceCount = 1, int firstIndex = 0, int vertexOffset = 0, int firstInstance = 0)

    Draws with indices.

  • void DrawIndexedIndirect(BufferHandle arguments, long offset = 0, int drawCount = 1, int stride = 20)

    Draws with arguments the GPU wrote.

  • void DrawIndexedIndirectCount(BufferHandle arguments, BufferHandle count, long offset = 0, long countOffset = 0, int maxDrawCount = 1, int stride = 20)

    Draws with arguments the GPU wrote, as many of them as the GPU said.

  • void Dispatch(int groupsX, int groupsY = 1, int groupsZ = 1)

    Runs a compute shader.

  • void DispatchIndirect(BufferHandle arguments, long offset = 0)

    Runs a compute shader with a group count the GPU wrote.

  • void BuildAccelerationStructure(AccelerationStructureHandle target, in AccelerationStructureBuildInput input, BufferHandle scratch, long scratchOffset = 0)

    Builds an acceleration structure from its geometry.

  • void Barrier(in BarrierGroup barriers)

    States that resources are changing what they are used for.

  • void CopyBuffer(BufferHandle source, long sourceOffset, BufferHandle destination, long destinationOffset, long size)

    Copies between buffers.

  • void CopyBufferToTexture(BufferHandle source, long sourceOffset, in TextureRegion destination, Int3 size)

    Copies from a buffer into a texture.

  • void CopyTextureToBuffer(in TextureRegion source, Int3 size, BufferHandle destination, long destinationOffset)

    Copies from a texture into a buffer.

  • void CopyTexture(in TextureRegion source, in TextureRegion destination, Int3 size)

    Copies between textures.

  • void ResetQueries(QueryPoolHandle pool, int first, int count)

    Puts a range of a pool's queries back into the state a write expects.

  • void WriteTimestamp(QueryPoolHandle pool, int index)

    Writes the GPU clock into one of a pool's queries.

  • void PushDebugGroup(string name)

    Opens a named group in a capture.

  • void PopDebugGroup()

    Closes the innermost debug group.

  • void InsertDebugMarker(string name)

    Marks a point in a capture.

Used by (209, showing 40)

  • ArenaFrameThirdPersonShooter
  • ArenaIlluminationThirdPersonShooter
  • PbrShowcaseGamePbrShowcase
  • TriangleGameHelloTriangle
  • UiHostHelloUi
  • VideoGameVideoPlayback
  • VirtualGeometryGameVirtualGeometry
  • AccelerationStructureDeviceTestsVixen.Graphics.Golden.Tests
  • AccelerationStructureTestsVixen.Graphics.Null.Tests
  • AppGraphicsVixen.App.Hosting
  • AssetMaterialSourceVixen.Engine.Renderer
  • AssetTextureSourceVixen.Engine.Renderer
  • AssetTextureSourceTestsVixen.Engine.Renderer.Tests
  • AutoExposureTestsVixen.Rendering.PostFx.Tests
  • BindlessFrameTestsVixen.Rendering.Tests
  • BindlessSamplingDeviceTestsVixen.Graphics.Golden.Tests
  • BloomTestsVixen.Rendering.PostFx.Tests
  • BoundBindingsVixen.Rendering
  • BufferReadbackRendererVixen.Rendering
  • BufferTransferDeviceTestsVixen.Graphics.Golden.Tests
  • BufferTransferTestsVixen.Rendering.Tests
  • BufferUploadRendererVixen.Rendering
  • ClusterCullingDeviceTestsVixen.Graphics.Golden.Tests
  • ClusterResolveTestsVixen.Rendering.Tests
  • ClusteredLightingTestsVixen.Rendering.Tests
  • ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
  • CommandRecorderTestsVixen.Graphics.Null.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorFrameVixen.Rendering
  • CompositorImageTestsVixen.Graphics.Golden.Tests
  • ComputeDispatchVixen.Rendering
  • ComputeRendererVixen.Rendering
  • DebugDrawRendererVixen.Engine.Renderer
  • DepthPrepassTestsVixen.Rendering.Tests
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DrawCompactionTestsVixen.Rendering.Tests
  • EditorGizmoFacingDeviceTestsVixen.Graphics.Golden.Tests
  • EnvironmentTextureVixen.Rendering
  • FixtureVixen.Graphics.Golden.Tests
  • FixtureVixen.Rendering.Tests