1. 05 Feb, 2019 1 commit
    • Vulkan: optimize image memory barriers · 7dafe3eb
      Shahbaz Youssefi authored
      Each image was tracking its current layout, but not the pipeline stage
      it was used.  Additionally, the barrier access masks were inferred from
      the layout.  This incurred two inefficiencies:
      
      - The src pipeline stage mask often included all stages, causing
        unnecessarily heavy barriers.
      - The access masks included all possible accesses by a layout, which in
        some cases was overkill, like VK_ACCESS_MEMORY_WRITE_BIT for
        VK_IMAGE_LAYOUT_GENERAL (which will eventually used for compute shader
        output).
      
      This change instead creates an enum where each element represents the
      layout, the stage and access masks when transitioning into the layout
      and the stage and access masks when transitioning out of that layout.
      The image will instead track a value of this enum (instead of
      VkImageLayout), which allows it to create the layout transition barriers
      as tight as possible, since it includes all the necessary information.
      
      Bug: angleproject:2999
      Change-Id: I91535ce06d10530a6fc217ad3b94b7e288521e25
      Reviewed-on: https://chromium-review.googlesource.com/c/1440074
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  2. 04 Feb, 2019 5 commits
  3. 02 Feb, 2019 2 commits
  4. 01 Feb, 2019 9 commits
  5. 31 Jan, 2019 3 commits
  6. 30 Jan, 2019 4 commits
  7. 29 Jan, 2019 4 commits
    • Roll dEQP (January/February 2019). · 915d4068
      Jamie Madill authored
      Includes some new GLES tests added by kainino@.
      
      Bug: angleproject:3112
      Change-Id: I0d81c8263eab3473dec49bb0cf3bca73cd38c6fb
      Reviewed-on: https://chromium-review.googlesource.com/c/1441051
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Vulkan: Implement GLsync and EGLSync fence syncs · 82fddcb1
      Shahbaz Youssefi authored
      That is required in GLES 3 for GLsync and EGL_KHR_fence_sync and
      EGL_KHR_wait_sync (or EGL 1.5) for EGLSync.
      
      The two constructs (GLsync and EGLSync) have similar semantics and share
      the implementation on the Vulkan backend.
      
      The implementation of a fence sync object is achieved through the
      combined use of a vkEvent and the implicit vkFence inserted at the end
      of every submission.  Imagine the following command buffer:
      
          glDraw      : Draw
          glCreateSync: Set Event  <-- insertion of fence sync
          glDraw      : Draw
                      : Signal Fence <-- implicit fence at the end of submission
          glFlush     : Submit
      
      Assume the serial S is associated to this submission.  The following
      hold:
      
      - If event is set, the fence sync is signaled
      - If S is already finished, the fence sync is signaled
      - If client is waiting on the sync and S is not yet flushed, there will
        be a deadlock (unless multi-threaded and another thread performs the
        flush).
      
      The event is used to implement server waits (glWaitSync), as vkEvent is
      the only entity the GPU can signal and wait on within the command
      buffer.  The wait is inserted in the command graph without incurring a
      flush, i.e. the wait can be within the same command buffer as event set.
      
      The event however does not support CPU waits (glClientWaitSync).
      vkFence is the only entity the CPU can wait on.  For client wait
      therefore, the following algorithm is used:
      
      - If the event is already set, there's no wait  ->  already signaled
      - If timeout is zero, there's no wait  ->  timeout expired
      - If S is not flushed, flush it to ensure forward progress.
      - Wait until S is finished  ->  condition satisfied / timeout expired.
      
      Bug: angleproject:2466
      Change-Id: I678995a6139dd9533fa8ad361a3d292b202c52a4
      Reviewed-on: https://chromium-review.googlesource.com/c/1422552
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Suppress EmptyBuffer test on Android GLES. · 4b2e00f4
      Jamie Madill authored
      Seems to fail on the Pixel XL.
      
      Bug: angleproject:2861
      Change-Id: Ic1690abccd867251e83c0ae5e38c2bbd1c41615b
      Reviewed-on: https://chromium-review.googlesource.com/c/1441774Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Vulkan: Use glslang's internal BUILD.gn. · 0cb3b0f1
      Jamie Madill authored
      This retires the ANGLE BUILD.gn file for glslang. Also makes a few more
      repos sync from Chromium's copy using build overrides. This should
      speed up Chrome checkouts slightly.
      
      Bug: angleproject:3088
      Change-Id: I530f28d9b13469bbe6471a4c61e7353d599d81ec
      Reviewed-on: https://chromium-review.googlesource.com/c/1422545Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarTobin Ehlis <tobine@google.com>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
  8. 28 Jan, 2019 4 commits
  9. 26 Jan, 2019 2 commits
  10. 25 Jan, 2019 2 commits
  11. 24 Jan, 2019 1 commit
  12. 23 Jan, 2019 3 commits