# D3D12 Pipeline State

Contents

- D3D12 Pipeline State

  - Root Signature and Bindings

  - Vertex Input

  - Shader

  - Stream-out

  - Rasterizer

  - Output Merger

  - Resource States

class `renderdoc.``D3D12State`

  The full current D3D12 pipeline state.

  `computeShader`

    The compute shader stage.

    Type

      D3D12Shader

  `domainShader`

    The domain shader stage.

    Type

      D3D12Shader

  `geometryShader`

    The geometry shader stage.

    Type

      D3D12Shader

  `hullShader`

    The hull shader stage.

    Type

      D3D12Shader

  `inputAssembly`

    The input assembly pipeline stage.

    Type

      D3D12InputAssembly

  `outputMerger`

    The output merger pipeline stage.

    Type

      D3D12OM

  `pipelineResourceId`

    The `ResourceId` of the pipeline state object.

  `pixelShader`

    The pixel shader stage.

    Type

      D3D12Shader

  `rasterizer`

    The rasterizer pipeline stage.

    Type

      D3D12Rasterizer

  `resourceStates`

    The resource states for the currently live resources.

    Type

      List[ResourceData]

  `rootElements`

    The root signature, as a range per element.

    Type

      List[RootSignatureRange]

  `rootSignatureResourceId`

    The `ResourceId` of the root signature object.

  `streamOut`

    The stream-out pipeline stage.

    Type

      D3D12StreamOut

  `vertexShader`

    The vertex shader stage.

    Type

      D3D12Shader

## Root Signature and Bindings

class `renderdoc.``D3D12RootSignatureRange`

  Contains information for a single root signature element range

  `constantBuffers`

    The constant buffers in this range.

    Type

      List[D3D12ConstantBuffer]

  `immediate`

    `True` if this root element is a root constant (i.e. not in a table).

  `registerSpace`

    The register space of this element.

  `rootElement`

    The index in the original root signature that this descriptor came from.

  `samplers`

    The samplers in this range.

    Type

      List[D3D12Sampler]

  `type`

    The `BindType` contained by this element.

  `views`

    The SRVs or UAVs in this range.

    Type

      List[D3D12View]

  `visibility`

    The `ShaderStageMask` of this element.

class `renderdoc.``D3D12ConstantBuffer`

  Describes the details of a constant buffer view descriptor.

  `bind`

    The shader register that this constant buffer is bound to.

  `byteOffset`

    The byte offset where the buffer view starts in the underlying buffer.

  `byteSize`

    How many bytes are in this constant buffer view.

  `resourceId`

    The `ResourceId` of the underlying buffer resource.

  `rootValues`

    If `immediate` is `True` and this is a root constant, this contains the root values set as interpreted as a series of DWORD values.

    Type

      List[int]

  `tableIndex`

    The index in the the parent descriptor table where this descriptor came from.

class `renderdoc.``D3D12Sampler`

  Describes the details of a sampler descriptor.

  `UseBorder`()

    Check if the border color is used in this D3D12 sampler.

    Returns

      `True` if the border color is used, `False` otherwise.

    Return type

      bool

  `addressU`

    The `AddressMode` in the U direction.

  `addressV`

    The `AddressMode` in the V direction.

  `addressW`

    The `AddressMode` in the W direction.

  `bind`

    The shader register that this sampler is bound to.

  `borderColor`

    The RGBA border color.

    Type

      Tuple[float,float,float,float]

  `compareFunction`

    The `CompareFunction` for comparison samplers.

  `filter`

    The filtering mode.

    Type

      TextureFilter

  `maxAnisotropy`

    The maximum anisotropic filtering level to use.

  `maxLOD`

    The maximum mip level that can be used.

  `minLOD`

    The minimum mip level that can be used.

  `mipLODBias`

    A bias to apply to the calculated mip level before sampling.

  `tableIndex`

    The index in the the parent descriptor table where this descriptor came from.

