1. 25 Mar, 2020 4 commits
  2. 24 Mar, 2020 6 commits
  3. 23 Mar, 2020 3 commits
  4. 20 Mar, 2020 1 commit
    • Subzero: fix CoroutineBegin generation · 22d73d15
      Antonio Maiorano authored
      Rework how instructions are injected at the top of the CoroutineBegin
      function by getting rid of replaceEntryNode, which attempted to replace
      the entry node with a non-entry one. This seemed to work on all targets,
      except for Windows x86-32 (Win32) when passing enough arguments to
      Coroutines. In this case, it would crash in the code generated right
      after this injected code. It looks like the code in replaceEntryNode is
      not quite right, resulting in Subzero creating needless stack allocs per
      argument, and ultimately generating invalid offsets from the stack
      pointer.
      
      Instead of fixing replaceEntryNode, I now simply remember the entryNode
      for CoroutineBegin to use, adding the rest to a separate node for
      basicBlock, and when finalizing the function, I connect entryNode to the
      initial basicBlock node via a branch. This way, there is not messing
      around with function's node list.
      
      This not only fixes the crash, but gets rid of the needless stack
      allocs per arg.
      
      Bug: angleproject:4482
      Change-Id: I13f9c8c43ee07f35302208d9876e6fbdf0b1ad26
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42608
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarAntonio Maiorano <amaiorano@google.com>
      Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
  5. 19 Mar, 2020 2 commits
  6. 18 Mar, 2020 2 commits
  7. 17 Mar, 2020 1 commit
    • [vulkan]: Support multiple external semaphore implementations. · 2aa80df1
      David 'Digit' Turner authored
      This CL refactors the implementation of VkSemaphore objects
      in the following way:
      
      - Add the ability to support several external handle types
        concurrently. Before this CL, each platform could support
        a single handle type (e.g. on Linux,
        VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT only).
      
        The changes here will allow future CLs to support more than
        one type per platform (e.g. the Linux implementation may
        support OPAQUE_FD_BIT as well as SYNC_FD_BIT at the same
        time).
      
      - Better implementation of temporary imports. In particular,
        the following sequence now works properly:
      
          1) Create exportable semaphore A.
          2) Export A to an external handle/descriptor.
          3) Signal A.
          4) Temporarily import _another_ handle into A.
          5) A.wait()   // waits on the temporary payload, then discard it.
      
        Before the CL, A would end up, incorrectly, unsignalled. Because
        the export operation created an External instance that held
        the payload modified in 3), which was then discarded after
        the wait() in 5).
      
      - Improved and consistent handling of errors during import/export
        operations, through the use of templates.
      
      + Add a technical note in VkSemaphore.h explaining how everything
        works, since there are several subtle points in the spec.
      
      Bug: b/140421736
      
      Change-Id: I9b6935db3238fec7af8e0c81666e2f5c72075756
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39880Tested-by: 's avatarDavid Turner <digit@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
      Kokoro-Presubmit: David Turner <digit@google.com>
      Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com>
  8. 16 Mar, 2020 3 commits
    • Update Marl to ca8408f68 · 8656bcb0
      Ben Clayton authored
      Contains a number of optimizations that improve the Subzero coroutine performance up to 10x.
      
      Changes:
          ca8408f68 Scheduler: Reduce the number of mutex locks / unlock.
          575b61e76 Fix compilation of marl::Ticket::onCall()
          e9f312688 waitForWork(): Early out if there work.num > 0
          3196a0539 Scheduler: Use std::deque instead of std::queue
          08a820171 Add flags to marl::Task
          cb3c481d0 Scheduler: Use a separate flag to indicate whether to call notify()
          598c993ec marl::ConditionVariable - use containers::list
          d0c501a9c Add marl::containers::list
          aa1de9091 Benchmarks: Add EventBaton
      
      Commands:
          git subtree pull --prefix third_party/marl https://github.com/google/marl master --squash
      
      Bug: b/140546382
      Change-Id: I2b7adc3c624a1f3aef686de7e0e88c52a5666e3a
    • Squashed 'third_party/marl/' changes from 64d123947..ca8408f68 · 36835bcf
      Ben Clayton authored
      ca8408f68 Scheduler: Reduce the number of mutex locks / unlock.
      575b61e76 Fix compilation of marl::Ticket::onCall()
      e9f312688 waitForWork(): Early out if there work.num > 0
      3196a0539 Scheduler: Use std::deque instead of std::queue
      08a820171 Add flags to marl::Task
      cb3c481d0 Scheduler: Use a separate flag to indicate whether to call notify()
      598c993ec marl::ConditionVariable - use containers::list
      d0c501a9c Add marl::containers::list
      aa1de9091 Benchmarks: Add EventBaton
      
      git-subtree-dir: third_party/marl
      git-subtree-split: ca8408f6890ff447eb5f90d663149f3327b1607e
    • Regres: Update test lists @ 3a50a43d · 440fc995
      SwiftShader Regression Bot authored
      Change-Id: I2833d77b233998725288f4df3ddee5138805981d
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42349Reviewed-by: 's avatarBen Clayton <bclayton@google.com>
      Tested-by: 's avatarBen Clayton <bclayton@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
  9. 14 Mar, 2020 1 commit
  10. 13 Mar, 2020 13 commits
  11. 12 Mar, 2020 4 commits
    • Allow 3D filtering in the Blitter · 18daa81e
      Alexis Hetu authored
      According tot he Vulkan spec, about vkCmdBlitImage:
      "As the sizes of the source and destination extents can
       differ in any dimension, texels in the source extent
       are scaled and filtered to the destination extent."
      
      Logic was added to allow filtering in 3 dimensions in
      the Blitter. Since it requires more instructions, a
      state member was added in order to only filter in Z
      whenever we actually to do so (when the number of
      slices differ between source and destination regions).
      
      Fixes all tests mentioned in the issue.
      
      Bug: b/150155499
      Change-Id: I63da92db94d8d0394a06271cd47d4930cf5f726a
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42208
      Presubmit-Ready: Alexis Hétu <sugoi@google.com>
      Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarAlexis Hétu <sugoi@google.com>
    • Fix building with latest LLVM · 7454c944
      Nicolas Capens authored
      Bug: b/151314247
      Change-Id: Ib10831c42a0c18f86397ed3b6c5d32a578653c89
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42288
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarBen Clayton <bclayton@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
    • Document single-level YCbCr image assumption · 77b43d68
      Nicolas Capens authored
      We currently rely on limiting the mipmap level count of YCbCr images
      and the presence of sampler YCbCr conversion to disable mipmapping.
      
      This is valid, but fragile. The Vulkan 1.2 spec guarantees that when
      sampler Y'CbCr conversion is used, the image view must have a Y'CbCr
      format:
      
      "If the descriptor refers to a sampler that performs Y'CbCr conversion,
       the sampler must only be used to sample the image in the same
       descriptor."
      
      "If the image view is to be used with a sampler which supports sampler
       Y'CbCr conversion, an identically defined object of type
       VkSamplerYcbcrConversion to that used to create the sampler must be
       passed to vkCreateImageView in a VkSamplerYcbcrConversionInfo included
       in the pNext chain of VkImageViewCreateInfo. Conversely, if a
       VkSamplerYcbcrConversion object is passed to vkCreateImageView, an
       identically defined VkSamplerYcbcrConversion object must be used when
       sampling the image."
      
      "maxMipLevels is the maximum number of mipmap levels. maxMipLevels must
       be equal to the number of levels in the complete mipmap chain based on
       the maxExtent.width, maxExtent.height, and maxExtent.depth, except when
       one of the following conditions is true, in which case it may instead
       be 1:
        * ...
        * image format is one of those listed in Formats requiring sampler
          Y′CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT image views"
      
      Bug: b/151263485
      Change-Id: Ibb8e3fe34ecda04d6fb41308437fa4c66815f1fb
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42228
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
    • Clarify the PointCoord calculation · 5c372082
      Nicolas Capens authored
      Bug: b/149537975
      Change-Id: Ia589e0015437e5257991fe2e8b5f6459384a76de
      Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42048
      Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
      Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
      Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
      Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>