ContainerLayerOGL doesn't deal well with big intermediate surfaces

NEW
Unassigned

Status

()

P3
normal
3 years ago
a year ago

People

(Reporter: mstange, Unassigned)

Tracking

Trunk
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox43 affected, firefox45 affected, firefox46 affected)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 attachment)

(Reporter)

Description

3 years ago
Created attachment 8663657 [details]
testcase

Steps to reproduce:
 1. Load the testcase on a Retina Macbook Pro using the integrated GPU.
 2. Start scrolling.

The blue box disappears and the green box gets scaled up.

This happens because the opacity requires an intermediate surface to be used during compositing, and the size of this intermediate surface exceeds the maximum texture size.

The size of the intermediate surface is based on the visible region of the container layer. The second patch in bug 1136766 clips the visible region before compositing if the container layer's transform is just an integer translation, so it will help in some cases but not in all.
Whiteboard: [gfx-noted]
(Reporter)

Updated

3 years ago
Blocks: 1210418
(Reporter)

Comment 1

3 years ago
(In reply to Markus Stange [:mstange] from comment #0)
> The second patch in bug 1136766 clips the visible region
> before compositing if the container layer's transform is just an integer
> translation, so it will help in some cases but not in all.

That patch has now moved to bug 1021845 and deals with all transforms, not just integer translations. However, there can still be cases where even the clipped intermediate surface is bigger than the maximum texture size. We still need a solution for those cases.
Depends on: 1021845
Is this still an issue for 46? Thanks.
status-firefox45: --- → ?
status-firefox46: --- → ?
(Reporter)

Comment 3

3 years ago
Bug 1021845 took care of it mostly - instead of learning to deal with big intermediate surfaces, we just create smaller intermediate surfaces. There are still some cases where we can't do that, so it would be nice to fix this one, but it's not a high priority.
status-firefox45: ? → affected
status-firefox46: ? → affected
You need to log in before you can comment on or make changes to this bug.