Rework snapping logic in clip mask generate to fix uneven box shadows

RESOLVED FIXED in Firefox 67

Status

()

defect
RESOLVED FIXED
5 months ago
2 months ago

People

(Reporter: gw, Assigned: gw)

Tracking

(Blocks 1 bug, Regressed 1 bug)

unspecified
mozilla67
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox67 fixed)

Details

Attachments

(1 attachment)

Assignee

Description

5 months ago

The existing logic for handling clip mask generation is inaccurate for primitives that are snapped. This can result in uneven stretching and rendering of box shadows, among other issues.

Instead, calculate the snap offsets for a primitive where appropriate on the CPU, and pass these to the clip mask shaders. This allows the clip mask shaders to undo the effect of snapping, which produces accurate and symmetrical box shadows.

Assignee

Updated

5 months ago
Assignee: nobody → gwatson
Assignee

Updated

5 months ago
Blocks: 1411693
Assignee

Updated

5 months ago
Blocks: 1475827
Assignee

Comment 2

5 months ago

This is a fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1475827 and https://bugzilla.mozilla.org/show_bug.cgi?id=1411693.

The most notable part is the new reftest output in scale.png, showing symmetrical box shadows at various transform scales, with/without clipping and segmentation.

The try run [1] looks mostly good, it has:

  • A few additional PASS results that I need to update (in addition to the new PASSes and a couple of extra fuzzy tests I already annotated).
  • A perma-fail in Wr3 for a known intermittent. I need to investigate this further in the morning to see what is causing this.
  • Some unrelated intermittents.

[1] https://treeherder.mozilla.org/#/jobs?repo=try&revision=84d30b68e3ac146199272ec85fa99cbc15b4132a

Comment 3

5 months ago
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/25ca68e7836e
Rework snapping logic in clip mask generate to fix uneven box shadows. r=kvark,nical

Comment 4

5 months ago
Backout by nbeleuzu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c016d35d0f53
Backed out changeset 25ca68e7836e for wrench bustages on boxshadow-spread-only-ref.png. CLOSED TREE

Comment 5

5 months ago
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/86daa5d406b6
Rework snapping logic in clip mask generate to fix uneven box shadows. r=kvark,nical

Backed out changeset 86daa5d406b6 (Bug 1523882) for wrench bustage in reftests/boxshadow/box-shadow-huge-radius.png CLOSED TREE

https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&selectedJob=225292171

https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=225292171&repo=autoland&lineNumber=2756

