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