You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It looks like most "ordinary" pixels are being overdraw 5-6 times on screen. See screenshot from RenderDoc's "pass overdrawn" mode. I looked at the green area (5 draws per pixel) and at the yellow one on the left (6 draws per pixel). This is burning GPU power too much unnecessarily and draining the battery.
Ideally, these areas would have 0 to 1 draw. 0 is possible because the render pass is starting with a clear color. For elements overlapping each other, there needs to be some technique for pixel rejection employed. Generally it's depth or stencil testing. For example, WebRender draws opaque elements from front to back and writes to depth, preventing deeper layers from overwriting the pixels of the front layers.
Environment
Linux (but it unlikely matters)
The text was updated successfully, but these errors were encountered:
@jansol not all elements have rounded corners. For example, #7231 makes the fast path for such quads that are just quads, and it makes a good difference.
In WebRender we'd also split a rounded-cornered element into a "9 patch", which consists of 5 fully opaque rectangles and 4 semi-transparent rectangles. This allows drawing most of the element early as opaque.
Check for existing issues
Describe the bug / provide steps to reproduce it
It looks like most "ordinary" pixels are being overdraw 5-6 times on screen. See screenshot from RenderDoc's "pass overdrawn" mode. I looked at the green area (5 draws per pixel) and at the yellow one on the left (6 draws per pixel). This is burning GPU power too much unnecessarily and draining the battery.
Ideally, these areas would have 0 to 1 draw. 0 is possible because the render pass is starting with a clear color. For elements overlapping each other, there needs to be some technique for pixel rejection employed. Generally it's depth or stencil testing. For example, WebRender draws opaque elements from front to back and writes to depth, preventing deeper layers from overwriting the pixels of the front layers.
Environment
Linux (but it unlikely matters)
The text was updated successfully, but these errors were encountered: