Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an explicit API to add reference frames #2756

Merged
merged 1 commit into from Jun 1, 2018

Conversation

@mrobinson
Copy link
Member

mrobinson commented May 14, 2018

Previously reference frames were inserted into the ClipScrollTree when a
stacking context had a transformation or a perspective. This changes
makes the API for adding reference frames explicit in order to give
clients better control over when and how they are created. This change
also opens up future opportunities for shrinking the size of the display
list (by separating out the ClipScrollTree from the list of display
items) and for concurrency during the flattening process.


This change is Reviewable

@mrobinson mrobinson requested a review from glennw May 14, 2018
@mrobinson
Copy link
Member Author

mrobinson commented May 14, 2018

cc @staktrace

This change was made with ease of transition in mind. The only change necessary for clients will be to push a reference frame and its new ClipId right before the place where the stacking context is pushed. All coordinates are still processed as if they are relative to their parent stacking context.

@gw3583
Copy link
Collaborator

gw3583 commented May 14, 2018

Reviewed 27 of 27 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.


Comments from Reviewable

@gw3583 gw3583 requested review from gw3583 and removed request for glennw May 14, 2018
@gw3583
gw3583 approved these changes May 14, 2018
@gw3583
Copy link
Collaborator

gw3583 commented May 14, 2018

This looks good to me! It would be good to have a gecko / servo patch ready for this before landing, if possible?

@gw3583
Copy link
Collaborator

gw3583 commented May 14, 2018

(And also to get sign-off from @staktrace that the API change looks fine).

@staktrace
Copy link
Contributor

staktrace commented May 14, 2018

The API change looks straightforward enough, but I'll do a gecko try push to make sure it's green.

@staktrace
Copy link
Contributor

staktrace commented May 14, 2018

Seems like it's causing a lot of failures. https://hg.mozilla.org/try/rev/9c09292b0d808c6579cd41fb782dee425a0e5f3e is the gecko-side patch I wrote. @mrobinson can you take a look, maybe there's something obvious I missed in the patch?

@mrobinson
Copy link
Member Author

mrobinson commented May 14, 2018

@staktrace Thanks for writing the Gecko side patch. I'm happy to take a look at this tomorrow. The first thing I'd probably try is to set the stacking context origin to zero. If that's the issue it definitely raises some interesting questions about how to best take this intermediate API step.

@mrobinson
Copy link
Member Author

mrobinson commented May 17, 2018

Yeah, looks like there is a deeper issue here. I'm on vacation this week, but should be able to look at the Gecko issues on Tuesday of next week.

Previously reference frames were inserted into the ClipScrollTree when a
stacking context had a transformation or a perspective. This changes
makes the API for adding reference frames explicit in order to give
clients better control over when and how they are created. This change
also opens up future opportunities for shrinking the size of the display
list (by separating out the ClipScrollTree from the list of display
items) and for concurrency during the flattening process.
@mrobinson mrobinson force-pushed the mrobinson:separate-reference-frames branch from fbb1f3e to f5895e8 May 24, 2018
@mrobinson
Copy link
Member Author

mrobinson commented May 24, 2018

Sorry for the delay attacking these issues, which were due to a planned vacation. I'm back now and think I have solved the issue in the Gecko side changes. I have a new Gecko try job running here:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=2eb57e7e710eb2b4175606e333f046f015036f09&selectedJob=180039337

@staktrace Perhaps you could take a look at the failures and confirm that they aren't related to this PR. They don't look like they are related to me. Thanks!

@staktrace
Copy link
Contributor

staktrace commented May 24, 2018

The failures so far don't look related to this PR and are all pre-existing intermittents. Probably worth waiting for at least the OS X and Windows reftests to finish before merging though.

@mrobinson
Copy link
Member Author

mrobinson commented May 25, 2018

@staktrace Thanks for looking at the results. The job has finished now. There is one failure in the Windows results and none for OS X. The Windows failure look unrelated to me, though I'm having trouble interpreting the log and I don't see a bugzilla bug open for it.

@staktrace
Copy link
Contributor

staktrace commented May 25, 2018

Yeah the windows xperf talos test failure is expected. That test doesn't run on m-c but for some reason still runs in try pushes.

