-
Notifications
You must be signed in to change notification settings - Fork 268
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
Extend the scope of render target allocation strategy acrosss layers #3374
Conversation
Both tries look green. Appveyor used an older Rust version, which is updated in the last commit. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 5 of 5 files at r1.
Reviewable status:complete! all files reviewed, all discussions resolved
Seems sane! Do we need to do any profiling / testing before merging? |
@gw3583 I visited a few websites with RT debug display enabled, and the improvement is real. On cnn.com we are down from 3 large (~3K x 2K) slices to just one. On HN, similarly, we only have a single slice with everything instead of 3. Looks like this is going to be a major win on common sites, not just extreme cases. 🎉 |
@kvark Cool, ship it! 🚀 |
The mac builders should have 1.30 now |
OS X debug tests failed:
|
@bors-servo try |
Extend the scope of render target allocation strategy acrosss layers Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1509672 Technically consists of 3 parts: - cleanup bits, don't affect performance - spread the dynamic target allocation bins across the layers. Previously, we had each layer with it's own allocator, and we were only ever trying to allocate from the last one. This scheme was weak against cases where we reach the ideal maximum target size, since guillotine allocation of small bits forced us to spawn more and more layers... reaching almost 150 in the target case. New scheme uses the layers more efficiently, reducing the layers to just 3 (.. 50x reduction :P). Pending [try push](https://treeherder.mozilla.org/#/jobs?repo=try&revision=27464c7d62f0f05a0bc96a7133b55e9706d3d449). - when we reach the ideal max size, also round up the requested size to 256. This makes allocations *within a layer* to be more robust against small inputs. With this change, the number of layers drops to just 2 (.. 75x reduction lol), which appears to be minimal for this case. Pending [try push](https://treeherder.mozilla.org/#/jobs?repo=try&revision=1f4593fd68455842a7b12f396d0abbdf887a11a0). The page scrolls smoothly with those changes, on my GTX TI 1050 at least. r? @gw3583 Note: the bugzilla issue also suffers from poor batching, I'm going to look at it separately. <!-- 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/3374) <!-- Reviewable:end -->
☀️ Test successful - status-appveyor, status-taskcluster |
@gw3583 I've added a bit of code for validating texture allocator correctness, at least at test time. |
📌 Commit 3362a5e has been approved by |
Extend the scope of render target allocation strategy acrosss layers Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1509672 Technically consists of 3 parts: - cleanup bits, don't affect performance - spread the dynamic target allocation bins across the layers. Previously, we had each layer with it's own allocator, and we were only ever trying to allocate from the last one. This scheme was weak against cases where we reach the ideal maximum target size, since guillotine allocation of small bits forced us to spawn more and more layers... reaching almost 150 in the target case. New scheme uses the layers more efficiently, reducing the layers to just 3 (.. 50x reduction :P). Pending [try push](https://treeherder.mozilla.org/#/jobs?repo=try&revision=27464c7d62f0f05a0bc96a7133b55e9706d3d449). - when we reach the ideal max size, also round up the requested size to 256. This makes allocations *within a layer* to be more robust against small inputs. With this change, the number of layers drops to just 2 (.. 75x reduction lol), which appears to be minimal for this case. Pending [try push](https://treeherder.mozilla.org/#/jobs?repo=try&revision=1f4593fd68455842a7b12f396d0abbdf887a11a0). The page scrolls smoothly with those changes, on my GTX TI 1050 at least. r? @gw3583 Note: the bugzilla issue also suffers from poor batching, I'm going to look at it separately. <!-- 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/3374) <!-- Reviewable:end -->
☀️ Test successful - status-appveyor, status-taskcluster |
With the latter try build the issue is gone for me. Thanks! 👍 |
…ab3e7ace77d6 (WR PR #3374). r=kats servo/webrender#3374 Differential Revision: https://phabricator.services.mozilla.com/D13626 --HG-- extra : moz-landing-system : lando
…ab3e7ace77d6 (WR PR #3374). r=kats servo/webrender#3374 Differential Revision: https://phabricator.services.mozilla.com/D13626
…ab3e7ace77d6 (WR PR #3374). r=kats servo/webrender#3374 Differential Revision: https://phabricator.services.mozilla.com/D13626 UltraBlame original commit: be65d09ef059e78daf60df9737503cfcb6dc8a86
…ab3e7ace77d6 (WR PR #3374). r=kats servo/webrender#3374 Differential Revision: https://phabricator.services.mozilla.com/D13626 UltraBlame original commit: be65d09ef059e78daf60df9737503cfcb6dc8a86
…ab3e7ace77d6 (WR PR #3374). r=kats servo/webrender#3374 Differential Revision: https://phabricator.services.mozilla.com/D13626 UltraBlame original commit: be65d09ef059e78daf60df9737503cfcb6dc8a86
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1509672
Technically consists of 3 parts:
The page scrolls smoothly with those changes, on my GTX TI 1050 at least.
r? @gw3583
Note: the bugzilla issue also suffers from poor batching, I'm going to look at it separately.
This change is![Reviewable](https://camo.githubusercontent.com/23b05f5fb48215c989e92cc44cf6512512d083132bd3daf689867c8d9d386888/68747470733a2f2f72657669657761626c652e696f2f7265766965775f627574746f6e2e737667)