1. 03 Oct, 2019 4 commits
  2. 02 Oct, 2019 10 commits
  3. 01 Oct, 2019 8 commits
    • Reland "Vulkan: Use VK repos' internal BUILD.gn files" · f22f16d3
      Tobin Ehlis authored
      This is a reland of 552f5fcb
      There was a missing build dependence causing a build no-op
      issue which has now been fixed in the upstream Vulkan Validation
      Layer repo.
      
      Primary workaround that need to be re-visted and fixed are:
      1. Disabled validation layers on 32-bit Windows
      2. Disabled validation layers on 32-bit Android
      3. Disabled DebugUtils on Android, using DebugReport instead
      4. Using custom VK Loader branch to avoid WDK dependence
      
      Original change's description:
      > Vulkan: Use VK repos' internal BUILD.gn files
      >
      > This retires custom BUILD.gn files for the Vulkan Headers, Tools,
      > Validation-Layers, and Loader repos. They now have integrated BUILD.gn
      > files so switched ANGLE to use those by default.
      > Also Validation Layer, Loader, and Tools repos no longer uses codegen
      > so this speeds up the build overall.
      > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
      > to VK_LAYER_KHRONOS_validation unified layer.
      >
      > This changes includes a temporary workaround to the Vulkan-Loader repo
      > to remove its Window's build dependence on WDK. There are plans to
      > remove that depenedence in Loader master, but until then we can use
      > our custom branch workaround.
      > It also includes a custom branch for validation layers that includes
      > some build fixes for ANGLE.
      > Finally, the layers were crashing on Android when attempting to use
      > DebugUtils extension so forcing DebugReport on Android for now.
      >
      > Bug: angleproject:2449
      > Bug: angleproject:3320
      > Bug: angleproject:3852
      > Bug: angleproject:3924
      > Bug: angleproject:3925
      > Bug: angleproject:3946
      > Bug: chromium:997009
      > Bug: chromium:997016
      > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
      > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
      > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
      > Reviewed-by: Jamie Madill <jmadill@chromium.org>
      > Commit-Queue: Tobin Ehlis <tobine@google.com>
      
      Bug: angleproject:2449, angleproject:3320, angleproject:3852
      Change-Id: I373ada091a1329db5e304874079428d01ba21d52
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778302Reviewed-by: 's avatarTobin Ehlis <tobine@google.com>
      Commit-Queue: Tobin Ehlis <tobine@google.com>
    • Vulkan: Enable dEQP-GLES31.functional.shaders.* · 377b1679
      Tim Van Patten authored
      The dEQP-GLES31.functional.shaders.* tests are currently passing for
      GLES 3.1, so I'm removing them from the expectations file. We don't have
      GLES 3.2 testing for ANGLE-Vk yet, so those may need to be revisited.
      
      Bug: angleproject:3569
      Test: dEQP-GLES31.functional.shaders.*
      Change-Id: Iff1fcfae7d82444432468b64d5bfa046beb9bf45
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1822740Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Tim Van Patten <timvp@google.com>
    • Vulkan: Full support for program interface queries · 616a4dc0
      Tim Van Patten authored
      Program interface queries are a generic way to query attributes of
      the program like uniforms, samplers, attributes, etc. This change
      supports those queries for program outputs.
      
      Bug: angleproject:3596
      Test: dEQP-GLES31.functional.program_interface_query.*
      Test: ProgramInterfaceTest.cpp
      Change-Id: I0f13692949073b45988b6f930eee9eaa6411bbe2
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1801998
      Commit-Queue: Tim Van Patten <timvp@google.com>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Vulkan: Implement multi-threaded GL. · f10bf6bf
      Jamie Madill authored
      The main component of this change is to make vk::BufferHelper,
      vk::ImageHelper and vk::SyncHelper use a common path. We introduce a
      new "vk::SharedGarbage" helper class that stores small lists of garbage
      from individual objects like an ImageHelper or BufferHelper. The
      SharedGarbage is stored in the RendererVk with the ResourceUse of the
      helper object. The ResourceUse tells RendererVk when it is safe to
      destroy the GarbageObjects.
      
      New "onGraphAccess" commands are added in a few places to enable the
      common garbage collection path. A couple Context-only resources like
      default attributes now are referenced where they were not before.
      
      Also reorganizes some functions so we can add a few helpful ASSERTs
      to our graph dependencies. Added "updateCurrentAccessNodes" for this.
      
      Also adds a "RendererScoped" helper to replace many uses of
      "ContextScoped".
      
      The multithreading EGL tests mostly pass but have some remaining
      flakiness so cannot yet be enabled.
      
      Bug: angleproject:2464
      Change-Id: Ia3e3ae8848d731abf3f21ebe04c33e381e130be0
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808444
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Vulkan: Base/max level fixes and cleanup · 988f7170
      Cody Northrop authored
      This CL cleans up references to base/max level bug and fixes
      one lingering issue regarding special handling of depth/z for
      arrayed surfaces.
      
      Bug: angleproject:3148
      Bug: angleproject:3184
      Bug: angleproject:3948
      Bug: angleproject:3949
      Bug: angleproject:3950
      Test: dEQP-GLES3.functional.texture.mipmap.*base_level*
      Test: dEQP-GLES3.functional.texture.mipmap.*max_level*
      Test: Texture2DArrayTestES3.DrawWithLevelsOutsideRangeWithInconsistentDimensions
      Change-Id: Iad72005a111507c50b8be9726adc32285bbae52b
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1832757Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Cody Northrop <cnorthrop@google.com>
    • GLES2: Use require_constant_initialization for g_Mutex · 755417dd
      Jaime Bernardo authored
      A static assert to verify that the global mutex g_Mutex is trivially
      constructed fails to compile with clang when using the STL shipped
      with Visual Studio 2019.
      
      Use __attribute__((require_constant_initialization)) instead to verify
      for constant initialization.
      
      BUG=angleproject:3936
      
      Change-Id: I5969762ad5a99033143513d7c4992344da276b1a
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1832164Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
      Commit-Queue: Geoff Lang <geofflang@chromium.org>
    • Vulkan: Narrow skip lists for 3D and 2DArray tests to Compute · 4a276034
      Cody Northrop authored
      Narrow these skips to just compute shader failures, which
      we will tackle as part of the next sprint.
      
      Bug: 3188
      Bug: 3189
      Bug: 3810
      Test: CopyTexImageTestES3.2DArraySubImage
      Change-Id: I74c259712e5f3c9296bd3a6241d1da8f1668ca36
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1832881
      Commit-Queue: Ian Elliott <ianelliott@google.com>
      Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com>
    • Update expectations for deqp failure · e49df747
      Courtney Goeltzenleuchter authored
      KHR-GLES3.packed_depth_stencil.clear_buffer.depth24_stencil8
      KHR-GLES3.packed_depth_stencil.verify_read_pixels.depth24_stencil8
      Appear to be failing due to a driver issue on Pixel devices, update
      expectations to call out that bug.
      
      Bug: angleproject:3683
      Change-Id: Ibb226078e561610351be8223d04f27a5ff69bf9e
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1832759Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
      Reviewed-by: 's avatarIan Elliott <ianelliott@google.com>
      Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
  4. 30 Sep, 2019 3 commits
  5. 27 Sep, 2019 6 commits
    • Vulkan: Emulate instanced attrib divisor · 71c1138d
      Tobin Ehlis authored
      This sets instancedArrays[ANGLE|EXT] extenstions as always
      supported regardless of underlying Vulkan HW's max vertex attrib
      divisor.
      Then detect instances where app sets a divisor that isn't supported
      by hardware and emulate those cases. Emulations is accomplished by
      copying the instanced attribs to a new buffer where each attrib is
      present once per instance, using the attrib divisor value as a
      factor to replicate the attribs, and then setting the actual divisor
      value for the draw to "1".
      Also, we only store 8 bits for the divisor used in the PSO, so this
      code also handles emulation of the case where divisor is > 255.
      
      This is passing all of the drawInstanced/Elements dEQP tests
      where divisor has to be emulated.
      
      Also enabled end2end InstancingTestES3 for Vulkan backend.
      
      Bug: angleproject:2672
      Change-Id: I9932f9eab49b16a19e8bbd35dacaf3b5a27a213f
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758689Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com>
      Commit-Queue: Tobin Ehlis <tobine@google.com>
    • Vulkan: Support texture base and max levels · cb16fb5f
      Cody Northrop authored
      The Vulkan backend uses a vkImage that matches the number
      of effective levels in the GL texture. This is due to the fact
      that GL textures can have really strange layouts that only make
      sense when base level and max level are applied.
      
      For instance, take the following layout with disjoint mip levels:
      
        Level 0: 4x4 RGBA
        Level 1: 2x2 RGBA
        Level 2: 10x10 RGB
      
      If base level is set to zero and max level is set to 1, the image is
      still considered mip-complete:
      
        Level 0: 4x4 RGBA  ==> Base Level 0 ==>  Level 0: 4x4 RGBA
        Level 1: 2x2 RGBA  ==> Max Level 1  ==>  Level 1: 2x2 RGBA
        Level 2: 10x10 RGB
      
      If base and max level are then both set to 2, the texture is still
      considered complete, but of a different size and format:
      
        Level 0: 4x4 RGBA
        Level 1: 2x2 RGBA
        Level 2: 10x10 RGB ==> Base/Max Level 2 ==> Level 2: 10x10 RGB
      
      When the base or max level is changed, we must recreate the vkImage to
      match the new level count.
      
      To support that, we:
      
       - Stage updates from the current image to the new image
       - Only stage updates if there aren't already staged updates for a level
       - Free the current image and so it can be recreated at the next draw
      
      This CL does the following:
      
       - Refactors TextureVk::copyImageDataToBuffer to support staging updates
         without flush
       - Adds TextureVk::copyImageDataToBufferAndGetData to support previous
         use model
       - Adds TextureVk::changeLevels, triggered during syncState, which stages
         updates and releases the current image.
       - Updates ImageHelper::flushStagedUpdates to understand base/max levels
       - Updates TextureVk::ensureImageInitialized and TextureVk::generateMipmap
         to account for base/max level
       - Tracks base and max levels in ImageHelper
       - Adds ImageHelper::stageSubresourceUpdateFromBuffer to support
         this use case
       - Adds ImageHelper::isUpdateStaged to determine if changeLevels
         should propagate data
       - Makes gl::TextureTypeToTarget available for use outside of ImageIndex
       - Enables several deqp and end2end tests
      
      Bug: angleproject:3148
      Test: dEQP-GLES3.functional.texture.mipmap.*base_level*
      Test: dEQP-GLES3.functional.texture.mipmap.*max_level*
      Change-Id: I14ca071c9c62eb310dfed7ef9290dc65fc3ff696
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776933Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com>
      Commit-Queue: Cody Northrop <cnorthrop@google.com>
    • Rename util/system_utils to util/test_utils. · 57b37b6b
      Jamie Madill authored
      This removes a GN naming conflict between util/system_utils and
      common/system_utils. This conflict was preventing us from adding
      unit tests to utils' version of system_utils. Since these functions are
      only useful to tests and samples rename them test_utils for simplicity.
      
      Will enable further development of ANGLE's standalone testing harness.
      
      Bug: angleproject:3162
      Change-Id: I9e34fb69f96c5de6dc2453fce4148a0f285e15ed
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1825268Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com>
      Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • GLES1: Correct 'active' attributes mask. · d627d154
      Jamie Madill authored
      The active attributes are those consumed by the Program. Previously
      we were returning those enabled as client arrays. But this excluded
      default attributes.
      
      Uncovered when changing how resource usage was tracked for Vulkan
      multithreading.
      
      Bug: angleproject:2464
      Change-Id: I48996be9e4470bb1432e042f98046c95ea8adbfe
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808718
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    • Vulkan: Implement basic geometry shader feature · a0159c03
      Jaedon Lee authored
      Enable the default behavior of the geometry shader
      
      Bug: angleproject:3571
      Test: dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.lines
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_loop
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_strip
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangles
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_strip
            dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_fan
      Change-Id: I65708d19bbfe6a0ad8ca392a1d6b3609b1410ef4
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793753
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • Roll ./third_party/spirv-tools/src 510ca9d616f5..10951a7c9a13 (3 commits) · f8bb9087
      angle-autoroll authored
      https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/510ca9d616f5..10951a7c9a13
      
      
      Created with:
        gclient setdep -r ./third_party/spirv-tools/src@10951a7c9a13
      
      If this roll has caused a breakage, revert this CL and stop the roller
      using the controls here:
      https://autoroll.skia.org/r/spirv-tools-angle-autoroll
      Please CC ynovikov@google.com on the revert to ensure that a human
      is aware of the problem.
      
      To report a problem with the AutoRoller itself, please file a bug:
      https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
      
      Documentation for the AutoRoller is here:
      https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
      
      Bug: None
      TBR=ynovikov@google.com
      Change-Id: I1d4d4b0b102d9f667bdfc494794df14c1c1eeec1
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1828422Reviewed-by: 's avatarangle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
      Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
  6. 26 Sep, 2019 9 commits