Every time I actually plan on spending more time blogging, it never happens. So... here's a quick update on stuff that I've been working on.
Fixing bug 424423 is almost done, the border rendering is really slow bug. roc's been helping me out with reviews, and I've been grumblingly adding aPrefix aTo aAll aMy aParamemter aNames (I can't believe that we haven't decided to drop that silly convention yet). The code's a lot cleaner now, and it also fully handles CSS3-style border-radius, with separate horizontal and vertical radii. Just needs some parsing work.
I've been experimenting a bit with OpenGL; it's ridiculously easy to get an OpenGL context on OS X. With two dozen lines of code I redirected rendering to an offscreen bitmap, and then draw that bitmap to the window using OpenGL. Not very interesting by itself, but it does mean that we won't need massive changes to our widget architecture once we start looking into OpenGL for accel. Win32 should be only slightly harder, and I have no idea what the situation is like under X11.
I'm still frustrated by the state of OpenGL on Linux, especially since I can't understand why it's so. Mesa is a high quality software rasterizer that supports the latest OpenGL spec. And yet, on every single Linux box I have that are running open drivers, I'm stuck with essentially OpenGL 1.2 or OpenGL 1.4, depending on who you believe. (Certainly GLX can't decide if it's 1.2 or 1.4, and this leads to all sorts of fun crashes when you try to use a GLX extension that's supported client-side but not server-side.) Why can't the X server just do software fallback, or, for that matter, pure software rendering? OS X can do this -- no matter what underlying hardware you're on, you can render using the latest and greatest OpenGL bits, and the OS will do software fallback as necessary. You can request a purely accelerated renderer that doesn't do any fallback, which is great, but it also means that you can write code and at least expect something to show up on the screen.
I've also been working on fixing various Cairo issues, though nothing major; I do have some patches for Cairo's DirectFB backend that I need to get in there. Once that's done we can merge in the Mozilla DirectFB work. The summit is also in a week and a half and I've got two talks to prepare... though I think I'm going to cut that down to just one, and hopefully do some cool demos for other sessions.
> Why can’t the X server just …
That’s how all the good X horror stories start!
Hi, I’m really interested in how to redirected rendering to an offscreen bitmap in WIN32. Could you kindly share some code snippets?
The windows code already does it, to the degree that I’m talking about — all the double buffering code in nsWindow::OnPaint is essentially rendering to an offscreen bitmap. If you’re looking to run the broser in an offscreen bitmap, you need more widget support that’s not there at the moment.
Wrt parsing border-radius, you probably want to check the Editor’s Draft on dev.w3.org; the shorthand syntax has changed since the last publication.