Open Bug 1692031 Opened 3 years ago Updated 3 years ago

Allow usage of KHR_blend_equation_advanced on hardware WR

Categories

(Core :: Graphics: WebRender, task, P3)

task

Tracking

()

People

(Reporter: lsalzman, Unassigned)

References

(Blocks 1 open bug)

Details

In the process of developing KHR_blend_equation_advanced support for SWGL, I noticed the allow_advanced_blend_equation renderer option always defaulted to false. We should investigate whether it is safe to turn this on for hardware, and which if any hardware would need to be blocklisted to deal with bugs.

It is worth noting that ANGLE doesn't provide this extension at all anyway, so the main considerations are Android, macOS, and Linux in terms of who can support this and how well.

Severity: -- → S3
Priority: -- → P3

Bug 1691859 allows us to use dual-source blending to implement the multiply mix-blend-mode which should take care of the ANGLE case for us. It might potentially impact how we badly need advanced blend equation and also insulate us from some amount of driver bugs if it happens that multiply is the most commonly used mix-blend-mode. It would be worth knowing what are the most used mix-blend-modes to see if we ever fall off that fast path.

Depends on: 1691859
Blocks: 1684781

It is further worth noting that there is a separate related extension named (similarly) KHR_blend_equation_advanced_coherent. Not all implementations of KHR_blend_equation_advanced support the coherent version of this extension. The function of the coherent version is to guarantee that if you render two overlapping primitives without an intervening call to glBlendBarrierKHR(), the result will be sane and that they will compose properly.

Currently we work around the potential lack of this extension in WR by putting every usage of the advanced blend equation without coherent support in its own batch, so that this may have potentially bad implications for batching performance when enabled. However, if this is still better than falling back to brush_mix_blend, then it should be okay.

You need to log in before you can comment on or make changes to this bug.