Closed Bug 422371 Opened 13 years ago Closed 2 months ago
Turbulence filter is far too slow
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 I was trying out the SVG of Firefox from my webpages and I was making a webpage background svg. It was all going well until I added the preserveAspectRatio="none" line to the SVG tag because it seems to go into an endless loop of loading the SVG document. The only thing I could do with firefox when I loaded the SVG was kill it, nothing else was working. It only seems to happen while the window in maximized. If you can restore to window it goes back to normal. Reproducible: Always Steps to Reproduce: 1. Load the attached SVG. 2. Maximize window, it gets very hard to do anything. 3. Restore the window, everything returns to normal. Actual Results: Firefox basically hangs when maximized. You do get a few millisecs to click something every few seconds. Expected Results: Normal SVG displaying. Display once then do nothing. about:buildconfig Build platform target i686-pc-mingw32 Build tools Compiler Version Compiler flags cl 14.00.50727 -GL -wd4624 -wd4952 -TC -nologo -W3 -Gy -Fd$(PDBFILE) cl 14.00.50727 -GR- -GL -wd4624 -wd4952 -TP -nologo -Zc:wchar_t- -W3 -Gy -Fd$(PDBFILE) Configure arguments --enable-application=browser --enable-update-channel=beta --enable-optimize --disable-debug --disable-tests --enable-update-packaging --enable-official-branding --enable-jemalloc
If I remove anything from this firefox works fine.
Component: General → SVG
Product: Firefox → Core
QA Contact: general → general
Version: unspecified → Trunk
Status: UNCONFIRMED → NEW
Ever confirmed: true
This works for me on Windows. It is quite slow though, it takes several seconds to display the page, once it has displayed the browser seems OK provided it does not need to refresh the page. feTurbulence is not the fastest filter in the world and it gets slower as numOctaves increases; the default value is 1 and you are using 9.
This test case still doesn't work properly for me. I did test the lower numOctaves settings and it does seem to work upto about 7. Using the test case I gave before the following happens (as specific as i can this time): - load page and maximize. - 5 sec loading (frozen state), 1 sec vista saying 'window not responding'. - a few milliseconds to possibly click the restore button or something else. - loop the above 2 steps many times (I have watched 10 cycles before getting the restore to work). Also some more specific hardware and software: - Vista Home Premium - 2ghz core 2 duo - 2gb ram - 1440x900 on 256mb nvidia graphics card - sidebar At the very least I think there should be an option to cancel a filter that is taking a while to load.
Chrome is much faster (on Mac at least) when resizing the window with the attached testcase.
Summary: SVG filter in rectangle stretched using preserveAspectRatio="none" hangs firefox when maximized → SVG feTurbulence filter is far too slow
Whiteboard: [external-report] → [external-report][filters][chrome is much faster]
It looks like we're already using the D2D facilities for this (D2D1_TURBULENCE_NOISE) in FilterNodeD2D1.cpp. We are not using the Skia API though: http://skia-doc.commondatastorage.googleapis.com/doxygen/doxygen/html/classSkPerlinNoiseShader.html
OS: Windows Vista → Mac OS X
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.