@Eugene: It -can- currently be built stand-alone, however this isn't as easy yet as it should be. It will be under the MPL like all other Mozilla code, so it should be quite easy to use in other projects.
@Nvd: Yes, and there's a lot of very promising stuff in there! I'm very excited about it.
@Manoj: We recently fixed a bunch of issues with the 64-bit version! Hopefully things will become better there. Unless this was a 32-bit build on an x64 machine, in which case it should be fine -if- the graphics section of about:support shows Azure content is enabled.
For some reason the recorder tool is not working on my Windows 7 x64 machine. I noticed severe checker-boarding when navigating between slides using the Up/Down arrow key in a Google Docs presentation. Here is a link to a presentation that demonstrates this symptom: https://docs.google.com/presentation/d/1uifwVYGNYTZDoGLyCb7sXa7g49mWNMW2gaWvMN5NLk8/edit?pli=1#slide=id.g1c2fc179_1_20
I will not have access to a 32-bit Win7 machine until the end of next week, so thought I should bring this link to your attention. Additionally, I updated a bug that reported similar symptoms in https://bugzilla.mozilla.org/show_bug.cgi?id=775320
http://support.microsoft.com/kb/2670838
"This update improves the features and performance of the following components"
http://www.microsoft.com/en-us/download/details.aspx?id=35661 says Pre-Release, so it's not the final release, might not want to install this until the final release is out, don't know when though.
@Kamulos: Thanks for your feedback! Let me answer your questions:
1. I think so, I'd prefer actually compressing them, and I'm working on something like that, but knowing 'what' image is displayed can often give important contextual information, for example for lifetime debugging issues and such.
2. This is caused by how the Thebes-Azure wrapper uses the transform. Once code gets migrated to Azure this will become better. Measurements indicate they're within the noise code-overhead wise, so I'm not too worried.
3. I'm working on this! Expect updates in the future!
@sysKin: One more thing, as I was debugging an issue using the player yesterday I found a couple of bugs and added a tiny bit of functionality in the form of an Event Information window. The new build is on my people, you may want to update, it's backward compatible with your trace.
Looks like a great tool! My experience so far, might help others:
1. Since recording goes to current directory, if you're running a Nightly installed in its usual place (Program Files), you will need to run Nightly with "run as administrator" option. Otherwise it will have no permissions to write the file.
2. If you're getting very tiny (~300 bytes) recordings, it's because D2D is switched off. My very-recent Catalyst driver turned out to be blacklisted for some reason.
3. Now, a problem I can't solve: after loading the complete recording file (I think?), I have a bunch of events in "Drawing Events" window, some objects on Objects window, and a nothing in "View" window. What do I do for "View" to show something?
Thanks! :)
@Alex: A fair question! The very first thing I found was a problem with GMail drawing: https://bugzilla.mozilla.org/show_bug.cgi?id=788877 This was actually pretty had and has been fixed and the patch is uplifted.
Something else I found when playing around is:
https://bugzilla.mozilla.org/show_bug.cgi?id=791841
The list gets a little longer, but these should be good examples :-)
Now I'm actually working on debugging some issues with my latest patch where I'm actively using the tool to debug my patch.
@Jose: Interesting VS2012 -claims- to have support but I haven't tried it yet. Their 3D debugging interface certainly seems to have improved since PIXWin.
@Kim: With the switch turned off it should not affect Linux at all. I have no clear advice on how to debug those issues to be honest. Please feel free to raise a bug and CC me on it, although I'm no expert on how we work on linux. As for the problem of fonts, at this point the Azure ScaledFont classes used on Linux don't support the GetFontData function yet. Which means the recording cannot save the truetype information, and the player cannot replay font drawing. Live font drawing should not be affected.
Any chance this might've affected rendering performance on Linux? I've noticed the occasional "ghosting" when scrolling, and when animation events happen in the tab bar and when scrolling, and reflowing the content area.
Any ideas/pointers on how to debug the above?
Azure content on, on those platforms, however fonts currently do not work outside of windows
Just curious, in what way are fonts not working? I've been running with Azure content on under Linux and the only problem I've noticed, before the crashing that started happening about a week ago, is that select lists sometimes fails to draw/popup when clicked.
Does it fall back to an alternative renderer specifically for fonts?
Neat. My experience with these sort of record/replay tools is that they are massive time savers, as they server multiple duty: debugging, regression testing/comparison, etc. And the more layers we intercept the better, as issues don't confine themselves to one layer.
I don't think that Pix / VS 11 supports Direct2D yet. FWIW, some time ago I attempted to add Direct2D support to ApiTrace, https://github.com/apitrace/apitrace/tree/d2d . It's incomplete and there are some challenges in finishing it: D2D API is used with DWrite so actually we need to intercept two DLLs (d2d1.dll and dwrite.dll); and the API itself has callbacks (interfaces that are supposed to be implemented by the application), which are hard to trace/retrace. But it's not impossible.
@Justin: Hrm, great idea in theory, I'm a little worried how people who do a lot of non-mozilla stuff will respond to a mysterious influence meddling with their editor settings :). I could change some of the behavior to be more friendly to that I guess.
Thanks for working to speed up firefox. It's my browser of choice for development and day-to-day use and the one I recommend for use by lay persons.
Unfortunately, these hardware acceleration changes have broken the rendering on my website (causes flickering/failure to paint parts of the scene on windows 7). I have filed a bug report on the mozilla bug tracker:
Also, I know you're just testing things out, but it also appears the hardware acceleration is slowing things down slightly on my box.
I have a little HTML5 benchmarking program on my website. It's totally unscientific, but interesting nonetheless to test the differences between hardware accelerated and not on Firefox.
The benchmark can be found at https://clubcompy.com/rwBench.jsp
With "Use hardware acceleration when available" enabled, Firefox scores 10707. But with hardware acceleration *disabled*, it scores better with 11253. For reference, Chrome scores 24741 on the same box.
that skia bugfix is specified for mac, but the comment talk about android. Is it related for everyone or not? Maybe it's useful for low end system win/linux, just thinking....
@Harsh86: We have known about the extension and have looked at it, but generally speaking at this point we're not interested in investing significantly in it.
For the Firefox 7 release, sadly the answer is probably 'not really' not a lot of sites are using 2D canvas yet. But for sites that do use canvas you should get faster performance if you're on Windows 7 with hardware acceleration.
@Dimitris:
Heh :) I'm afraid we don't have a choice, but you're enthusiasm is duly noted!
I think all this progressiveness is taking too long. I want azure powered screaming OpenGL performance on my Linux boxes NOW! I am excited yes :) I would say ditch the Cairo backend and go straight for OpenGL.
I'm not expert neither experienced user, but, I'd like to know when you say:
"performance on the majority of real world use-cases"
What does it means? How I'm going to benefit from Azure as an average user? In my daily browsing, what Azure accelerates and even better than the previous system? I'd like an answer if you've available time, in short... Not complicated and long things.
@Marek: The correctness bug is known and will be fixed in a future release.
The performance on Test 2 is a known bug that's being worked on. Test 5 is more complex, it's a more longer-term symptom due to the global composite operator it uses. (It's not Azure specific)
Actually, on fully HW accelerated system on W7/WhiteListed NVidia is SW rendering with turned OFF faster than HW rendering, esp. test 2 and 5 of asteroids...
And DX9 (non D2D) and slower computer is also much faster, is it known and temporary symptom?
@Anonymous: Not at all, at the moment you'd have to import mozilla's RefPtr.h file into the project to get it to build stand-alone, that's the only dependency. There's a visual studio project in the azure folder to build it.
I have to agree with the others here, Bas, but don't take it personally, it is not your fault. The same lighter, noisier and a lot less smooth (imho) fonts are also visible on IE9. It is almost as if Microsoft is purposely going the opposite direction of Apple, that makes fonts look VERY smooth (they look like they're all in bold). But as boring as MacOS font rendering is for some people (not for me), it is infinite times more readable than DirectWrite + D2D.
As far as ClearType I must say I love it. Calibri and Consolas both look absolutely amazing with it. I don't see any colorization or any distracting effect on them. Personally I even prefer that combination over any MacOS font rendering.
By the way, the D2D font rendering improves a lot if you increase the size of the font. So whenever I am stuck with it (like in Firefox) I zoom in on almost every page. I can't do that with the UI which I must admit looks absolutely horrible.
Here's a quick question: How tightly bound is Azure to the Mozilla codebase? It seems like a promising project, and I can think of various uses for it outside of Mozilla. How easy or hard would it be to extract and use as a stand-alone library?
@Christian: You'll be happy to know Azure landed on mozilla-inbound yesterday, and mozilla-central last night. Tomorrow's nightly will have Azure included for canvas on Direct2D enabled builds, and upcoming nightlies will include improvements and fixes we make!
@Matt: There was discussion, but the small market and the large difference in quality between different X-render implementations make the return on investment too low to justify. So I'm afraid they'll be stuck with cairo until we come up with our own accelerated backend.
The second part of your question depends largely on how good our versions will turn out to be. If at some point they perform better than D2D, logically we'll start using them, as long as they don't, we probably won't :). Consistency is important but so is a great user experience!
Are there any plans to create an XRender backend for Linux, or will those users be stuck with Cairo until you come up with a general OpenGL version?
Also, is the plan to move everything to the GL/D3D versions eventually, or would you first try D2D/Quartz and only fall back to the 3D APIs if those weren't found?
@WonderCsabo: I'll have a look, possibly FlickrExplorer doesn't use Canvas, that would certainly explain! I've had to set my spam filter quite agressively considering how many spam arrives on blogs. I have to moderate all comments manually :(.
Bas, the first version of my post contained a tinyurl of the testpage http://ie.microsoft.com/testdrive/Performance/FlickrExplorer/Default.html But i couldn't send it, because ur spam filter thought it is a spam. :)
@Anonymous: Not really, we plan on using Cairo as a fallback software renderer for the moment for systems where hardware assisted rendering does not work adequately.
The license will be as open as it can be as far as I'm concerned! Presumably this will be the MPL (v2), but I know fairly little about these things. At the moment the component (without cairo support) can be used and built completely stand-alone, but is obviously useless outside of systems where Direct2D exists.
This sounds exciting from a Firefox-is-improving standpoint.
Currently an update to the Cairo port (ports.haiku-files.org/) is needed in Haiku OS (haiku-os.org) for recent Firefox versions to work, will this mean you can run Firefox without the Cairo library completely and it should run?
Also Firefox and Haiku OS are both Coverity users, like buddies! :)
Will the license be MPL, tri-license like Fx or other?
@Noel: I can understand that, but I believe, as Joe outlined in his blog post, there's too many fundamental design problems in the cairo API that would be hard to surmount. Not to mention we wouldn't be able to upstream due to the large scale changes that would be needed and the lack of resources to adapt all cairo backends. This is not just about features, a mostly stateless vs. a stateful API is a huge difference.
@Gary: Great to hear that! I've wondered the same thing about Mister Potato Gun and I have no idea. It seems a higher running time results in a higher score, and the running time seems to vary as well. It's almost as if some randomness affects it. I didn't include it in here for exactly that reason.
@Zsolt: No, it will be unrelated to OpenVG. I also don't know of any very good completely open OpenVG implementation, but maybe I missed something. The idea is it's general enough to output triangle strips and generate texture coordinates in a way that works across different graphics frameworks. And use additional features like geometry shading and such things to speed things up further on capable hardware. On windows this would still work on D3D9/10/11 because there's simply performance benefits to that.
@Caspy7: Yes, Firefox users on Windows 7 that have Direct2D for normal browsing will see advantages from Azure. Possibly if Gecko moves to rendering on Azure before the GPU backend lands they will see advantages in page rendering as well. The same will go for Mac users when a Quartz backend lands.
Once AzureD2D canvases ships does that mean that FF on Windows will see some benefits or will it be until backend for GPU lands that Firefox will be able to take advantage of the tech?
"The next, possibly most interesting step for Azure will be a larger project: creating a backend that can use the GPU for rendering vector graphics through OpenGL and different Direct3D versions. This will hopefully allow us to bring fast, consistent rendering performance to our users on all platforms!"
Indeed interesting. But isn't this basically what OpenVG does? As far as I know all OpenVG implementations are built on top of OpenGL. So will you be implementing something custom upon OpenGL or will you be fixing up an existing/creating a new OpenVG implementation?