[OpenJDK Rasterizer] Getting started - some background and status

Jim Graham Jim.A.Graham at Sun.COM
Tue May 15 16:53:47 PDT 2007


It looks like this mailing list has attracted a few subscribers now and 
so I'd like to get some discussion off the ground here.

At JavaOne we mentioned the (Antialiasing) Graphics Rasterizer project 
and didn't give many details other than the fact that we were looking at 
Pisces, a renderer used for some of our recent ME products as a possible 
replacement for our encumbered AA rasterizer.

If you've downloaded the OpenJDK sources and built them you may have 
noticed that not only is the Ductus Rendering engine supplied only as a 
binary plug, but many other classes and object files need to be supplied 
in binary form even though their sources are shipped with OpenJDK 
because they rely on interfaces and header files defined by the Ductus 
product.

There are basically two main pieces of functionality that the Ductus 
library supplied us with that are used in various places.

The first is, obviously, the AA rasterizer which turned paths into tiles 
of coverage values that we could apply to destinations using operations 
like MaskFill and MaskBlit, depending on whether the source color was a 
simple color or a raster from a Paint object.

The second piece of functionality is the code that widens paths.  We 
never developed our own code to widen paths because the Ductus library 
came with that functionality built-in so we leveraged it in other places 
in our code - including the BasicStroke object in its implementation of 
the createStrokedShape method and also for our non-AA rasterizer when it 
needs to deal with a widened path.

It's the second part which causes most of the incidental encumbrances 
which cause much of our open code to be unbuildable, but both represent 
encumbrances of some sort.

The Pisces renderer has some advantages to look at for a replacement:

- It was developed to implement Java rendering (though at the ME level)
- It is already open source
- It is a fairly complete implementation
- It has been tuned a bit already

Unfortunately it also has some disadvantages:

- It is tuned for tiny phone screens
    - It deals primarily with limited ranges of coordinates
    - It may not meet our quality goals
- It was not developed to fit into our desktop rendering architecture
- It's fairly large and requires a bit of porting to fit in
    - (What if we get done porting it and it just gets replaced anyway?)

We are still working on getting Pisces adapted to our internal 
architecture, but until we do that we still have no non-binary solution 
for AA rendering and line widening in the OpenJDK build tree.

In my next message I'll solicit some feedback on how to proceed...

			...jim




More information about the graphics-rasterizer-dev mailing list