-
-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Design data structures to support streaming content in display list #448
Comments
Add tool for generating test list in JSON format
Switch primitives to be stored in SoA style in vertex textures. The primary goals of this patch are: (1) Store primitives in SoA style. This makes some passes, such as culling primitives much faster due to better cache coherency. (2) Store primitives in flat arrays, for direct upload to GPU. This reduces the amount of redundant copying on the CPU during frame construction. (3) Decouple primitive information from geometry instances. This allows us to improve occlusion culling, by submitting segments of primitives without any extra CPU overhead of copying primitive data. (4) Allow incremental updates of the GPU SoA arrays during scrolling and zoom. This isn't implemented yet, but the framework is in place and will allow significant backend/compositor thread improvements during scrolling and zoom frames. There's also a number of other changes that have been rolled in to this patch since it made sense to fix them at the same time. In particular: * Blend/composite batches are stored as ints, avoiding CPU float packing overhead. * Border segment rectangles are calculated in the vertex shader rather than CPU. * Gradient colors use vertex shader interpolators for axis aligned gradients, reducing FS overhead. * Removed separate Text/TextRun shader types, resulting in better batching and fewer draw calls. * Angle gradients support arbitrary stop count in primitive data. * Removed some unused interpolators from the border shader. * Axis aligned gradient segments are calculated in vertex shader, reducing CPU overhead. * Reduced size of packed image structure - UV type is stored in sign of UV field. * Reduced size of packed glyph structure - color stored per run, rect calculated from UVs. * Moved some utility types from tiling.rs to util.rs. * Remove clip cases from batch enum, store needs_clipping flag in batch key. <!-- 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/448) <!-- Reviewable:end -->
@nical Ain't that not true anymore? |
These days the image display items refer to an |
Closing is good. Thanks for the quick reply @nical. |
Bump version to 0.9.5 <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-mozjs/448) <!-- Reviewable:end -->
At the moment images in the display list are represented as something like
Option<ARC<~Image>>
. This is an immutable type that implies that an image must be completely loaded by the time layout generates the display list. This has some big limitations:The way media is represented in the display list needs to be redesigned.
The text was updated successfully, but these errors were encountered: