Skip to content
Snippets Groups Projects

vkd3d-shader: Normalise signatures and input/output registers to the Shader Model 6 pattern.

Merged Conor McCarthy requested to merge cmccarthy/vkd3d:normalise_io into master
  1. May 24, 2023
    • Conor McCarthy's avatar
      vkd3d-shader/ir: Normalise signatures and input/output registers to the Shader Model 6 pattern. · 6835e817
      Conor McCarthy authored and Alexandre Julliard's avatar Alexandre Julliard committed
      In Shader Model 6 each signature element can span a range of register
      indices, or 'rows', and system values do not share a register index with
      non-system values. Inputs and outputs are referenced by element index
      instead of register index. This patch merges multiple signature elements
      into a single element under the following conditions:
      
      - The register index in a load or store is specified dynamically by
        including a relative address parameter with a base register index. The
        dcl_index_range instruction is used to identify these.
      - A register declaration is split across multiple elements which declare
        different components of the register.
      - A patch constant function writes tessellation factors. These are an
        array in SPIR-V, but in SM 5.x each factor is declared as a separate
        register, and these are dynamically indexed by the fork/join instance
        id. Elimination of multiple fork/join phases converts the indices to
        constants, but merging the signature elements into a single arrayed
        element matches the SPIR-V output.
      
      All references to input/output register indices are converted to element
      indices. If a relative address is present, the element index is moved up
      a slot so it cannot be confused with a constant offset. Existing code
      only handles register index relative addressing for tessellation factors.
      This patch adds generic support for it.
      6835e817
    • Conor McCarthy's avatar
      vkd3d-shader/ir: Eliminate struct vkd3d_shader_normaliser. · 110e48e5
      Conor McCarthy authored and Alexandre Julliard's avatar Alexandre Julliard committed
      110e48e5
    • Conor McCarthy's avatar
      31682c52
Loading