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
Fix tiling and dirty rect calculations for external images #2847
Conversation
- When we have a dirty rect, we should cull all tiled requests which do not overlap with the dirty rect, not just blob image requests. - We should not take the dirty rect from the image template until we have processed all of the requests. This will allow each tile to re-upload only the modified segment.
e94ef98
to
413bbd2
Compare
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.
Thank you for addressing this!
Note that the dirty rect invalidation is still wrong - we may receive updates to different tiles of the the same template across multiple frames, in which case erasing it on the first frame would make it misbehave... The new logic is better than the old one though, so I think we should proceed regardless.
@bors-servo r+ |
📌 Commit 413bbd2 has been approved by |
Fix tiling and dirty rect calculations for external images - When we have a dirty rect, we should cull all tiled requests which do not overlap with the dirty rect, not just blob image requests. - We should not take the dirty rect from the image template until we have processed all of the requests. This will allow each tile to re-upload only the modified segment. <!-- 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/2847) <!-- Reviewable:end -->
☀️ Test successful - status-appveyor, status-taskcluster |
@aosmond This PR causes crashtest failures in gecko, see try push at https://treeherder.mozilla.org/#/jobs?repo=try&revision=e989ff39da6b5c43911c03c9c1efa133a7e15adf |
The backtraces don't spell out the offending line number, but I suspect the logic for unwrapping request.tile vs template.tiling was incorrectly inverted, but was fine before because it only applied to blob images. update_texture_cache does it the other way. |
When we have a dirty rect, we should cull all tiled requests which do
not overlap with the dirty rect, not just blob image requests.
We should not take the dirty rect from the image template until we
have processed all of the requests. This will allow each tile to
re-upload only the modified segment.
This change is