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, [EMAIL PROTECTED], 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 _______________________________________________ Classpath mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/classpath