task 2019-01-31T19:53:52.897Z] REFTEST reftests/boxshadow/box-shadow-stretch-mode-y.yaml == reftests/boxshadow/box-shadow-stretch-mode-y.png
[task 2019-01-31T19:53:55.508Z] REFTEST reftests/boxshadow/inset-mask-region.yaml == reftests/boxshadow/inset-mask-region.png
[task 2019-01-31T19:54:01.297Z] REFTEST reftests/boxshadow/box-shadow-blurred-overlapping-radii.yaml == reftests/boxshadow/box-shadow-blurred-overlapping-radii-ref.yaml
[task 2019-01-31T19:54:01.477Z] REFTEST reftests/boxshadow/box-shadow-huge-radius.yaml == reftests/boxshadow/box-shadow-huge-radius.png
[task 2019-01-31T19:54:05.275Z] REFTEST TEST-UNEXPECTED-FAIL | reftests/boxshadow/box-shadow-huge-radius.yaml == reftests/boxshadow/box-shadow-huge-radius.png | image comparison, max difference: 1, number of differing pixels: 5
[task 2019-01-31T19:54:05.288Z] REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAMKCAYAAADApnZNAAA/a0lEQVR4nO3dC7BteV3Y+XWh3+++/aJf3Hu7EdM0yJsA0vJSCIqAwLTCIBgFJ0QSTRiDMokpKzHJTJmYKmNNpcZUJCkyISGZOKYyYyqTUWN8xmg0YOIYID5CiAYRBXxEnf/33rtkczj39n2cc/v+9/l8qn611t57rW13c3aV3/qvtfeh3xsWAAAApiHkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAAJiPkAAAA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wKv+97F39vokFWOtrrXK1mpbX3rS5ZV96cmRk9OqXKt0rda1atfqXat4ndd7NAAAbDchB3vonpvvW973Ve8de2evT1JTzBVmBVr3wXU/XOHWStzR5UTMdXnlrWPWyysvH1PIde6hMQAAbDchB3voykuuXA79qV9ePn5peXV21k9SMdalksVZl04Wa11K2eWVR5cTIVfUdcnlenll33TZOZ176OQAALC9hBzssXvGitz7xsrcuejT1BRlrcqVg11e2Zeb7Ly8ssddXtnrV47p+FblOr8BAGB7CTnYY8988N3LD933qrF39vo0Na2sFWattK2XV7YCV8AdGXN0+eTllX0hSsHXCl4h17mHxgAAsL2EHOyx5z33G5bved43jr1zc2hMMdaqXHHWb8oVa0Xbzssru3fO5ZUAAAePkIM99sz7Xrn80IP/YOydmz5RTatrfXtll012+eTm5ZVHlxOrcz12eSUAwMEj5GCPPebWxy8/++afGnvnpk9U08paYdZK27VjWnlrBa6AO7qcCLour+yLUPpCFJdXAgAcHEIO9th1l1+/fPTrPjL2zl2fqmKsSyWLs83LK7uk8siYo8uJ/e6dK/KKvY7tnM49dHIAANg+Qg72wW1v/U/Lh65p/ezc9KlqWl3r8spW27p88nSXV/pxcACAg0PIwT64/40/tLznzj849s5Nn6qmlbXCbL288qYx5WEBd3Q5MV1e2UrdDWMKvsKvkOvcQ2MAANg+Qg72wbNf+c7lB57w2rF37vpkFWNdKtklk30zZZdX3jamSyqPjDm6nNhfL6/smI7tnM49NAYAgO0j5GAfPO9537h8z3O/Yeyduz5ZTVHWqlyrba26tfrWKtyRMUeXE6tzd4xpta7LK1u96/g15BoAALaLkIN98JwnvmH5/ld8x3I++mQ1BVlh1v1vhVr3w3V55ZExR5cT28LuljHdR1fwrZdXHjo5AABsFyEH++CJR567/Jsv+57lfKyfrDXkumSySye7hLJLKbuk8uhyYtrvkssuvewbLi8b00pe5x4aAwDAdhFysA+OHv6M5QN/7GfG3vnp01WMtbpWnBVpXV5ZtN015siYY2MKuVbpuryy2Ovyys2QawAA2B5CDvbBDVfcuHzkbR8ee+enT1dTyLUq1+WVXT7ZZZR3jDky5tiYtj3ussvrxnRcx3feoZMDAMD2EHKwT65/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irmmeGvb9Hyvd9w6AADMaYqQS/+QTSttzRptvz2mbY97vum4Bg6Koqxppa0p2jangOv5puMaAADmNVXIpW1TsDVFXNum55usWzgI1jBru8baZrw1Pddk3QIAMKdpQi7rP+jmdg247NzCQbLG2eZ2Dbjs3AIAMK+pQm61/gOfagsH2Rpqp9oCADC/KUNu09T/8LDPxBsAwHaaPuQAAAAOGiEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwGSEHAAAwmf8fUI/uuwYNuCAAAAAASUVORK5CYII=
[task 2019-01-31T19:54:05.300Z] REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAMKCAYAAADApnZNAAA/bUlEQVR4nO3dC7BteV3Y+XWBfr9vv+gX995uxDQN8iaAtCAoBEVAYFphEIyCEyKJJoxBmcSUlZhkpkxMlbGmUmMqkhSZYEgmjqnMmMpk1PhCYzQaMHEMEB8hRIOIAj6izv97712wOZx7+z7OuX3/+3w+Vb9aa++91ra7ObvKb/3X2vvQHwwLAAAA0xByAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAAkxFyAAAA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rVgr5prirW3T873ecesAADCnKUIu/UM2rbQ1a7T97pi2Pe75puMaOCiKsqaVtqZo25wCruebjmsAAJjXVCGXtk3B1hRxbZueb7Ju4SBYw6ztGmub8db0XJN1CwDAnKYJuaz/oJvbNeCycwsHyRpnm9s14LJzCwDAvKYKudX6D3yqLRxka6idagsAwPymDLlNU//Dwz4TbwAA22n6kAMAADhohBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBkhBwAAMBk/n9Qk+67SgLpAgAAAABJRU5ErkJggg==
[task 2019-01-31T19:54:05.300Z] REFTEST TEST-END | reftests/boxshadow/box-shadow-huge-radius.yaml == reftests/boxshadow/box-shadow-huge-radius.png
[task 2019-01-31T19:54:05.300Z] REFTEST reftests/boxshadow/box-shadow-large-blur-radius-2.yaml == reftests/boxshadow/box-shadow-large-blur-radius-2.png
[task 2019-01-31T19:55:08.362Z] REFTEST reftests/boxshadow/box-shadow-large-blur-radius-3.yaml == reftests/boxshadow/box-shadow-large-blur-radius-3.png
[task 2019-01-31T19:55:56.719Z] REFTEST reftests/boxshadow/scale.yaml == reftests/boxshadow/scale.png
[task 2019-01-31T19:55:59.048Z] REFTEST reftests/clip/border-with-rounded-clip.yaml == reftests/clip/border-with-rounded-clip.png
[task 2019-01-31T19:55:59.375Z] REFTEST reftests/clip/clip-mode.yaml == reftests/clip/clip-mode.png
[task 2019-01-31T19:55:59.467Z] REFTEST reftests/clip/clip-ellipse.yaml == reftests/clip/clip-ellipse.png
[task 2019-01-31T19:55:59.796Z] REFTEST reftests/clip/clip-45-degree-rotation.yaml == reftests/clip/clip-45-degree-rotation-ref.png
[task 2019-01-31T19:56:51.877Z] REFTEST reftests/clip/clip-3d-transform.yaml == reftests/clip/clip-3d-transform-ref.yaml
[task 2019-01-31T19:56:51.922Z] REFTEST reftests/clip/clip-corner-overlap.yaml == reftests/clip/clip-corner-overlap-ref.yaml
[task 2019-01-31T19:56:53.206Z] REFTEST reftests/clip/custom-clip-chains.yaml == reftests/clip/custom-clip-chains-ref.yaml
[task 2019-01-31T19:56:56.739Z] REFTEST reftests/clip/custom-clip-chain-node-ancestors.yaml == reftests/clip/custom-clip-chain-node-ancestors-ref.yaml
[task 2019-01-31T19:56:56.781Z] REFTEST reftests/clip/fixed-position-clipping.yaml == reftests/clip/fixed-position-clipping-ref.yaml