class `renderdoc.``D3D12View`

  Describes the details of a D3D12 resource view - any one of UAV, SRV, RTV or DSV.

  `bind`

    The shader register that this view is bound to.

  `bufferFlags`

    The `D3DBufferViewFlags` set for the buffer.

  `bufferStructCount`

    If the view has a hidden counter, this stores the current value of the counter.

  `counterByteOffset`

    The byte offset in `counterResourceId` where the counter is stored.

  `counterResourceId`

    The `ResourceId` of the resource where the hidden buffer counter is stored.

  `elementByteSize`

    The byte size of a single element in the view. Either the byte size of `viewFormat`, or the structured buffer element size, as appropriate.

  `firstElement`

    Valid for buffers - the first element to be used in the view.

  `firstMip`

    Valid for textures - the highest mip that is available through the view.

  `firstSlice`

    Valid for texture arrays or 3D textures - the first slice available through the view.

  `minLODClamp`

    The minimum mip-level clamp applied when sampling this texture.

  `numElements`

    Valid for buffers - the number of elements to be used in the view.

  `numMips`

    Valid for textures - the number of mip levels in the view.

  `numSlices`

    Valid for texture arrays or 3D textures - the number of slices in the view.

  `resourceId`

    The `ResourceId` of the underlying resource the view refers to.

  `swizzle`

    The swizzle applied to a texture by the view.

    Type

      TextureSwizzle4

  `tableIndex`

    The index in the the parent descriptor table where this descriptor came from.

  `type`

    The `TextureType` of the view type.

  `viewFormat`

    The format cast that the view uses.

    Type

      ResourceFormat

## Vertex Input

class `renderdoc.``D3D12InputAssembly`

  Describes the input assembler state in the PSO.

  `indexBuffer`

    The bound index buffer.

    Type

      D3D12IndexBuffer

  `indexStripCutValue`

    The index value to use for cutting strips. Either `0`, `0xffff` or `0xffffffff`. If the value is 0, strip cutting is disabled.

  `layouts`

    The input layout elements in this layout.

    Type

      List[D3D12Layout]

  `vertexBuffers`

    The bound vertex buffers

    Type

      List[D3D12VertexBuffer]

class `renderdoc.``D3D12Layout`

  Describes a single D3D12 input layout element for one vertex input.

  `TightlyPacked`

    Value for `byteOffset` that indicates this element is tightly packed.

  `byteOffset`

    The byte offset from the start of the vertex data in the vertex buffer from `inputSlot`.

    If the value is `TightlyPacked` then the element is packed tightly after the previous element, or 0 if this is the first element.

  `format`

    The format describing how the input data is interpreted.

    Type

      ResourceFormat

  `inputSlot`

    The vertex buffer input slot where the data is sourced from.

  `instanceDataStepRate`

    If `perInstance` is `True` then this is how many times each instance data is used before advancing to the next instance.

    E.g. if this value is two, then two instances will be drawn with the first instance data, then two with the next instance data.

  `perInstance`

    `True` if the vertex data is instance-rate.

  `semanticIndex`

    The semantic index for this input.

  `semanticName`

    The semantic name for this input.

class `renderdoc.``D3D12VertexBuffer`

  Describes a single D3D12 vertex buffer binding.

  `byteOffset`

    The byte offset from the start of the buffer to the beginning of the vertex data.

  `byteSize`

    The number of bytes available in this vertex buffer.

  `byteStride`

    The byte stride between the start of one set of vertex data and the next.

  `resourceId`

    The `ResourceId` of the buffer bound to this slot.

class `renderdoc.``D3D12IndexBuffer`

  Describes the D3D12 index buffer binding.

  `byteOffset`

    The byte offset from the start of the buffer to the beginning of the index data.

  `byteSize`

    The number of bytes available in this index buffer.

  `resourceId`

    The `ResourceId` of the index buffer.

## Shader

class `renderdoc.``D3D12Shader`

  Describes a D3D12 shader stage.

  `bindpointMapping`

    The bindpoint mapping data to match `reflection`.

    Type

      ShaderBindpointMapping

  `reflection`

    The reflection data for this shader.

    Type

      ShaderReflection

  `resourceId`

    The `ResourceId` of the shader object itself.

  `stage`

    A `ShaderStage` identifying which stage this shader is bound to.

## Stream-out

class `renderdoc.``D3D12StreamOut`

  Describes the stream-out state in the PSO.

  `outputs`

    The bound stream-out buffer bindings.

    Type

      List[D3D12StreamOutBind]

