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

Ensure transactions that request a frame always get forwarded to the renderer. #3036

Merged
merged 2 commits into from Sep 10, 2018

Conversation

@nical
Copy link
Collaborator

nical commented Sep 10, 2018

Gecko depends on transactions that request frames to be passed all the way to the renderer, even if the frame can't be built or doesn't need to be built (nothing visibly changed). If one of these transaction is dropped before getting to the renderer, Gecko might wait for the notification that this transaction was rendered forever and not send new frames, and nothing ever gets rendered again.
This type of race tends to manifest itself on windows a lot more than on other platforms, probably because of the way the GPU process affects timings.


This change is Reviewable

nical added 2 commits Sep 10, 2018
…frame is requested.

Gecko currently depends on transactions that request a frame to go all the way to the renderer and send back notifications that the frame is rendered. If such a notification gets lost, Gecko might wait forever that the frame get rendered before sending another frame request which means nothing ever gets rendered again.
This ensures we forward the information to the renderer even if for some reason we skipped building the frame, which tends to happen at stratup on Windows.
@nical
Copy link
Collaborator Author

nical commented Sep 10, 2018

The first commit in this PR is already reviewed and landing in Gecko, it should fix the Windows bustage. The second commit makes extra sure we don't skip update_document.

@kvark
kvark approved these changes Sep 10, 2018
@kvark
Copy link
Member

kvark commented Sep 10, 2018

@bors-servo
Copy link
Contributor

bors-servo commented Sep 10, 2018

📌 Commit 4b4292c has been approved by kvark

@bors-servo
Copy link
Contributor

bors-servo commented Sep 10, 2018

Testing commit 4b4292c with merge 27e3bc4...

bors-servo added a commit that referenced this pull request Sep 10, 2018
Ensure transactions that request a frame always get forwarded to the renderer.

Gecko depends on transactions that request frames to be passed all the way to the renderer, even if the frame can't be built or doesn't need to be built (nothing visibly changed). If one of these transaction is dropped before getting to the renderer, Gecko might wait for the notification that this transaction was rendered forever and not send new frames, and nothing ever gets rendered again.
This type of race tends to manifest itself on windows a lot more than on other platforms, probably because of the way the GPU process affects timings.

<!-- 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/3036)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Sep 10, 2018

☀️ Test successful - status-appveyor, status-taskcluster
Approved by: kvark
Pushing 27e3bc4 to master...

@bors-servo bors-servo merged commit 4b4292c into servo:master Sep 10, 2018
3 checks passed
3 checks passed
Taskcluster (pull_request) TaskGroup: success
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
homu Test successful
Details
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

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