Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upAPZ doesn't seem to be async enough #1357
Comments
|
We could group all blob images for a certain frame and only upload them to the texture cache when the entire group is rasterized to preserve some form of frame consistency, but not block the frame on the blob images being rasterized (or have the render backend thread block for at most a certain amount of time). This would not provide full frame consistency because we could still do some layout changes and see them on the screen before blob images from the same frame are ready. Full frame consistency while preserving APZ is hard. We could maybe just block the render backend until blob images are rasterized when there is a layout change so that we preserve APZ as much as possible and only jank when layout changes (does not sound great but still better than where we are at today). For glyphs it would be cool if we could just replace missing glyphs with a placeholder when rasterization takes too long (the place holder could be an already-rasterized same letter with a different size or font. I bet it wouldn't be very noticeable (less noticeable than popping or missing the frame budget). |
|
I don't think we'll be able to have the kind of frame consistency problems that you describe. It might be worth trying but we'll need a plain that has better consistency. |
Multi-doc support A namespace can now contain multiple documents. Operations on a document are done ~~via a separate object `DocumentApi`, which created from `ResourceApi` that manages resources~~ by providing `DocumentId` parameter to `RenderApi` calls. This PR is a step towards #1357, also relates to #1370. <!-- 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/1509) <!-- Reviewable:end -->
Decoupled flattening from ResourceCache Part of the plan to get #1357 r? @nical @glennw <!-- 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/1527) <!-- Reviewable:end -->
|
Rough plan to proceed (adopted from @nical ):
|
To add some precision, these are already happening on the thread pool, but the frame construction blocks until they are done. There is some tweaking we could do to stop blocking on at least a subset of the cpu rasterization, and that would probably require doing a bit of rasterization as part of the off-render-backend scene construction to avoid flickering in some cases. But we can go into the details of that when we have the infrastructure in place to build the scene asynchronously. |
|
let's close this as dupe of #2759. |
Edit: https://bugzilla.mozilla.org/show_bug.cgi?id=1391318
I'm concerned that rasterizing blob images, glyphs and processing a new scene will block scrolling. If this is true we should do better.