Closed Bug 1080878 Opened 11 years ago Closed 11 years ago

Large regression in IE Blizzard Demo with OMTC enabled

Categories

(Core :: Graphics, defect)

33 Branch
x86_64
Windows 7
defect
Not set
normal

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
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
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. ;)
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 :(
I am afraid 33 will ship with this regression. n-i Nical & Bas to make sure they see this bug.
Flags: needinfo?(nical.bugzilla)
Flags: needinfo?(bas)
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?
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)
(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)
(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)
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.
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.
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
Thanks for the data, this helps!
Assignee: nobody → bas
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)
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)
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
You need to log in before you can comment on or make changes to this bug.