[OpenJDK 2D-Dev] Are the Java2D OpenGL pipeline and JOGL integration still being supported?
aaron.riekenberg at gmail.com
Mon Nov 1 06:45:41 PDT 2010
I've been using the Java2D OpenGL pipeline + JOGL 1.1.1a for about 18
months on a project where I do things like put GLJPanels in
JInternalFrames and overlay other semi-transparent JInternalFrames
over top of them. So far it's all been working great both on Windows
and Linux with NVIDIA graphics cards.
A couple of weeks ago NVIDIA released a new 260.xx series of drivers -
260.19.12 is the latest version for Linux and Ubuntu 10.10 comes with
260.19.06 now. This series of drivers significantly breaks the Java2D
OpenGL pipeline. I get empty windows unless I set
-Dsun.java2d.opengl.fbobject=false now, and the X server often crashes
when a Java app using the OpenGL pipeline is closed. I posted a
thread describing all this on the NVIDIA nvnews.net forum here:
http://www.nvnews.net/vbulletin/showthread.php?t=156264 I think I've
made some headway on the X server crashing problem, it seems any
application creates a pbuffer and then exits has a good chance of
crashing the X server with the 260.xx drivers.
The other thing I've noticed of course is JOGL is no longer an
officially supported Sun project, and development of JOGL 2 has been
taken over by jogamp.org. They are releasing snapshot versions but in
their current versions GLJPanel is "quite broken" (quoting a forum
post) - I can confirm this is true, even when not using the Java2D
OpenGL pipeline. It seems the only working ways to use JOGL 2 at this
point is to use a GLCanvas with Swing/AWT, or to use their new NEWT
GLWindow. Neither of these is a great option for integration with
Swing components (particularly transparent swing components) - even
with the new heavyweight/lightweight mixing improvements in 6u12
putting a semi-transparent lightweight component over a heavyweight
component (ie GLCanvas) does not allow the heavyweight component to
show through (http://java.sun.com/developer/technicalArticles/GUI/mixing_components/index.html).
So all of this leaves me a bit uncertain about the future of the
Java2D OpenGL pipeline + JOGL for OpenGL/Swing integration. From what
I've read it seems folks like Chris Campbell (and probably others) did
significant work with NVIDIA and ATI to try to get all the pieces
actually working with their drivers. In this blog post Chris mentions
a "basic acceptance test suite" for driver vendors to run to make sure
the OpenGL pipeline works with new driver version
Unfortunately based on the 260.xx series it seems NVIDIA doesn't care
to run this any more.
Anyone have any thoughts on all this? Is anybody at Oracle still
working on OpenGL in Java? Is the future of OpenGL/Swing integration
really as dire as I am afraid it might be?
More information about the 2d-dev