class `renderdoc.``D3D12StreamOutBind`

  Describes a binding on the D3D12 stream-out stage.

  `byteOffset`

    The byte offset in `resourceId` where the buffer view starts in the underlying buffer.

  `byteSize`

    How many bytes are in this stream-out buffer view.

  `resourceId`

    The `ResourceId` of the buffer.

  `writtenCountByteOffset`

    The byte offset in `writtenCountResourceId` where the stream-out count will be written.

  `writtenCountResourceId`

    The `ResourceId` of the buffer where the written count will be stored.

## Rasterizer

class `renderdoc.``D3D12Rasterizer`

  Describes the rasterization state of the D3D12 pipeline.

  `sampleMask`

    The mask determining which samples are written to.

  `scissors`

    The bound scissor regions.

    Type

      List[Scissor]

  `state`

    The details of the rasterization state.

    Type

      D3D12RasterizerState

  `viewports`

    The bound viewports.

    Type

      List[Viewport]

class `renderdoc.``D3D12RasterizerState`

  Describes the rasterizer state in the PSO.

  `antialiasedLines`

    `True` if lines should be anti-aliased. Ignored if `multisampleEnable` is `False`.

  `conservativeRasterization`

    The current `ConservativeRaster` mode.

  `cullMode`

    The polygon `CullMode`.

  `depthBias`

    The fixed depth bias value to apply to z-values.

  `depthBiasClamp`

    The clamp value for calculated depth bias from `depthBias` and `slopeScaledDepthBias`

  `depthClip`

    `True` if pixels outside of the near and far depth planes should be clipped.

  `fillMode`

    The polygon `FillMode`.

  `forcedSampleCount`

    A sample count to force rasterization to when UAV rendering or rasterizing, or 0 to not force any sample count.

  `frontCCW`

    `True` if counter-clockwise polygons are front-facing. `False` if clockwise polygons are front-facing.

  `multisampleEnable`

    `True` if the quadrilateral MSAA algorithm should be used on MSAA targets.

  `slopeScaledDepthBias`

    The slope-scaled depth bias value to apply to z-values.

## Output Merger

class `renderdoc.``D3D12OM`

  Describes the current state of the output-merger stage of the D3D12 pipeline.

  `blendState`

    The current blend state details.

    Type

      D3D12BlendState

  `depthReadOnly`

    `True` if depth access to the depth-stencil target is read-only.

  `depthStencilState`

    The current depth-stencil state details.

    Type

      D3D12DepthStencilState

  `depthTarget`

    The currently bound depth-stencil target.

    Type

      D3D12View

  `multiSampleCount`

    The sample count used for rendering.

  `multiSampleQuality`

    The MSAA quality level used for rendering.

  `renderTargets`

    The bound render targets.

    Type

      List[D3D12View]

  `stencilReadOnly`

    `True` if stenncil access to the depth-stencil target is read-only.

class `renderdoc.``D3D12DepthStencilState`

  Describes the state of the depth-stencil state in the PSO.

  `backFace`

    The stencil state for back-facing polygons.

    Type

      StencilFace

  `depthBoundsEnable`

    `True` if depth bounds tests should be applied.

  `depthEnable`

    `True` if depth testing should be performed.

  `depthFunction`

    The `CompareFunction` to use for testing depth values.

  `depthWrites`

    `True` if depth values should be written to the depth target.

  `frontFace`

    The stencil state for front-facing polygons.

    Type

      StencilFace

  `maxDepthBounds`

    The far plane bounding value.

  `minDepthBounds`

    The near plane bounding value.

  `stencilEnable`

    `True` if stencil operations should be performed.

class `renderdoc.``D3D12BlendState`

  Describes the blend state in the PSO.

  `alphaToCoverage`

    `True` if alpha-to-coverage should be used when blending to an MSAA target.

  `blendFactor`

    The constant blend factor to use in blend equations.

    Type

      Tuple[float,float,float,float]

  `blends`

    The blend operations for each target.

    Type

      List[ColorBlend]

  `independentBlend`

    `True` if independent blending for each target should be used.

    `False` if the first blend should be applied to all targets.

## Resource States

class `renderdoc.``D3D12ResourceData`

  Contains the current state of a given resource.

  `resourceId`

    The `ResourceId` of the resource.

  `states`

    The subresource states in this resource.

    Type

      List[D3D12ResourceState]

class `renderdoc.``D3D12ResourceState`

  Describes the current state that a sub-resource is in.

  `name`

    A human-readable name for the current state.