Open Bug 1410340 Opened 7 years ago Updated 2 years ago

Track local changes and upstream fix when updating ANGLE more efficiently

Categories

(Core :: Graphics, enhancement, P5)

enhancement

Tracking

()

Tracking Status
firefox57 --- unaffected
firefox58 --- unaffected

People

(Reporter: cleu, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

ANGLE was once used by WebGL only, but now WebRender utilizes it as well. There will be more local changes in ANGLE needed in the future. For now, we find all local commits inside gfx/angle between two ANGLE updates and cherry-pick them in github. However, some of them may have been fixed in upstream and don't need to be cherry-picked anymore. And when more patches need to be re-applied, they may be squashed into one commit like this. https://github.com/mozilla/gecko-dev/commit/c49e2d43c7642cc78b537402605345081534e5fe#diff-613c94b145e87521aa3fa252afa5aa52 It would be tedious messing aroune these commits. I think we should find a better way to track them. As a third-party library just like ANGLE, Skia upstream all their local changesets before updating. https://github.com/mozilla/gecko-dev/tree/master/gfx/skia/patches I am not sure if this is possible for ANGLE or not. For now, I have few ideas. 1. If we have a bug needs to change ANGLE, file an issue in crbug.com as well and mark the url in the bug so we can also track upstream activity about it. 2. Add a "CHERRY-PICK-ME" text file recording bug numbers needs to be rebased on future ANGLE update, with also filing issue in crbug, we will know the issue is fixed by upstream or not.
Whiteboard: [wr-mvp] [triage]
Idea 2 is similar to what we've done in the past, but it just doesn't scale properly. People forget or don't realize they need to add to the cset list. Instead, what we do now is ensure that we cherry-pick every cset we still need that was applied since the last angle update. I use `git log gfx/angle` for this. This is the absolute truth, so it will never be wrong. The main problem this has is that it doesn't enforce that we cherry-picked every cset, but I don't think there's a good way to do that other than to be careful. Really, you can just rebase all the old csets on top of the new angle update, so this should be trivial. We just need to make sure we don't hit a race condition here, with respect to failing to pick up new csets. The ultimate goal here is to upstream our changes. This is on my plate, and I've fallen behind on it. I'll be working to get us up to date in Q4.
Whiteboard: [wr-mvp] [triage] → [wr-mvp] [triage][gfx-noted]
Whiteboard: [wr-mvp] [triage][gfx-noted] → [gfx-noted]
Component: Graphics: WebRender → Graphics
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.