1. 02 Feb, 2022 1 commit
  2. 31 Jan, 2022 1 commit
    • Shahbaz Youssefi's avatar
      Vulkan: Emulate dithering · 665ddccd
      Shahbaz Youssefi authored
      Dithering in OpenGL is vaguely defined, to the extent that no dithering
      is also a valid dithering algorithm.  Dithering is enabled by default,
      but emulating it has a non-negligible cost.  Similarly to some other
      GLES drivers, ANGLE enables dithering only on low-bit formats where
      visual banding is particularly common; namely RGBA4444, RGBA5551 and
      Dithering is emulated in the fragment shader and is controlled by a spec
      constant.  Every 2 bits of the spec constant correspond to one
      attachment, with the value indicating:
      - 00: No dithering
      - 01: Dither for RGBA4444
      - 10: Dither for RGBA5551
      - 11: Dither for RGB565
      The translator appends code to the shader that, based on the format
      specified by the specialization constant, adds dithering to each color
      attachment output.  A 2x2 Bayer matrix is used for dithering, indexed by
      gl_FragCoord.xy % 2.
      Bug: angleproject:6755
      Change-Id: Ib45da5938e299b6626bff921119d63e7357dd353
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3374261
      Reviewed-by: default avatarTim Van Patten <timvp@google.com>
      Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
  3. 28 Jan, 2022 1 commit
  4. 25 Jan, 2022 1 commit
  5. 18 Jan, 2022 1 commit
  6. 11 Jan, 2022 1 commit
  7. 13 Dec, 2021 1 commit
  8. 04 Dec, 2021 1 commit
  9. 03 Dec, 2021 1 commit
  10. 02 Dec, 2021 1 commit
  11. 24 Nov, 2021 2 commits
  12. 23 Nov, 2021 2 commits
  13. 12 Nov, 2021 1 commit
  14. 06 Nov, 2021 1 commit
  15. 14 Oct, 2021 1 commit
    • Shahbaz Youssefi's avatar
      Vulkan: SPIR-V Gen: Drop dependency to glslang · f3d5dac3
      Shahbaz Youssefi authored
      The SPIR-V gen path is now made default.  Compilation through glslang is
      still supported for debugging, and is enabled on the GLSL* end2end tests
      for smoke testing.  On release builds, glslang is not supported.
      To test with glslang, add the following gn arg (only necessary if dcheck
      is disabled):
          angle_enable_spirv_gen_through_glslang = true
      Then enable the generateSPIRVThroughGlslang feature.  This can be done
      by setting an environment variable:
          ANGLE_FEATURE_OVERRIDES_ENABLED=generateSPIRVThroughGlslang ./angle_deqp_gles2_tests
      Binary size saving:
      - 1.3MB on Linux (SPIR-V gen itself: 240KB)
      - 730KB on Android (SPIR-V gen itself: 140KB)
      Perf tests:
      - LinkProgramBenchmark.Run/vulkan_compile_single_thread
        * Through glslang:
            truncated mean: 1287033.36
        * Direct SPIR-V Gen:
            truncated mean: 244495.91  (~80% reduction)
      - LinkProgramBenchmark.Run/vulkan_compile_multi_thread
        * Through glslang:
            truncated mean: 4565894.83
        * Direct SPIR-V Gen:
            truncated mean: 1158164.10  (~75% reduction)
      Bug: angleproject:4889
      Bug: angleproject:6210
      Change-Id: I486342702977c8114e90073b97183aba115a8b2d
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115140
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: default avatarTim Van Patten <timvp@google.com>
  16. 13 Oct, 2021 1 commit
    • Charlie Lao's avatar
      Vulkan: Add feature flag to prefer CPU copy instead of staged update · ea580484
      Charlie Lao authored
      For ARM GPU, use GPU to do buffer to buffer copy has performance penalty
      due to potential bubble in the vertex pipeline. This CL adds a feature
      flag preferCPUForBufferDataSubData so that we can enable this behavior
      for ARM GPUs.
      This CL also tracks if GPU has referenced this BufferVk's storage since
      it got new storage. Due to sub-allocation, we may get a new sub-range of
      the same BufferHelper object when allocating new storage. But we
      currently do not have a way to track GPU progress of the sub-range of a
      buffer. So we will end up using BufferHelper's queueSerial to decide if
      it is still GPU busy or not. This CL adds mHasBeenReferencedByGPU
      boolean variable that will set to false when we got a new allocation and
      set to true as soon as buffer is been referenced by any GPU command. We
      use this to avoid checking queueSerial if it never been referenced by
      GPU. This is a temporary workaround for the bug, the full fix is tracked
      by https://issuetracker.google.com/201826021
      Bug: b/200067929
      Change-Id: I231fb0a678b0165a2ce1775d0aa4dbe7512fb4a8
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183398
      Commit-Queue: Charlie Lao <cclao@google.com>
      Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: default avatarShahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: default avatarTim Van Patten <timvp@google.com>
  17. 05 Oct, 2021 1 commit
  18. 17 Sep, 2021 1 commit
  19. 14 Sep, 2021 1 commit
  20. 02 Sep, 2021 1 commit
  21. 30 Aug, 2021 1 commit
  22. 24 Jul, 2021 1 commit
  23. 20 Jul, 2021 1 commit
  24. 14 Jul, 2021 1 commit
  25. 28 Jun, 2021 1 commit
  26. 24 Jun, 2021 1 commit
    • Shahbaz Youssefi's avatar
      Vulkan: Support OVR_multiview and OVR_multiview2 · 5b314268
      Shahbaz Youssefi authored
      Multiview is supported in Vulkan simply by specifying the number of
      views in the render pass, and creating the appropriate image views.  A
      number of changes to the way image views and render targets are stored
      are made to support those that don't cover the entire range of layers.
      One particular detail that is not implemented in this change is the use
      of queries in combination with multiview.  Vulkan specifies that N
      queries are actually produced (N being the number of views) which must
      be summed by the application, but this is not currently done.
      Bug: angleproject:6048
      Change-Id: I1d4a9894c232d3a93d7a97c9fa0eedc334e57469
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967625
      Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
      Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: default avatarCharlie Lao <cclao@google.com>
  27. 23 Jun, 2021 1 commit
  28. 21 May, 2021 2 commits
  29. 19 May, 2021 1 commit
  30. 18 May, 2021 1 commit
  31. 14 May, 2021 1 commit
    • Charlie Lao's avatar
      Vulkan: Add feature flag to flush at framebuffer boundary · 09dad082
      Charlie Lao authored
      Testing shows most app traces seeing performance improved on ARM GPU
      when we flush at FBO boundary instead of one submit per frame. This
      likely due to more frequent submission means less chance of GPU
      starvation. This also helps ANGLE to detect GPU finish at finer grain
      since the queue serial is per submission. Finer grain detection of
      object completion means memory gets recycled quicker and mapBufferRange
      able to hit fast code path more often. With this CL, manhattan 3.1
      offscreen score also score improves 7%. This may also helps onscreen
      performance if frame time is on the edge of 16ms by submit FBO rendering
      earlier instead of been blocked by vkAcquireNextImage.
      Bug: b/187993625
      Bug: angleproject:5295
      Change-Id: I2946a7159231d36019ace89805a69ac8e906ce94
      Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888709
      Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: default avatarIan Elliott <ianelliott@google.com>
      Commit-Queue: Charlie Lao <cclao@google.com>
  32. 22 Apr, 2021 1 commit
  33. 13 Apr, 2021 2 commits
  34. 10 Apr, 2021 1 commit
  35. 09 Apr, 2021 1 commit
  36. 23 Mar, 2021 1 commit