Freitag, 29. August 2008


My train-flatrate ticket will expire soon, so I'll take another trip to vienna downloading a new OpenSolaris build tomorrow.
I haven't been very successful with 2008.05 (it does not even boot on my laptop), hopefully newer versions will work smoother.

Build95 seems way better than 2008.05. The package-manager worked out-of-the-box, the new shell seems to be bash-compatible and changing the desktop-resoltion no longer crashes the system running in VirtualBox.

However it fails building OpenJDK, as far as I can see the SunStudio compiler dies:
CC: Fatal error in ccfe: Killed
sun.font/fontmanager/obj/CursiveAttachmentSubtables.o Error 1
Hopefully this is a known problem, with a known workarround, because it starts to become frustrating.

Dienstag, 19. August 2008

NVidia Binary Driver 177.67

NVidia driver improvements:
Today NVidia made a new beta-driver available, adressing many of the performance problems I saw when running the XRender pipeline on my GeForce6600 using the proprietary drivers - caused by the quite limited Render accaleration.

Taken form the release notes:
Improved support for RENDER masks, as well as RENDER repeating modes and transformations, for video memory pixmaps.
I haven't tested for now, but this should mean nimbus should run quite well using the proprietary drivers.
They are especially interesting because they don't suffer from some EXA performance problems I am experiencing, I am quite curious how they will perform :)

Another statement taken form the release notes:
Added an 'AllowSHMPixmaps' X configuration option, which can be used to prevent applications from using shared memory pixmaps; the latter may cause some optimizations in the NVIDIA X driver to be disabled.
So it seems time has come for SHMPixmaps to go away. EXA already removed support for SHMPixmaps (which hurts the X11 pipeline quite a bit) and the NVidia driver seems to go the same route.

The interesting thing is that those features were done because of the preassure generated by the community for better performing drivers - at least thats my impression.

After all, I am also curious what will be done about the proprietary AMD driver.
For now it still relies on XAA, and it seems AMD is the only major GPU manufacturer not providing drivers which are able to accalerate XRender properly.
Hopefull when RadeonHD is able to accalerate XRender well on the HD series, the proprietary 2D part will be removed and replaced by RadeonHD. Maybe the propiertary driver could be installed as add-on to RadeonHD, this would be my favourite distribution model.

The result of the challenge is still unknown ... wow I am quite nervous right now.

I hope that the missing Solaris support wasn't too negative as it should be fixable in a couple of days.
I ... well just forgot about it. What a shame, my stuff does for now (at least in VirtualBox) not run on the Unix of the sponsor :-/

Sonntag, 10. August 2008

Sharp edges..

I did some further analysis why the swing-benchmarks (and some others) don't perform that well.
Of course there's still lots of room for improvements in the pipeline itself, but some Xorg performance bugs turned out to be show-stoppers here.
The updated benchmarks should be soon available at: ...

Blits / sharp edges:
Xorg-1.5 now supports RepeatPad (however Intel still falls back to software for now), which is needed to not get smeared borders when scaling images.
With some tricks the mask's rectangular geometry can be used itself to clip of the repeated edges (maps to GL_CLAMP), so we don't have to generate the rotated images geometry anymore :)

The following screenshot shows a rotated image with a 2px black line on its edges - sharp edges and interpolation inside the image ... as it should be:
.... :)

In theory it should be possible to use a 1x1 mask and simply adjust the scale to get the expected size - however I don't know how rounding errors could influence the result. Most likely I can use the existing mask-buffer pixmap and tile if the area is larger.

Dienstag, 5. August 2008


2 hours ago the deadline ended, 6 projects have been submited - wow there've been some really cool things happening over the past few months :)
Well now the challenge is over ... but of course the project will live on.

The next few days I'll be recovering a bit, I guess the only good thing about deadlines is that everything is just cut off after it.
Wait ... maybe I'll profile nimbus and fillrect performance before ;)

Update: After stubbing out all MaskFills, MaskBlits, Paints as well as transformed blits, performance improved by only ~18%, for the Lightbeam-Nimbus test published on the project-page.
The profile looks very similar to MigLayout's. Most of time is spent on the X-Server in glyph composition, so once the glyph enhancements are there also nimbus should benefit a lot :)

Also a stand-alone testcase shows XAA beeing twice as fast for 20x20 rects than EXA.

In general EXA seems to suffer at least with Xorg-server-1.5 a quite high per-primitive overhead, hopefully this is better when 1.6 will be released. For example for the 20x20 rect 10% of cpu time is spent in the driver, the rest in XOrg.

My goal would be to have all functionality required to run the XRender pipeline (with the image-scale fix in place) accalerated in xorg-server-1.6 as well as intel-2.6.

Montag, 4. August 2008


I finally got the XRender pipeline to build on Solaris, however it does not work correctly on my installation in VirtualBox on the local X-Server. It does work however if I re-direct it to my X-Server running on Linux.
I need to get a "real" Solaris installation soon and fix it, I am a bit ashamed it does not work :-/

Samstag, 2. August 2008

Solaris, Radeon HD3850

Recent progress:
The past few days I worked further on the project-page (will be online soon), fixed some bugs and continued to work on get it on solaris building.
For now it fails at linking-stage, I don't know but the linked complains it can't find a symbol located in, when linking The same stuff works on linux :-(

All the code is in the repository, so if you are curios give it a try :)
Just build it and specify -Dsun.java2d.xrender=True at the command line, and highest graphic performance will be yours ;)

Radeon 3850:

I also bought a Radeon HD3850, the card was extremly cheap, probably because its sold out in favour of its 4850 successor - its a nice upgrade for my brothers computer and gives me the opportunity to test against the RadeonHD driver.

This means I can test the following hardware-driver combinations at home:
Nvidia: proprietary / nouveau / nv (uninteresting)
AMD: RadeonHD / radeon (on RV420) / propietary (uninteresting)
Intel: 945GM

Maybe a collection of IGPs like VIA chrome or sis GPUs would be nice to have, I hope I can find some testers :)