Skip to content
Snippets Groups Projects
  1. Aug 31, 2017
    • LoopDawg's avatar
      HLSL: add geometry stage support for clip/cull distance · 5e5b12e9
      LoopDawg authored
      Changes:
      
      (1) Allow clip/cull builtins as both input and output in the same shader stage.  Previously,
      not enough data was tracked to handle this.
      
      (2) Handle the extra array dimension in GS inputs.  The synthesized external variable can
      now be created with the extra array dimension if needed, and the form conversion code is
      able to handle it as well.
      
      For example, both of these GS inputs would result in the same synthesized external type:
      
          triangle in float4 clip[3] : SV_ClipDistance
      
          triangle in float2 clip[3][2] : SV_ClipDistance
      
      In the second case, the inner array dimension packs with the 2-vector of floats into an array[4],
      which there is an array[3] of due to the triangle geometry.
      5e5b12e9
  2. Aug 24, 2017
    • LoopDawg's avatar
      HLSL: handle clip and cull distance input builtin type conversion · e2cda3c2
      LoopDawg authored
      HLSL allows a range of types for clip and cull distances.  There are
      three dimensions, including arrayness, vectorness, and semantic ID.
      SPIR-V requires clip and cull distance be a single array of floats in
      all cases.
      
      This code provides input side conversion between the SPIR-V form and
      the HLSL form.  (Output conversion was added in PR #947 and #997).
      
      This PR extends HlslParseContext::assignClipCullDistance to cope with
      the input side conversion.  Not as much changed as appears: there was
      also a lot of renaming to reflect the fact that the code now handles
      either direction.
      
      Currently, non-{frag,vert} stages are not handled, and are explicitly
      rejected.
      
      Fixes #1026.
      e2cda3c2
Loading