Closed
Bug 1080878
Opened 11 years ago
Closed 11 years ago
Large regression in IE Blizzard Demo with OMTC enabled
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
FIXED
Tracking | Status | |
---|---|---|
firefox32 | --- | unaffected |
firefox33 | - | wontfix |
firefox34 | + | unaffected |
firefox35 | + | unaffected |
firefox36 | --- | affected |
People
(Reporter: rowbot, Assigned: bas.schouten)
References
()
Details
(Keywords: regression)
STR:
Load the URL in the latest nightly
Actual Results
For my system the max number of snow flakes it can draw is ~1500 and this seems to go down the longer the page is left open. I have left the page open for about 5-10 minutes now and the number of snow flakes it can draw has dropped to ~1080.
Expected Results
I expect it to be able to draw ~3100 snow flakes without the number degrading over time.
Fx35: ~1500 Snow flakes
Fx32: ~3100 Snow flakes
Setting gfx.direct2d.use1_1 = false helps the problem and the number of snow flakes jumps to ~2300. There seems to be an additional regression on top of this that is preventing Fx35 from reaching ~3100 snow flakes on my system.
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Adapter Description NVIDIA GeForce GTX 660
Adapter Drivers nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um
Adapter RAM 2048
Device ID 0x11c0
Direct2D Enabled true
DirectWrite Enabled true (6.2.9200.16571)
Driver Date 9-13-2014
Driver Version 9.18.13.4411
GPU #2 Active false
GPU Accelerated Windows 1/1 Direct3D 11 (OMTC)
Subsys ID 30693842
Vendor ID 0x10de
WebGL Renderer Google Inc. -- ANGLE (NVIDIA GeForce GTX 660 Direct3D9Ex vs_3_0 ps_3_0)
windowLayerManagerRemote true
AzureCanvasBackend direct2d
AzureContentBackend direct2d 1.1
AzureFallbackCanvasBackend cairo
AzureSkiaAccelerated 0
FF32: 1850
FF35: 1
FF35: 1480 (layers.offmainthreadcomposition.enabled=false)
The issue is about OMTC.
Reg range:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=cb9f34f73ebe&tochange=9d8d16695f6a
Blocks: 899785
Status: UNCONFIRMED → NEW
status-firefox32:
--- → unaffected
tracking-firefox33:
--- → ?
tracking-firefox34:
--- → ?
tracking-firefox35:
--- → ?
Ever confirmed: true
Keywords: regression
Summary: Large regression in IE Blizzard Demo with d2d1.1 enabled → Large regression in IE Blizzard Demo with OMTC enabled
Version: Trunk → 33 Branch
![]() |
||
Comment 2•11 years ago
|
||
Does FF33 with OMTC enabled (i.e. default configuration) show the same issue? If not, then it's not OMTC per se, but something we introduced later and only active with OMTC (as a lot of graphics stuff developed now is only tested on OMTC).
If 33 does not show it, could you try a Nightly build from before we activated D2D 1.1?
Yes, same issue with FF33, snowflakes < 100.
That's why I ran mozreg, I was sure about a regression since FF33. ;)
Reporter | ||
Comment 4•11 years ago
|
||
I'm pretty sure there are 2 separate regressions here as disabling OMTC on Fx35 only got me to ~2400 snow flakes, but mozregression keeps giving me different results each time I run it :(
Comment 5•11 years ago
|
||
I am afraid 33 will ship with this regression.
n-i Nical & Bas to make sure they see this bug.
status-firefox33:
--- → wontfix
status-firefox34:
--- → affected
status-firefox35:
--- → affected
Flags: needinfo?(nical.bugzilla)
Flags: needinfo?(bas)
Comment 6•11 years ago
|
||
This is mostly a drawImage benchmark. On mac we get pretty poor results with cg as expected. If I turn on the skiaGL backend, we double to >2000. We are still quite a bit slower than Safari. I don't think this has much to do with OMTC. We might have regressed canvas perf a bit with OMTC. The bigger cause might be that we are failing to accelerate the drawImage path used here?
Comment 7•11 years ago
|
||
With OMTC, non-skiaGL canvas2d takes a regression (at least partly) because we have an extra copy. CanvasRenderingContext2D doesn't render in a texture that is shareable to the compositor and needs to retain its drawing state between frames. It is fixable but perhaps not the lowest hanging fruit.
It could make a nice advanced contribution.
We'd need:
* CanvasRenderingContext2D to track all of its drawing stats (including the states kept by DrawTarget
* CanvasRenderingContext2D to draw in a DrawTarget provided by a TextureClient
* to make the TextureClient copy-on-write similarly to what we do with tiling, and delay the copy to the first opaque drawing operation that doesn't cover the whole canvas. This way if the canvas is cleared every frame, which is very common, we don't need to copy from the previous frame that we sent to the compositor.
Flags: needinfo?(nical.bugzilla)
Assignee | ||
Comment 8•11 years ago
|
||
(In reply to Nicolas Silva [:nical] from comment #7)
> With OMTC, non-skiaGL canvas2d takes a regression (at least partly) because
> we have an extra copy. CanvasRenderingContext2D doesn't render in a texture
> that is shareable to the compositor and needs to retain its drawing state
> between frames. It is fixable but perhaps not the lowest hanging fruit.
> It could make a nice advanced contribution.
> We'd need:
> * CanvasRenderingContext2D to track all of its drawing stats (including the
> states kept by DrawTarget
> * CanvasRenderingContext2D to draw in a DrawTarget provided by a
> TextureClient
> * to make the TextureClient copy-on-write similarly to what we do with
> tiling, and delay the copy to the first opaque drawing operation that
> doesn't cover the whole canvas. This way if the canvas is cleared every
> frame, which is very common, we don't need to copy from the previous frame
> that we sent to the compositor.
A sort of double buffering solution is probably the best way to go. Something similar to tiling I suppose, and similarly 'different' between D2D/SkiaGL and Software.
Flags: needinfo?(bas)
Assignee | ||
Comment 9•11 years ago
|
||
(In reply to Loic from comment #1)
> FF32: 1850
> FF35: 1
> FF35: 1480 (layers.offmainthreadcomposition.enabled=false)
>
> The issue is about OMTC.
>
> Reg range:
> http://hg.mozilla.org/mozilla-central/
> pushloghtml?fromchange=cb9f34f73ebe&tochange=9d8d16695f6a
Your Fx35 results will be worsened because of D2D 1.1 (bug 1080639)
Reporter | ||
Comment 10•11 years ago
|
||
I am not seeing any regressions on Fx33. Perhaps the regression Loic is seeing on Fx33 is specific to his hardware/drivers. I went and tested Firefox 32-35 with clean profiles today and the results were:
Fx32 (OMTC Off) = ~3100
Fx32 (OMTC On) = ~3100
Fx33 = ~3300
Fx34 = ~3200
Fx35 (OMTC On + D2D 1.1) = ~1600
Fx35 (OMTC On + D2D 1.0) = ~2300
Fx35 (OMTC Off + D2D 1.1) = ~2300
Fx35 (OMTC Off + D2D 1.0) = ~2300
Fx35 has only regressed for me within the last 3 weeks or so. As bas mentioned in comment 9, one regression appears to be the landing of d2d1.1. But there also seems to be another regression that happened sometime between about September 20th and the landing of d2d1.1 that caused a regression as well, but mozregression keeps giving me different dates and regression ranges every time I run it.
Reporter | ||
Comment 11•11 years ago
|
||
I just tested this again today. I didn't bother testing with OMTC On/Off this time since there is no noticeable difference for me.
Fx35 (D2D 1.1) = ~1500
Fx35 (D2D 1.0) = ~2300
Fx36 (D2D 1.1) = ~2200
Fx36 (D2D 1.0) = ~3400
As I mentioned in comment 4, there were two separate problems. One is D2D1.1, but the other one is still a mystery. It would seem that the mystery regression has been fixed in Firefox 36, leaving only D2D1.1 as the cause of the regression I am seeing here. Firefox 35, however, still has the mystery regression.
mozregression says:
Last bad build: 2014-10-14
First good build: 2014-10-15
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=54217864bae9&tochange=62f0b771583c
We should probably figure out what fixed the mystery regression and then uplift it.
Reporter | ||
Comment 12•11 years ago
|
||
I do apologize for the bugmail spam, but I was able to narrow down the regression range for the mystery regression. Hope this helps.
Last good revision: 1e2993c99323 (2014-09-24)
First bad revision: 1735ff2bb23e (2014-09-25)
Pushlog:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=1e2993c99323&tochange=1735ff2bb23e
Reporter | ||
Comment 14•11 years ago
|
||
Bug 1082827 fixed this for me in the 2014-11-13 nightly. I no longer see any regressions, in fact, I see an improvement (3800 snowflakes, which is up from about 3400).
Loic, do you still see the regression you mentioned in comment 1 in the latest nightly? I was only able to reproduce less than 100 snowflakes by turning off hardware acceleration.
Flags: needinfo?(epinal99-bugzilla2)
Comment 15•11 years ago
|
||
In Nightly with OMTC on, I got 600-700, but I find this demo is not very reliable, results may vary.
With OMTC off, results are better with Nightlies from 3 or 4 days ago, but I can't test with the latest Nightly due to bug 1099074.
Flags: needinfo?(epinal99-bugzilla2)
Comment 16•11 years ago
|
||
D2D1.1 was disabled on 35. This should also be fixed on 36 now that bug 1082827 has landed. If you can still reproduce the problem on any platform please reopen.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Updated•11 years ago
|
Updated•11 years ago
|
status-firefox34:
--- → unaffected
status-firefox35:
--- → unaffected
You need to log in
before you can comment on or make changes to this bug.
Description
•