1. 30 Jan, 2019 2 commits
  2. 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>
  3. 28 Jan, 2019 4 commits
  4. 26 Jan, 2019 2 commits
  5. 25 Jan, 2019 2 commits
  6. 24 Jan, 2019 1 commit
  7. 23 Jan, 2019 4 commits
    • Revert "Vulkan: Adding custom pool allocator" · 47ca1b2f
      Tobin Ehlis authored
      This reverts commit 05459e06.
      
      Reason for revert: Clusterfuzz bugs flagged this commit
      
      Original change's description:
      > Vulkan: Adding custom pool allocator
      > 
      > Copied pool allocator used by compiler to common and hooking it up as
      > custom allocator for CommandPools. Modified it to support reallocation.
      > 
      > RendererVk now has a private poolAllocator and VkAllocationCallbacks
      > struct. The allocation callbacks are initialized to static functions
      > in RendererVk::initializeDevice() and then passed to CommandPool init()
      > and destroy() functions.
      > 
      > Using the pool allocator saves Command Pool/Buffer clean-up time which
      > was showing us as a bottleneck is some cases.
      > 
      > Bug: angleproject:2951
      > Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4
      > Reviewed-on: https://chromium-review.googlesource.com/c/1409867
      > Commit-Queue: Tobin Ehlis <tobine@google.com>
      > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
      > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      
      TBR=jmadill@chromium.org,tobine@google.com,ianelliott@google.com,syoussefi@chromium.org
      
      Change-Id: I363a351667c4dddef79833061790da90de477e70
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: angleproject:2951
      Reviewed-on: https://chromium-review.googlesource.com/c/1430679Reviewed-by: 's avatarTobin Ehlis <tobine@google.com>
      Commit-Queue: Tobin Ehlis <tobine@google.com>
    • Documentation update · 2553690d
      Shahbaz Youssefi authored
      Mostly mentioning other platforms where older documentation mentioned
      only Windows.
      
      Bug: angleproject:1944
      Change-Id: Ib020892fbdee22d3dc60aa71ac6b3c5f504728c4
      Reviewed-on: https://chromium-review.googlesource.com/c/1430559Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    • Implement EGL_KHR_fence_sync and EGL_KHR_wait_sync · 5313c8a8
      Shahbaz Youssefi authored
      EGL_KHR_fence_sync introduces the EGLSync object and associated
      create/destroy/clientWait functions.  EGL_KHR_wait_sync adds the
      serverWait function on top of that.
      
      Bug: angleproject:2466
      Change-Id: Iebb239a85c4471ea18b3c3a8a83b793af555e31d
      Reviewed-on: https://chromium-review.googlesource.com/c/1412261
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Enable ParallelCompile for Mac · 828acb39
      jchen10 authored
      Linked in parallel, GLSLTest_ES3.LargeNumberOfFloat4Parameters
      fails on the Mac asan bots. It looks a driver bug caused by
      handling some long GLSL expressions. This works around it by
      breaking down the expression in the test from:
          return a0 + a1 + ... + alast;
      to:
          vec4 sum = vec4(0, 0, 0, 0);
          sum += a0;
          sum += a1;
          ...
          sum += alast;
          return sum;
      
      This also fixes a CGLPixelFormat leak, although it's irrelevant
      to the bot failures.
      
      BUG=922936
      BUG=angleproject:3087
      BUG=angleproject:3047
      
      Change-Id: I20249ada43e9dd226f582a568ed4ed50a0e4375d
      Reviewed-on: https://chromium-review.googlesource.com/c/1426430Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
  8. 22 Jan, 2019 2 commits
    • Vulkan: Don't allow creation of ES3 contexts. · 0c2c923e
      Geoff Lang authored
      Refactor RendererVk::getMaxSupportedESVersion to limit max supported versions
      similar to RendererGL.
      
      This allows dEQP-EGL.functional.robustness.reset_context.shaders.infinite_loop.*
      tests to pass but they are currently skipped due to TDR issues on some
      platforms.
      
      When we start to test on top of ES3 contexts, we will either have to supress
      some dEQP EGL tests or expose it some other mechanism.
      
      BUG=angleproject:3058
      
      Change-Id: I8d28fe75edd8346b46d197e0217afbee1c19b7e3
      Reviewed-on: https://chromium-review.googlesource.com/c/1409869Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
    • Vulkan: Adding custom pool allocator · 05459e06
      Tobin Ehlis authored
      Copied pool allocator used by compiler to common and hooking it up as
      custom allocator for CommandPools. Modified it to support reallocation.
      
      RendererVk now has a private poolAllocator and VkAllocationCallbacks
      struct. The allocation callbacks are initialized to static functions
      in RendererVk::initializeDevice() and then passed to CommandPool init()
      and destroy() functions.
      
      Using the pool allocator saves Command Pool/Buffer clean-up time which
      was showing us as a bottleneck is some cases.
      
      Bug: angleproject:2951
      Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4
      Reviewed-on: https://chromium-review.googlesource.com/c/1409867
      Commit-Queue: Tobin Ehlis <tobine@google.com>
      Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  9. 21 Jan, 2019 3 commits
    • Vulkan: refactor CommandGraphResource · c81e7bfe
      Shahbaz Youssefi authored
      Merged back RecordableGraphResource into CommandGraphResource.  Queries
      didn't really need to be a resource, as they always inserted separate
      single-command nodes in the graph.  The CommandGraph class is augmented
      with a few functions that generate such nodes.
      
      This is in preparation for debug markers, as they too require such
      nodes.
      
      Bug: angleproject:2853
      Change-Id: I5251a0e0fdd42ed1126921b4acc13687a14af9cd
      Reviewed-on: https://chromium-review.googlesource.com/c/1422549
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Make BlobCache use independent from ANGLE_program_cache_control · 37d2e606
      Shahbaz Youssefi authored
      The decision to enable caching or not was based on the size of the cache
      as directed by eglProgramCacheResizeANGLE, which is incorrect for
      applications that only use the ANDROID_blob_cache extension.
      
      The new behavior is as follows:
      
      - If EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE is specifically
        requested and set to true, but the size of the cache is 0, caching is
        disabled for the context.
      - If EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE is specifically
        requested and set to false, caching is disabled for the context.
      - Otherwise, caching is left enabled for the context, although the cache
        possibly has a size of zero, which effectively disables it.  During
        application execution, if the blob cache callbacks are set, the
        application cache will be used.
      
      Bug: 896406, angleproject:2516
      Change-Id: Ic0cabda03fb6bf53994e86e3ede30afc8021d67e
      Reviewed-on: https://chromium-review.googlesource.com/c/1405708
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Use binary merge strategy for code generator hashes. · bf433727
      Jamie Madill authored
      The binary merge strategy marks the file as conflicted but doesn't
      actually change the file contents. This keeps the json hashes file
      valid and alerts the user that the generator needs to be re-run.
      
      Bug: angleproject:3083
      Change-Id: Ia04e96d56a2d92ee061f25e7de79b6a1fd3ce4ab
      Reviewed-on: https://chromium-review.googlesource.com/c/1423519Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
  10. 19 Jan, 2019 2 commits
  11. 18 Jan, 2019 8 commits
  12. 17 Jan, 2019 6 commits
    • Include common/platform.h where used · 5fe7c5b9
      Yuly Novikov authored
      Bug: 922443
      Change-Id: I35b9e34266d4a15f8d0769c2770801b1b0511398
      Reviewed-on: https://chromium-review.googlesource.com/c/1418091Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
    • Reland "Don't call Texture::onDestroy twice for the zero textures." · d46165e3
      Geoff Lang authored
      This reverts commit 3adcf1e4.
      
      Reason for revert: Likely not the cause of failures seen.
      
      Original change's description:
      > Revert "Don't call Texture::onDestroy twice for the zero textures."
      > 
      > This reverts commit d3e0e84c.
      > 
      > Reason for revert: likely cause for crbug.com/922296
      > 
      > BUG=chromium:922296
      > 
      > Original change's description:
      > > Don't call Texture::onDestroy twice for the zero textures.
      > > 
      > > The BindingPointer will call onDestroy when all references are removed, no
      > > need to do it explicitly.
      > > 
      > > BUG=angleproject:3070
      > > 
      > > Change-Id: Ic5dd4da8f73e204d26d9d3a3c6e1eff9fded5411
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1409868
      > > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      > > Commit-Queue: Geoff Lang <geofflang@chromium.org>
      > 
      > TBR=geofflang@chromium.org,jmadill@chromium.org
      > 
      > Change-Id: I38097218d49940e7ac3ad914714294b019c154fd
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: angleproject:3070
      > Reviewed-on: https://chromium-review.googlesource.com/c/1413239
      > Reviewed-by: Corentin Wallez <cwallez@chromium.org>
      > Commit-Queue: Corentin Wallez <cwallez@chromium.org>
      
      TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:922296, angleproject:3070
      Change-Id: I58b1c445f81e4a7f38df375fd3311043b571e834
      Reviewed-on: https://chromium-review.googlesource.com/c/1417770Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
    • GL: Temporarily disable parallel shader compile. · c66cd693
      Geoff Lang authored
      The Skia bots have been unable to roll ANGLE since parallel compile landed in
      ANGLE.  Speculatively disable parallel compile using a workaround.
      Failed roll: https://skia-review.googlesource.com/c/skia/+/184705
      
      Also seen instability on Linux, Mac and Windows in 922936.
      
      BUG=922936
      BUG=849576
      
      Change-Id: I7116b3f6541425135984c52a8077bdb98d961784
      Reviewed-on: https://chromium-review.googlesource.com/c/1415729Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
    • Revert "Re-enable 2DArray Copy Texture Tests" · b3bdd2ac
      Jamie Madill authored
      This reverts commit 91b95ce0.
      
      Reason for revert: Tests passing in release but failing in Debug.
      
      https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win10%20FYI%20Debug%20%28NVIDIA%29/2556
      
      [ RUN      ] Texture2DArrayCopy.SnormFormats/ES3_D3D11
      Error getting extension string from EGL Window.
      ../../third_party/angle/src/tests/test_utils/ANGLETest.cpp(493): error: Expected equality of these values:
        (0x3000)
          Which is: 12288
        eglGetError()
          Which is: 12289
      Stack trace:
      Backtrace:
      	StackTraceGetter::CurrentStackTrace [0x00AD4A9A+90]
      	testing::internal::UnitTestImpl::CurrentOsStackTraceExceptTop [0x00AEAD5A+74]
      	testing::internal::AssertHelper::operator= [0x00AEA86B+75]
      	ANGLETestBase::swapBuffers [0x00A743C0+256]
      	ANGLETestBase::ANGLETestTearDown [0x00A73817+167]
      	ANGLETest::TearDown [0x00A7671A+26]
      	angle::CopyTexture3DTest::TearDown [0x002A085D+29]
      
      [  FAILED  ] Texture2DArrayCopy.SnormFormats/ES3_D3D11, where GetParam() = ES3_D3D11 (59 ms)
      [----------] 1 test from Texture2DArrayCopy (59 ms total)
      
      [----------] 3 tests from CubeMapTextureTest
      [ RUN      ] CubeMapTextureTest.RenderToFacesConsecutively/ES2_D3D11_10_0
      Assertion failed: mState.surfaceSet.empty(), file ../../third_party/angle/src/libANGLE/renderer/DisplayImpl.cpp, line 23
      abort() has been called
      Received fatal exception EXCEPTION_BREAKPOINT
      Backtrace:
      
      Original change's description:
      > Re-enable 2DArray Copy Texture Tests
      > 
      > Re-enables 3 tests that were previously failing on Nvidia hardware on
      > D3D11. The tests seem stable after a trybot driver update.
      > 
      > Bug: angleproject:2896
      > Change-Id: I17d76a5a67fd57ba7257ef22aa5a1371bf5ed55e
      > Reviewed-on: https://chromium-review.googlesource.com/c/1308735
      > Commit-Queue: Jamie Madill <jmadill@chromium.org>
      > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      
      TBR=geofflang@chromium.org,jmadill@chromium.org,brandon1.jones@intel.com
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: angleproject:2896
      Change-Id: I509756e8e6433fd3d04bc68a72e7cc7647485b56
      Reviewed-on: https://chromium-review.googlesource.com/c/1417771Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • ES31: Enable several SSBO end2end tests on D3D11 · 94d8a9a4
      Jiawei Shao authored
      This patch enables several SSBO tests on D3D11 in ANGLE end2end
      tests.
      
      Bug: angleproject:1951
      Change-Id: I1ba78133e5bbe581e8330c1c43755c174e28bf39
      Reviewed-on: https://chromium-review.googlesource.com/c/1415721Reviewed-by: 's avatarJiajia Qin <jiajia.qin@intel.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
    • ParallelCompile: add GL backend support · a100d8f4
      jchen10 authored
      For GL backend, at first each worker thread must have a naitve context
      for its own to work in. These worker contexts have to be shared from
      the main context, so that all shader and program objects are seen in
      any context. This extends backend displays to create and destroy the
      worker contexts. RendererGL manages and allocates them to the worker
      threads. ShaderImpl has a new compile method added to do the actual
      glCompile work in worker thread. The ProgramGL's link method is broken
      down by introducing the LinkEventGL class.
      
      Bug: chromium:849576
      
      Change-Id: Idc2c51b4b6c978781ae77810e62c480acc67ebb5
      Reviewed-on: https://chromium-review.googlesource.com/c/1373015
      Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>