1. 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>
  2. 19 Mar, 2020 2 commits
  3. 18 Mar, 2020 2 commits
  4. 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>
  5. 16 Mar, 2020 1 commit
  6. 14 Mar, 2020 1 commit
  7. 13 Mar, 2020 13 commits
  8. 12 Mar, 2020 9 commits
  9. 11 Mar, 2020 8 commits
  10. 10 Mar, 2020 1 commit
  11. 09 Mar, 2020 1 commit