Closed Bug 1614376 Opened 6 years ago Closed 6 years ago

Add allowlist support to GfxInfo

Categories

(Core :: Graphics, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
mozilla75
Tracking Status
firefox75 --- fixed

People

(Reporter: aosmond, Assigned: aosmond)

References

Details

Attachments

(3 files)

We have quasi rollout logic in gfxPlatform for rolling out WebRender. It is getting more complicated with each revision. It is fairly simple to update the current blocklist to have a second pass which uses the same rules for specific features marked for rollout. These rules will have a special set of rollout status codes so we can easily identity them (e.g. ROLLOUT_OK, ROLLOUT_QUALIFIED, BLOCKED_ROLLOUT). We also need to extend the blocklist to support additional criteria required by the current rollout logic (device family ranges, battery status, screen size buckets, recent Windows 10).

Blocks: 1614377

The blocklist currently works by checking the current configuration
against a set of GfxDriverInfo rules. We stop searching as soon as we
find the first match, and return whatever status code that has.

This patch adds a second pass for features marked for rollout. The
current blocklisting rules will still apply as normal. However it will
then review the rollout list rules using the same logic. If we don't get
a match, then we block the feature otherwise we use the rollout status
code given in the rule.

New status codes introduced as part of this patch are as follows:

BLOCKED_ROLLOUT - Did not match any rules on the rollout list.

ROLLOUT_OK - Same as STATUS_OK but passed the rollout list.

ROLLOUT_QUALIFIED - Same as ROLLOUT_OK but should be controlled by our
qualified preference for experimentation purposes.

As part of the WebRender rollout, we have been only allowing users
meeting particular platform, battery and screen size requirements (among
others) to get WebRender by default. This patch adds support for battery
and screen size filters in the blocklist rules to allow us to control
that more easily. It also adds kludgey support for checking for recent
Windows 10 build numbers for rollout purposes; implementing this the
proper way would require an implementation like driver version checks,
which are much more complicated than most of the rules.

Currently the blocklist can block groups of devices, called a
DeviceFamily. However this only allows us to check specific IDs and not
ranges of device IDs like we do currently for the WebRender rollout.
This patch allows a device family to now specify start and end values
for device IDs we want to match in the blocklist rule.

Attachment #9125612 - Attachment description: Bug 1614376 - Part 1. Add support for a rollout list to the blocklist. → Bug 1614376 - Part 1. Add support for an allowlist to GfxInfo.
Summary: Add rollout support to the graphics blocklist → Add allowlist support to GfxInfo
Pushed by aosmond@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e11c62eba5f1 Part 1. Add support for an allowlist to GfxInfo. r=jrmuizel https://hg.mozilla.org/integration/autoland/rev/c5ac550f4966 Part 2. Add blocklist support for battery/screen size filters. r=jrmuizel https://hg.mozilla.org/integration/autoland/rev/b239f4b49722 Part 3. Add support for device ID ranges in blocklist rules. r=jrmuizel

Backed out for assertion failures on GfxInfoBase.cpp

backout: https://hg.mozilla.org/integration/autoland/rev/72f4dbe0d4336578bb1de382cdccc64eb7f36b47

push: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=b239f4b497223dc058b01ee47723fd1632126b3a&searchStr=windows%2C10%2Cx64%2Cmingw%2Cdebug%2Cmochitests%2Ctest-windows10-64-mingwclang%2Fdebug-mochitest-webgl1-core-e10s%2Cm%28gl1c%29&group_state=expanded

failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=288704272&repo=autoland&lineNumber=1153

[task 2020-02-13T12:18:45.434Z] 12:18:45 INFO - GECKO(1944) | ### XPCOM_MEM_BLOAT_LOG defined -- logging bloat/leaks to c:\users\task_1581594396\appdata\local\temp\tmpjb2vpn.mozrunner\runtests_leaks_gpu_pid7220.log
[task 2020-02-13T12:18:45.493Z] 12:18:45 INFO - GECKO(1944) | 1581596325489 Marionette TRACE Received observer notification command-line-startup
[task 2020-02-13T12:18:45.493Z] 12:18:45 INFO - GECKO(1944) | 1581596325490 Marionette DEBUG Init aborted (running=false, enabled=true, finalUIStartup=false)
[task 2020-02-13T12:18:45.632Z] 12:18:45 INFO - GECKO(1944) | 1581596325626 Marionette TRACE Received observer notification toplevel-window-ready
[task 2020-02-13T12:18:45.792Z] 12:18:45 INFO - GECKO(1944) | Assertion failure: manager (failed to get nsIScreenManager), at /builds/worker/workspace/build/src/widget/GfxInfoBase.cpp:644
[task 2020-02-13T12:18:45.891Z] 12:18:45 INFO - GECKO(1944) | #01: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x153288]
[task 2020-02-13T12:18:45.892Z] 12:18:45 INFO - GECKO(1944) | #02: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x166fa9]
[task 2020-02-13T12:18:45.892Z] 12:18:45 INFO - GECKO(1944) | #03: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x161f48]
[task 2020-02-13T12:18:45.893Z] 12:18:45 INFO - GECKO(1944) | #04: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x16ac4e]
[task 2020-02-13T12:18:45.894Z] 12:18:45 INFO - GECKO(1944) | #05: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x1d9b52]
[task 2020-02-13T12:18:45.894Z] 12:18:45 INFO - GECKO(1944) | #06: DumpCompleteHeap[Z:\task_1581594396\build\application\firefox\xul.dll +0x1715812]
[task 2020-02-13T12:18:45.894Z] 12:18:45 INFO - GECKO(1944) | #07: DumpCompleteHeap[Z:\task_1581594396\build\application\firefox\xul.dll +0x16ddac1]
[task 2020-02-13T12:18:45.895Z] 12:18:45 INFO - GECKO(1944) | #08: DumpCompleteHeap[Z:\task_1581594396\build\application\firefox\xul.dll +0x16dd6c0]
[task 2020-02-13T12:18:45.895Z] 12:18:45 INFO - GECKO(1944) | #09: mozilla_dump_image[Z:\task_1581594396\build\application\firefox\xul.dll +0x179b46c]
[task 2020-02-13T12:18:45.895Z] 12:18:45 INFO - GECKO(1944) | #10: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0xbc8f5e]
[task 2020-02-13T12:18:45.895Z] 12:18:45 INFO - GECKO(1944) | #11: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x97624e]
[task 2020-02-13T12:18:45.896Z] 12:18:45 INFO - GECKO(1944) | #12: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x973892]
[task 2020-02-13T12:18:45.896Z] 12:18:45 INFO - GECKO(1944) | #13: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x9749e3]
[task 2020-02-13T12:18:45.896Z] 12:18:45 INFO - GECKO(1944) | #14: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x975140]
[task 2020-02-13T12:18:45.896Z] 12:18:45 INFO - GECKO(1944) | #15: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x197ce9]
[task 2020-02-13T12:18:45.896Z] 12:18:45 INFO - GECKO(1944) | #16: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x19d8e2]
[task 2020-02-13T12:18:45.897Z] 12:18:45 INFO - GECKO(1944) | #17: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x97a7c8]
[task 2020-02-13T12:18:45.897Z] 12:18:45 INFO - GECKO(1944) | #18: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x916cf8]
[task 2020-02-13T12:18:45.897Z] 12:18:45 INFO - GECKO(1944) | #19: mozilla_dump_image[Z:\task_1581594396\build\application\firefox\xul.dll +0x41b11fe]
[task 2020-02-13T12:18:45.898Z] 12:18:45 INFO - GECKO(1944) | #20: mozilla_dump_image[Z:\task_1581594396\build\application\firefox\xul.dll +0x4244563]
[task 2020-02-13T12:18:45.898Z] 12:18:45 INFO - GECKO(1944) | #21: workerlz4_maxCompressedSize[Z:\task_1581594396\build\application\firefox\xul.dll +0x5a2939b]
[task 2020-02-13T12:18:45.898Z] 12:18:45 INFO - GECKO(1944) | #22: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x97b0c4]
[task 2020-02-13T12:18:45.899Z] 12:18:45 INFO - GECKO(1944) | #23: Ordinal0[Z:\task_1581594396\build\application\firefox\xul.dll +0x916cf8]
[task 2020-02-13T12:18:45.899Z] 12:18:45 INFO - GECKO(1944) | #24: workerlz4_maxCompressedSize[Z:\task_1581594396\build\application\firefox\xul.dll +0x5a2871b]
[task 2020-02-13T12:18:45.899Z] 12:18:45 INFO - GECKO(1944) | #25: Ordinal0[Z:\task_1581594396\build\application\firefox\firefox.exe +0x1b3c]
[task 2020-02-13T12:18:45.899Z] 12:18:45 INFO - GECKO(1944) | #26: Ordinal0[Z:\task_1581594396\build\application\firefox\firefox.exe +0x1765]
[task 2020-02-13T12:18:45.900Z] 12:18:45 INFO - GECKO(1944) | #27: Ordinal0[Z:\task_1581594396\build\application\firefox\firefox.exe +0x14f0]
[task 2020-02-13T12:18:45.900Z] 12:18:45 INFO - GECKO(1944) | #28: Ordinal0[Z:\task_1581594396\build\application\firefox\firefox.exe +0x13fa]
[task 2020-02-13T12:18:45.900Z] 12:18:45 INFO - GECKO(1944) | #29: Ordinal0[Z:\task_1581594396\build\application\firefox\firefox.exe +0x145b]
[task 2020-02-13T12:18:45.900Z] 12:18:45 INFO - GECKO(1944) | #30: BaseThreadInitThunk[C:\Windows\System32\KERNEL32.DLL +0x13034]
[task 2020-02-13T12:18:45.901Z] 12:18:45 INFO - GECKO(1944) | #31: RtlUserThreadStart[C:\Windows\SYSTEM32\ntdll.dll +0x71461]
[task 2020-02-13T12:18:46.443Z] 12:18:46 INFO - GECKO(1944) | ###!!! [Parent][MessageChannel::SendAndWait] Error: (msgtype=0x510015,name=PGPU::Msg_GetDeviceStatus) Channel error: cannot send/recv
[task 2020-02-13T12:18:46.443Z] 12:18:46 INFO - GECKO(1944) | [GFX1-]: Failed to initialize GPU process

Flags: needinfo?(aosmond)
Pushed by aosmond@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/bf13095a03bd Part 1. Add support for an allowlist to GfxInfo. r=jrmuizel https://hg.mozilla.org/integration/autoland/rev/f1192c87b1e5 Part 2. Add blocklist support for battery/screen size filters. r=jrmuizel https://hg.mozilla.org/integration/autoland/rev/1d4ad169c165 Part 3. Add support for device ID ranges in blocklist rules. r=jrmuizel
Flags: needinfo?(aosmond)
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla75
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: