with D2D enabled, liquid-chars chrome experiment only paints when mouse moved

RESOLVED FIXED

Status

()

Core
Graphics
RESOLVED FIXED
8 years ago
8 years ago

People

(Reporter: shaver, Unassigned)

Tracking

Trunk
x86
Windows 7
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

http://spielzeugz.de/html5/liquid-chars.html

I wanted to see if enabling D2D would make the initial phase of the demo smoother, but instead it broke: it only repaints when I move the mouse.  The original version (http://spielzeugz.de/html5/liquid-particles.html) updates correctly without mouse movement even with D2D enabled.
BTW: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a5pre) Gecko/20100408 Minefield/3.7a5pre so it could, like many other things this morning, be the cairo update.
Hrm, I cannot reproduce this, as far as I can tell on the latest nightly it works exactly as it does on 3.6. It looks completely smooth for me btw. Are you seeing any other D2D update issues?
So what is special about this demo is that it's using the Canvas 'lighter' globalCompositeOperation, this translates to an OPERATOR_ADD. Since D2D does not support OPERATOR_ADD, we fallback to readback, composition, and uploading back to the GPU. This is -very- slow. I have no explanation how this is breaking redrawing but the slowness does show that we'll have to find a way to properly support the ADD operator.

Comment 4

8 years ago
Should Bug 580765 have much effect on this? It's still pretty slow for me.
It should be significantly improved, but it's still slightly slower than GDI. This is because rasterizing a lot of single characters seems to weigh pretty heavy on D2D. This could probably perform really well if we'd draw the different letters in a single D2D draw call. In the future we could consider optimizing this, but since this is such a unique case I'm not too bothered about it.
Additionally the liquid-particles case is also slower on D2D than on GDI, this is again because of a lot of seperate small draw calls all with operator ADD. The blending back and forward in this case is still pretty complicated for D2D. There's things we could consider optimizing here as well (batching a series of OPERATOR_ADD calls for examples and blending back only once). But I don't see it as a top priority.
This demo is still slow but seems to work. I've filed Bug 589285 on the performance issue.
Status: NEW → RESOLVED
Last Resolved: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.