@mrobinson
Copy link
Member Author

mrobinson commented May 28, 2018

@gw3583 This should be good to review whenever you have a free moment.

@gw3583
Copy link
Collaborator

gw3583 commented May 30, 2018

@mrobinson Ah, sorry - missed your comment. Will review today.

@gw3583
Copy link
Collaborator

gw3583 commented May 30, 2018

Review status: all files reviewed at latest revision, all discussions resolved.


Comments from Reviewable

@gw3583
Copy link
Collaborator

gw3583 commented May 30, 2018

@mrobinson Ah, this was already mostly reviewed. Looks good, r=me once @staktrace is happy for this to merge. It would be good to have Gecko and Servo-side patches ready to go, if that's easy enough to do.

@mrobinson
Copy link
Member Author

mrobinson commented May 30, 2018

@gw3583 Thanks! The Gecko patch should be attached to the try job and I'll get a Servo patch written today. There is one dependency though, which is waiting on review. Perhaps you could take a look? It is at servo/servo#20767.

@mrobinson
Copy link
Member Author

mrobinson commented May 30, 2018

@gw3583
Copy link
Collaborator

gw3583 commented Jun 1, 2018

@mrobinson OK, reviewed and r+'ed servo/servo#20767

@mrobinson
Copy link
Member Author

mrobinson commented Jun 1, 2018

@staktrace asked for a rebased Gecko try job. That is here: https://treeherder.mozilla.org/#/jobs?repo=try&revision=c55e905ffea5271595b4d65563b17680b770dc76&selectedJob=181351208

Right now it's at 96% and the failures look to be intermittent.

@staktrace
Copy link
Contributor

staktrace commented Jun 1, 2018

Yup, try push looks good 👍

@bors-servo
Copy link
Contributor

bors-servo commented Jun 1, 2018

📌 Commit f5895e8 has been approved by mrobinson

@bors-servo
Copy link
Contributor

bors-servo commented Jun 1, 2018

Testing commit f5895e8 with merge 5a5b40c...

bors-servo added a commit that referenced this pull request Jun 1, 2018
Add an explicit API to add reference frames

Previously reference frames were inserted into the ClipScrollTree when a
stacking context had a transformation or a perspective. This changes
makes the API for adding reference frames explicit in order to give
clients better control over when and how they are created. This change
also opens up future opportunities for shrinking the size of the display
list (by separating out the ClipScrollTree from the list of display
items) and for concurrency during the flattening process.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/2756)
<!-- Reviewable:end -->
@mrobinson
Copy link
Member Author

mrobinson commented Jun 1, 2018

@bors-servo
Copy link
Contributor

bors-servo commented Jun 1, 2018

📌 Commit f5895e8 has been approved by mrobinson

@bors-servo
Copy link
Contributor

bors-servo commented Jun 1, 2018

Testing commit f5895e8 with merge dd0ee31...

bors-servo added a commit that referenced this pull request Jun 1, 2018
Add an explicit API to add reference frames

Previously reference frames were inserted into the ClipScrollTree when a
stacking context had a transformation or a perspective. This changes
makes the API for adding reference frames explicit in order to give
clients better control over when and how they are created. This change
also opens up future opportunities for shrinking the size of the display
list (by separating out the ClipScrollTree from the list of display
items) and for concurrency during the flattening process.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/2756)
<!-- Reviewable:end -->
@mrobinson
Copy link
Member Author

mrobinson commented Jun 1, 2018

Sorry. I meant to write "r=glennw." I'll let bors stall out and then land this properly.

@bors-servo
Copy link
Contributor

bors-servo commented Jun 1, 2018

☀️ Test successful - status-appveyor, status-taskcluster
Approved by: mrobinson
Pushing dd0ee31 to master...

@bors-servo bors-servo merged commit f5895e8 into servo:master Jun 1, 2018
4 checks passed
4 checks passed
Taskcluster (pull_request) TaskGroup: success
Details
code-review/reviewable 27 files reviewed
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
homu Test successful
Details
@mrobinson
Copy link
Member Author

mrobinson commented Jun 1, 2018

Odd. Typically r- should halt the merge. I'm not sure what happened here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

4 participants
You can’t perform that action at this time.