1# ANGLE Wrangling 2 3As an ANGLE Sheriff. Your job is to: 4 5 1. Keep the [ANGLE Standalone][StandaloneCI] and [ANGLE/Chromium][ANGLEChromiumCI] waterfalls green. 6 1. Ensure developers have reliable pre-commit testing via the 7 [ANGLE Standalone][StandaloneTry] and [ANGLE/Chromium][ANGLEChromiumTry] try waterfalls. 8 1. Control and monitor the [ANGLE auto-rollers](#the-auto-rollers). 9 1. Act as a point of contact for the Chromium Sheriff and other teams monitoring ANGLE regressions. 10 1. **Note: currently not working!** Monitor and respond to ANGLE's [Perf alerts][PerfAlertGroup]. 11 12[StandaloneCI]: https://ci.chromium.org/p/angle/g/ci/console 13[ANGLEChromiumCI]: https://ci.chromium.org/p/chromium/g/chromium.angle/console 14[StandaloneTry]: https://ci.chromium.org/ui/p/angle/g/try/builders 15[ANGLEChromiumTry]: https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders 16[PerfAlertGroup]: https://groups.google.com/u/0/a/chromium.org/g/angle-perf-alerts 17 18If you're not an ANGLE team member, you can contact us on the public ANGLE project 19[Google group](https://groups.google.com/forum/#!forum/angleproject). 20 21**Note**: Please review and if needed update the [wrangler schedule]. 22 23**Note**: If you need to suppress test failures (e.g. to keep an auto-roller unblocked), see 24[Handling Test Failures](../doc/TestingAndProcesses.md). 25 26[wrangler schedule]: https://rotations.corp.google.com/rotation/5080504293392384 27 28## Task: Monitor ANGLE CI and Try Testers 29 30Your first job is to keep the ANGLE builders green and unblocked. 31 32### Post-commit CI builders 33 34There are two consoles for ANGLE continuous integration builders: 35 36 * Standalone ANGLE: https://ci.chromium.org/p/angle/g/ci/console 37 * Chromium + integrated ANGLE: https://ci.chromium.org/p/chromium/g/chromium.angle/console 38 39We recommend you track ANGLE build failures is via [Sheriff-o-matic][ANGLESoM]. 40Bookmark the link and check it regularly during your shift. **Note**: 41currently flaky failures show up as separate failure instances. 42 43[ANGLESoM]: https://sheriff-o-matic.appspot.com/angle 44 45We expect these waterfalls to be as "green" as possible. As a wrangler 46please help clean out any failures by finding and reverting problematic CLs, 47suppressing flaky tests that can't be fixed, or finding other solutions. We 48aim to have zero failing builds, so follow the campsite rule and leave the 49waterfall cleaner than when you started your shift. 50 51When you encounter red builds or flakiness, [file an ANGLE bug](http://anglebug.com/new) 52and set the label: `Hotlist-Wrangler` ([search for existing bugs][WranglerBugs]). 53 54[WranglerBugs]: https://bugs.chromium.org/p/angleproject/issues/list?q=Hotlist%3DWrangler&can=2 55 56See more detailed instructions on ANGLE testing by following [this link](README.md). 57 58### Pre-commit try builders 59 60In addition to the CI builders, we have a console for try jobs on the ANGLE CV (change verifier): 61 62 * Standalone ANGLE: https://ci.chromium.org/ui/p/angle/g/try/builders 63 * Chromium + integrated ANGLE: https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders 64 65Failures are intended on this waterfall as developers test WIP changes. 66You must act on any persistent flakiness or failure that causes developer drag 67by filing bugs, reverting CLs, or taking other action as with the CI waterfall. 68 69If you find a failure that is unrelated to ANGLE, [file a Chromium bug](http://crbug.com/new). 70Set the bug label `Hotlist-PixelWrangler`. Ensure you cc the current ANGLE and Chrome GPU 71wranglers, which you can find by consulting 72[build.chromium.org](https://ci.chromium.org/p/chromium/g/main/console). 73For more information see [Filing Chromium Bug Reports](#filing-chromium-bug-reports) below. 74 75You can optionally follow [Chromium bugs in the `Internals>GPU>ANGLE` component][ChromiumANGLEBugs] 76to be alerted to reports of ANGLE-related breakage in Chrome. 77 78[ChromiumANGLEBugs]: https://bugs.chromium.org/p/chromium/issues/list?q=component%3AInternals%3EGPU%3EANGLE&can=2 79 80**NOTE: When all builds seem to be purple or otherwise broken:** 81 82This could be a major infrastructure outage. File a high-priority bug using 83[g.co/bugatrooper](http://g.co/bugatrooper). 84 85### Filing Chromium Bug Reports 86 87The GPU Pixel Wrangler is responsible for *Chromium* bugs. Please file 88Chromium issues with the Label `Hotlist-PixelWrangler` for bugs outside of 89the ANGLE project. 90 91*IMPORTANT* info to include in Chromium bug reports: 92 93 * Links to all first failing builds (e.g. first windows failure, first mac failure, etc). 94 * Related regression ranges. See below on how to determine the ANGLE regression range. 95 * Relevant error messages. 96 * Set the **Components** to one or more value, such as (start typing "Internals" and you'll see choices): 97 * `Internals>GPU` for general GPU bugs 98 * `Internals>GPU>Testing` for failures that look infrastructure-related 99 * `Internals>GPU>ANGLE` for ANGLE-related Chromium bugs 100 * `Internals>Skia` for Skia-specific bugs 101 * Cc relevant sheriffs or blame suspects, as well as yourself or the current ANGLE Wrangler. 102 * Set the `Hotlist-PixelWrangler` Label. 103 104### How to determine the ANGLE regression range on Chromium bots: 105 106 1. Open the first failing and last passing builds. 107 1. For test failures: record `parent_got_angle_revision` in both builds. 108 1. For compile failures record `got_angle_revision`. 109 1. Create a regression link with this URL template: 110 `https://chromium.googlesource.com/angle/angle.git/+log/<last passing revision>..<first failing revision>` 111 112## <a name="the-auto-rollers"></a>Task: The Auto-Rollers 113 114The [ANGLE into Chrome auto-roller](https://autoroll.skia.org/r/angle-chromium-autoroll) automatically updates 115Chrome with the latest ANGLE changes. 116 117The [ANGLE into Android auto-roller](https://autoroll.skia.org/r/angle-android-autoroll) updates Android with 118the latest ANGLE changes. You must manually approve and land these rolls. The 119recommendation is to pre-approve the roll and set "**Autosubmit**". 120 * The auto-roller abandons a presubmit-passed roll whenever a new ANGLE change 121 comes. During work hours, it's hard for Wrangler to approve and land in 122 time. 123 124We also use additional auto-rollers to roll third party libraries into ANGLE and Chromium: 125 126 * [SwiftShader into ANGLE](https://autoroll.skia.org/r/swiftshader-angle-autoroll) 127 * [vulkan-deps into ANGLE](https://autoroll.skia.org/r/vulkan-deps-angle-autoroll) 128 * [VK-GL-CTS into ANGLE](https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll) 129 * [Chromium into ANGLE](https://autoroll.skia.org/r/chromium-angle-autoroll) 130 * [SwiftShader into Chromium](https://autoroll.skia.org/r/swiftshader-chromium-autoroll) 131 132**Roller health**: You will be cc'ed on all rolls. Please check failed rolls 133 to verify there is no blocking breakage. 134 135For all rollers, you can trigger manual rolls using the dashboards to land 136high-priority changes. For example: Chromium-side test expectation updates or 137suppressions. When a roll fails, stop the roller, determine if the root cause 138is a problem with ANGLE or with the upstream repo, and file an issue with an 139appropriate next step. 140 141To monitor the rollers during your shift, you can: 142 1. Open the [autoroll dashboard](https://autoroll.skia.org/) and put "angle" in `Filter`. The dashboard provides the status of ANGLE related rollers. Monitor their modes and numbers. 143 1. Filter out the non-critical emails by a filter: “`from:(*-autoroll (Gerrit))`”. This improves the signal to noise ratio of your inbox, so the important emails, ex) "`The roll is failing consistently. Time to investigate.`", can stand out. 144 145The autoroller configurations live in the 146[skia-autoroll-internal-config repository](https://skia.googlesource.com/skia-autoroll-internal-config.git/+/main/skia-public). 147Feel free to maintain these configs yourself, or file a Skia [autoroll bug][SkiaAutorollBug] 148for help as needed. 149 150[SkiaAutorollBug]: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug 151 152### Vulkan Dependencies auto-roller: Handling failures 153 154**Vulkan-deps consists of several related Vulkan dependencies**: Vulkan-Tools, 155Vulkan-Loader, Vulkan-ValidationLayers, Vulkan-Headers and other related 156repos. One common source of breaks is a Vulkan Headers update, which can take 157a while to be integrated into other repos like the Vulkan Validation Layers. 158No action on your part is needed for header updates. 159 160If a vulkan-deps AutoRoll CL triggers an failure in the `presubmit` bot, in 161the "export targets" step, you can: 162 163 1. Add missing headers to the upstream `BUILD.gn` if possible. See this [example CL][GNHeaderExample]. 164 1. Otherwise, add headers to `IGNORED_INCLUDES` in [`export_targets.py`][ExportTargetsPy]. See this 165[example CL][ExportHeaderExample]. 166 167[GNHeaderExample]: https://github.com/KhronosGroup/Vulkan-Loader/pull/968 168[ExportTargetsPy]: ../scripts/export_targets.py 169[ExportHeaderExample]: https://chromium-review.googlesource.com/c/angle/angle/+/3399044 170 171If the roll fails for a reason other than a header update or presubmit, 172determine the correct upstream repo and file an issue upstream. For simple 173compilation failures, we usually submit fixes ourselves. For more info on 174vulkan-deps see the [README][VulkanDepsREADME]. 175 176[VulkanDepsREADME]: https://chromium.googlesource.com/vulkan-deps/+/refs/heads/main/README.md 177 178### ANGLE into Chrome auto-roller: SwANGLE builders 179 180The ANGLE into Chromium roller has two SwiftShader + ANGLE (SwANGLE) builders: 181[linux-swangle-try-x64](https://luci-milo.appspot.com/p/chromium/builders/try/linux-swangle-try-x64) 182and 183[win-swangle-try-x86](https://luci-milo.appspot.com/p/chromium/builders/try/win-swangle-try-x86). 184However, failures on these bots may be due to SwiftShader changes. 185 186To handle failures on these bots: 1871. If possible, suppress the failing tests in ANGLE, opening a bug to investigate later. 1881. If you supsect an ANGLE CL caused a regression, 189 consider whether reverting it or suppressing the failures is a better course of action. 1901. If you suspect a SwiftShader CL, and the breakage is too severe to suppress, 191 (a lot of tests fail in multiple suites), 192 consider reverting the responsible SwiftShader roll into Chromium 193 and open a SwiftShader [bug](http://go/swiftshaderbugs). SwiftShader rolls into Chromium 194 should fail afterwards, but if the bad roll manages to reland, 195 stop the [autoroller](https://autoroll.skia.org/r/swiftshader-chromium-autoroll) as well. 196 197## Task: Monitor and respond to ANGLE's perf alerts 198 199Any large regressions should be triaged with a new ANGLE bug linked to any suspected CLs that may 200have caused performance to regress. If it's a known/expected regression, the bug can be closed as 201such. The tests are very flaky right now, so a WontFix resolution is often appropriate. 202