1. 03 Dec, 2020 2 commits
  2. 02 Dec, 2020 10 commits
  3. 01 Dec, 2020 13 commits
  4. 30 Nov, 2020 9 commits
  5. 27 Nov, 2020 5 commits
  6. 26 Nov, 2020 1 commit
    • Vulkan: Fix precision transformation for geometry shaders · fcb6b5a5
      Shahbaz Youssefi authored
      When a varying precision mismatch is present between two stages, the
      SPIR-V transformer transforms the following:
      
          in precision1 type1 inVar;
          out precision2 type2 outVar;
      
          void main()
          {
              f(inVar);
              outVar = g();
          }
      
      to:
      
          in precision3 type1 inVarModified;
          out precision4 type2 outVarModified;
          precision1 type1 inVarTurnedPrivate;
          precision2 type2 outVarTurnedPrivate;
      
          void main()
          {
              // Input preamble
              inVarTurnedPrivate = inVarModified;
      
              f(inVarTurnedPrivate);
              outVarTurnedPrivate = g();
      
              // Output preamble
              outVarModified = outVarTurnedPrivate;
          }
      
      This doesn't work for geometry shaders as they take the varying outputs
      on EmitVertex() as opposed to return from main.  This change simply
      places the output preamble before every EmitVertex() instead of at the
      end of the shader, if it's a geometry shader.
      
      Bug: angleproject:5403
      Change-Id: Ie395a3270c6903c54b49f64a26bc5297044cbaeb
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2561939
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>