1. 30 Sep, 2019 2 commits
  2. 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>
  3. 26 Sep, 2019 9 commits
  4. 25 Sep, 2019 7 commits
  5. 24 Sep, 2019 9 commits
  6. 23 Sep, 2019 7 commits