1. 05 Feb, 2019 4 commits
    • Fix issues with config whitelisting. · d01c504e
      Jamie Madill authored
      The Android Shield TV confing was not properly initializing on ES1/Vulkan.
      Also Ozone configs were failing to initialize ES 3.0 contexts.
      
      Bug: angleproject:2286
      Bug: chromium:928583
      Change-Id: I7e54cdd1bf29791dffee3c70f7ebd3a1283eb5c4
      Reviewed-on: https://chromium-review.googlesource.com/c/1453480Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Do not call eglMakeCurrent with invalid parameters · 9bb59c5c
      Courtney Goeltzenleuchter authored
      When releasing the thread only call makeCurrent if we have a display
      to use. Calling with EGL_NO_DISPLAY is not valid (though some devices
      allow it.)
      
      Bug: angleproject:3102
      
      Change-Id: I2cf48011294d0264d3b1cb0318a2a80715e37f60
      Reviewed-on: https://chromium-review.googlesource.com/c/1436840Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
    • Use whitelist to filter test configs. · 7085305f
      Jamie Madill authored
      Before we would try all the configs and filter those which fail to
      init. Now we gather the System Info and if successful check a list of
      supported configs. If System Info init fails we fall back to the prior
      method.
      
      This speeds up end2end tests init. It also allows for more reliable
      profile captures with VTune. It also will cause a test failure if a
      config unexpectedly fails. Previously we would silently pass without
      running the config's test. Includes a few changes:
      
       * D3D reference tests are disabled. They don't appear to be working.
       * Mac ES 3.1 is disabled due to lack of support.
       * WGL on AMD Windows is disabled due to lack of ES compatibility.
       * ES 3.2 contexts are explicitly disabled.
       * Vulkan is limited to ES 2.0.
       * The Windows GLES back-end is limited to NVIDIA with ES 2.0 & 3.0.
       * A unit test that verifies the whitelist matches availability.
      
      Bug: angleproject:2472
      Change-Id: Ib72214bfbbff13c124fa15a6494d0aabb52f2e62
      Reviewed-on: https://chromium-review.googlesource.com/c/1436168
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
    • 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