Closed Bug 1135271 Opened 9 years ago Closed 9 years ago

Unexpected mix-blend-mode rendering

Categories

(Core :: Graphics, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla44
Tracking Status
firefox44 --- fixed

People

(Reporter: mstange, Assigned: dvander)

References

()

Details

(Keywords: testcase, Whiteboard: gfx-noted)

Attachments

(2 files)

Attached video screen recording
Open this testcase: http://codepen.io/chriscoyier/pen/mvbpJ

In some cases, the letters of the middle "hungry" line ("Nice blending way") turn black. It's happening all the time in my main profile in Nightly, and some of the time in my local build in a testing profile.

It would be nice if somebody could find out under which condition the bug occurs, on what platforms, and whether it's a regression.
(In reply to Markus Stange [:mstange] from comment #0)
> and some of the time in my local build in a testing profile.

This probably only worked in my local build because there was a bug in my patch for bug 961887 which I had applied in that build.

> It would be nice if somebody could find out under which condition the bug
> occurs, on what platforms, and whether it's a regression.

So far I have these results:
OS X OpenGL OMTC: bug
OS X BasicLayers: no bug
OS X Basic OMTC:  no bug
Linux OpenGL OMTC: bug
Linux BasicLayers: no bug
Whiteboard: gfx-noted
I see this with 37.0.1 stable on OSX 10.10.2 (14C1514). Happens consistently.
Works for me in Windows 7 x64, in Firefox 37.0.2 with OMTC.
Bug 1163093 is possibly related.
Keywords: testcase
Yea discovered this on osx 10.10.2 with FF 40.0.2 - still there and consistent.
I got the... "solution"! I wrote about this on a article right here: 

https://medium.com/@maykelesser/how-to-fix-osx-firefox-mix-blend-mode-bug-6b3548e9e546
Blocks: 1208302
FWIW, this doesn't reproduce on Linux OMTC on Fx41, though Markus points out that BasicLayers is used in that case. Still reproduces with OpenGL acceleration forced on.
(In reply to Ryan VanderMeulen [:RyanVM UTC-4] from comment #6)
> FWIW, this doesn't reproduce on Linux OMTC on Fx41, though Markus points out
> that BasicLayers is used in that case.

It's actually BasicCompositor. Sorry, the terminology here is very confusing... BasicLayers means "no OMTC", BasicCompositor means "OMTC, but not accelerated".
With layers.acceleration.force-enabled set to true, mozregression is giving the below regression range on Linux. Unfortunately, the regressions are too old to bisect on inbound, so the m-c pushlog range is the best we'll be able to do.
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=99f694d1b50c&tochange=35f3fa435d2c

The regression is going from normal appearance (including proper opacity) and normal scroll behavior to the current black lettering behavior observed on other platforms. Bug 1023677 from Matt Woodrow looks possibly-relevant.

I don't have access to a Mac, so this is about as far as I'll be able to help.
Matt and I looked at this today. The mix-blend-mode spec separates blending into two steps: the blend operation on the source and backdrop colors, and then how they are composited into the backdrop[1]. It appears in the compositors we skipped a step and do not factor in the destination alpha.

In the test case, the source text is being composited onto a transparent black surface - the backdrop is rgba(0,0,0,0) - so our formula becomes very obviously wrong. BasicLayers and BasicCompositor handle this correctly.

Unfortunately we can't support the correct formula without shaders, so I'm just going to back out the OGL/D3D11 support for screen/multiply blending. We'll add it back soon though since we want to support all modes in the GPU. (bug 1209278)

[1] http://www.w3.org/TR/compositing-1/#generalformula
Assignee: nobody → dvander
Status: NEW → ASSIGNED
Attachment #8670636 - Flags: review?(matt.woodrow) → review+
https://hg.mozilla.org/mozilla-central/rev/d337fcb3aef0
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla44
Blocks: 1237979
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: