Donnerstag, 5. November 2009

"Jules" cairo binding 0.0.1 release

I've prepared a webrev/patch of the XRender Java2D backend based on jdk7-master. It also includes a preview of "Jules", a cairo based RenderingEngine implementation, for faster antialiased rendering.

Please note Jules is more or less proof-of-concept, especially the native code is ugly, full of dirty assumptions and its probably not 64-bit clean.
However it runs Java2Demo quite well, and usually is a good deal faster than pisces even when rendering to software-surfaces. (and a *lot* faster when rendering to XRender surfaces), especially with the client-jvm.

Because of the need for a modified version of cairo and its complex build-system, I've seperated the native components and build them indepent from OpenJDK - falling back to pisces when loading fails.

Howto:

1.) Download
The webrev can be downloaded from:
http://93.83.133.214/webrev-xrender-jules-0.0.1.zip

The native jules/cairo code is located at:
http://93.83.133.214/jules-0.0.1.tar.gz

2.) Patch
To patch your local jdk7 repository, just do
> hg import ~/webrev/jdk.patch
or if your hg has that option:
> hg import --no-commit ~/webrev/*.patch

3.) Build
- Build your JDK as usual
- Compile Jules by running build_jules.sh (some makefile guru here?) ;)
- Copy libjules.so into build/linux-i586/lib/i386 or elsewhere, where it can be found by the JVM

4. Use it
Simply adding "-Dsun.java2d.renderer=sun.java2d.jules.JulesRenderingEngine" should do the trick :)
In addition you can enable the xrender-backend too, "-Dsun.java2d.xrender=True".
If everything works you should see:
XRender pipeline enabled
Jules library successfully loaded


Known problems:
- Some clipping problems when rendering to software surfaces
- Paints get wrong transformation when rendering to XRender surfaces

Last but not least the usual screenshot:


Update: Unfourtunatly my Nokia-770 where the stuff is hosted went down. Its up&running again.

Kommentare:

rkennke hat gesagt…

Yay cool!

Xerxes Rånby hat gesagt…

Hi, i made a first attempt of building Jules for Icedtea7/ARM: http://mail.openjdk.java.net/pipermail/xrender-dev/2009-December/000033.html