Flags: needinfo?(gwatson)

Comment 8

5 months ago
Backout by shindli@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/964b59c9d7a5
Backed out changeset 86daa5d406b6 for wrench bustage in reftests/boxshadow/box-shadow-huge-radius.png CLOSED TREE
Assignee

Comment 9

5 months ago

It looks like that test is slightly fuzzy on CI (max difference: 1, number of differing pixels: 5). I've marked that wrench test with fuzziness, and will try to push again.

Flags: needinfo?(gwatson)

Comment 10

5 months ago
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e6f1ffb7119f
Rework snapping logic in clip mask generate to fix uneven box shadows. r=kvark,nical

Comment 11

5 months ago
bugherder
Status: NEW → RESOLVED
Closed: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla67
Assignee

Comment 12

5 months ago

This is, somehow, causing a major performance regression in GPU time. It seems to be resulting in either many more clip masks, or much larger ones. I've asked the sheriffs to back it out for now, and will debug and re-land tomorrow.

Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla67 → ---

Comment 13

5 months ago
Backout by nerli@mozilla.com:
https://hg.mozilla.org/mozilla-central/rev/200859112d0d
Backed out changeset e6f1ffb7119f per dev's request for causing major perf regression a=backout

Comment 14

5 months ago
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/43d250c96e71
Rework snapping logic in clip mask generate to fix uneven box shadows. r=kvark,nical

Comment 15

5 months ago
bugherder
Status: REOPENED → RESOLVED
Closed: 5 months ago5 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla67

== Change summary for alert #19153 (as of Tue, 05 Feb 2019 07:42:14 GMT) ==

Improvements:

2% ts_paint linux64-qr opt e10s stylo 862.08 -> 848.58
1% sessionrestore linux64-qr opt e10s stylo 799.67 -> 789.33

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=19153

Updated

2 months ago
Regressions: 1543601
You need to log in before you can comment on or make changes to this bug.