classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

X Rendering and GNU Classpath


From: Sascha Brawer
Subject: X Rendering and GNU Classpath
Date: Wed, 30 Jul 2003 10:50:27 +0200

Hello Keith

The GNU Classpath project [1] provides a non-proprietary implementation
of the core libraries of the Java platform. It gets used by a number of
free and commercial projects for Java virtual machines. Some of its
developers are currently thinking about graphics.

As you might know, the Java2D API [2] is very much oriented at the PDF
1.4 drawing model. Implementing it via the X Rendering Extension thus
seems like a good choice. Therefore, I hope that you don't mind if I take
the liberty to ask you a few questions.

Polygon rendering: How stable and complete is the XFree86 implementation
of the Rendering Extension nowadays? I think we would very much like to
use polygon rendering, of which you write in your Usenix 2001 paper [3]
that it is "less well understood [than the rest] and currently not
implemented within XFree86."

MIT Shared Memory Extension: My understanding is that compositing should
work well together with the MIT Shared Memory Extension, i.e. on pixmaps
that were created by XShmCreatePixmap. Is this correct? This would be
very useful for images or gradient paints. The opposite transfer
direction (from server to client) would probably be needed for
accelerated drawing into offscreen images, and for custom Composites [4]
that are not Porter-Duff AlphaComposites [5].

Race conditions with shared memory: I assume there is a potential race
condition when using shared memory pixmaps for compositing. The client
could re-use a source picture buffer, or access the destination, before
the server has finished compositing. How to avoid this? Is it somehow
possible to cause XRender to send completion events, like XShmPutImage?
Or would the XSync call do the trick? (Sorry if this is a dumb question,
but I could not find anything on this in [6]).

Client-side implementation: Do you know about code which could be used
for a client-side implementation of the Rendering Extension? We'd need
this not only for X11 servers that do not support the Rendering
Extension, but also for target platforms that do not have X11 at all.
>From a first glance, Xr does not seem to be at the right level of
granularity. To give just one example, Java programmers can easily write
their own Strokes, and I've already mentioned custom composites.

OpenGL: I've heard from some users that their target platform has OpenGL,
but not X. My understanding (which is rather superficial, unfortunately)
is that it should be relatively straigtforward to implement the drawing
model of the Rendering Extension on top of OpenGL. Is this correct? Not
that I personally would have any plans for implementing this, but it
would be good if I could tell these users how to proceed. OpenGL might
also be a viable path for those users who wish to use GNU Classpath on
Windows, or maybe also on X servers without the rendering extension.

General: In case you are familiar with Java2D, do you see any areas where
its drawing model does not match that of the X Rendering Extension?

Meeting: Some developers of GNU Classpath will meet at the LinuxKongress
in Saarbrücken/Germany in mid of October. If you happen to be around,
you'd certainly be most welcome to join our discussions.

Background literature: What could we read to get more familiar with the X
Rendering Extension, besides your Usenix 2001 paper [3] and the protocol
specification [7]?

>From the broadness of my questions, you see that everything is still at
the earliest stage of planning. Also, it should be said that it seems
rather unrealistic to expect that all of Java2D will soon be implemented
in GNU Classpath. However, I find it important to make sure that we do
not make serious mistakes while planning the work.

Thank you very much for taking the time for answering these questions,
and best regards,

-- Sascha

Sascha Brawer, address@hidden, http://www.dandelis.ch/people/brawer/

PS: I am sending a copy of this message to the mailing list of GNU
Classpath, so that the other people know that I've contacted you.

[1] http://www.gnu.org/software/classpath/
[2] http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec/j2d-bookTOC.html
[3] http://keithp.com/~keithp/talks/usenix2001/
[4] http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Composite.html
[5] http://java.sun.com/j2se/1.4.2/docs/api/java/awt/AlphaComposite.html
[6] http://www.x-docs.org/Xext/mit-shm.pdf
[7] http://keithp.com/~keithp/render/protocol.html






reply via email to

[Prev in Thread] Current Thread [Next in Thread]