1. 01 Sep, 2020 5 commits
  2. 28 Aug, 2020 4 commits
    • Optimize multisample resolve with SSE2 instructions · a2e6c1a1
      Nicolas Capens authored
      Benchmark results:
      
      Run on (48 X 2594 MHz CPU s)
      CPU Caches:
        L1 Data 32 KiB (x24)
        L1 Instruction 32 KiB (x24)
        L2 Unified 256 KiB (x24)
        L3 Unified 30720 KiB (x2)
      ---------------------------------------------------------------
      Benchmark                     Time             CPU   Iterations
      ---------------------------------------------------------------
      (LLVM, before)
      Triangle/Hello            0.845 ms        0.439 ms         1673
      Triangle/Multisample       6.95 ms        0.781 ms         1000
      
      (LLVM, after)
      Triangle/Hello            0.861 ms        0.450 ms         1493
      Triangle/Multisample       4.03 ms        0.753 ms          747
      
      (Subzero, before)
      Triangle/Hello             1.19 ms        0.474 ms         1120
      Triangle/Multisample       11.8 ms        0.920 ms          747
      
      (Subzero, after)
      Triangle/Hello            0.907 ms        0.486 ms         1673
      Triangle/Multisample       4.62 ms        0.781 ms         1000
      
      Bug: b/147802090
      Change-Id: Iea8498f2b745c86cf578db5c0f7ef2329b73c736
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47970
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
      Kokoro-Result: kokoro <noreply+kokoro@google.com>
    • Add a fast multisample resolve code path · 4487e589
      Nicolas Capens authored
      For whole-image 4x8-bit normalized format multisample resolves, use a
      specialized code path instead of a generic blit routine.
      
      Benchmark results:
      
      Run on (48 X 2594 MHz CPU s)
      CPU Caches:
        L1 Data 32 KiB (x24)
        L1 Instruction 32 KiB (x24)
        L2 Unified 256 KiB (x24)
        L3 Unified 30720 KiB (x2)
      ---------------------------------------------------------------
      Benchmark                     Time             CPU   Iterations
      ---------------------------------------------------------------
      (LLVM, before)
      Triangle/Hello             1.02 ms        0.500 ms         1000
      Triangle/Multisample       19.3 ms        0.984 ms         1000
      
      (LLVM, after)
      Triangle/Hello            0.845 ms        0.439 ms         1673
      Triangle/Multisample       6.95 ms        0.781 ms         1000
      
      (Subzero, before)
      Triangle/Hello             1.15 ms        0.516 ms         1120
      Triangle/Multisample       40.3 ms        0.469 ms          100
      
      (Subzero, after)
      Triangle/Hello             1.19 ms        0.474 ms         1120
      Triangle/Multisample       11.8 ms        0.920 ms          747
      
      Bug: b/147802090
      Change-Id: I15729552f01a509a5cfce20cd7de06d0b764cf0a
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47969
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
    • Make multisample resolve a Blitter method · 64ed1218
      Nicolas Capens authored
      The Vulkan spec explicitly states that "vkCmdBlitImage must not be used
      for multisampled source or destination images. Use vkCmdResolveImage for
      this purpose." And the only other way to obtain resolve multisample
      results is by using resolve attachments as part of a subpass.
      
      This split between blit operations and resolve operations should be
      reflected by the Blitter interface so we have less confusion about
      its blit() method being used to perform resolves. It will also
      facilitate adding a fast path for common resolve operations.
      
      Bug: b/147802090
      Change-Id: I2549a5e7acd7ef9ec3f70f8ceb88ff5fc65a0d17
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47988
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Kokoro-Result: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
    • Work around std::is_trivially_copyable issue with MSVC · 2014e7b9
      Nicolas Capens authored
      Microsoft Visual Studio Community 2019 Version 16.7.1 produced the
      following errors:
      
      C2976 'llvm::SmallVectorTemplateBase': too few template argument
      SwiftShader\third_party\llvm-10.0\llvm\include\llvm\ADT\SmallVector.h:315
      
      C2338 inconsistent behavior between llvm:: and std:: implementation of is_trivially_copyable
      SwiftShader\third_party\llvm-10.0\llvm\include\llvm\Support\type_traits.h:181
      
      Not defining LLVM's HAVE_STD_IS_TRIVIALLY_COPYABLE config makes it fall
      back to code which doesn't use std::is_trivially_copyable and avoids the
      issue.
      
      Note this may hide a potentially serious MSVC compiler bug since C2338
      is produced by a static_assert. Without that static assert we may not
      have known about the unexpected std::is_trivially_copyable behavior
      until run-time issues are caused by it.
      
      Bug: swiftshader:153
      Change-Id: I04ab6d8ae725ecab45ac27fd89a37213baa86943
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47930
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Kokoro-Result: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAntonio Maiorano <amaiorano@google.com>
  3. 27 Aug, 2020 1 commit
  4. 26 Aug, 2020 3 commits
  5. 21 Aug, 2020 3 commits
  6. 20 Aug, 2020 1 commit
  7. 18 Aug, 2020 1 commit
  8. 17 Aug, 2020 2 commits
  9. 13 Aug, 2020 2 commits
  10. 12 Aug, 2020 3 commits
  11. 11 Aug, 2020 3 commits
  12. 07 Aug, 2020 1 commit
  13. 06 Aug, 2020 6 commits
  14. 04 Aug, 2020 3 commits
  15. 03 Aug, 2020 1 commit
  16. 02 Aug, 2020 1 commit