JDK-8036875 : Component.setGraphicsConfiguration() breaks some 3D applications
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7,8,9
  • Priority: P3
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2014-03-07
  • Updated: 2021-07-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
http://mail.openjdk.java.net/pipermail/awt-dev/2014-March/007173.html

In 2009 Anthony asked:
> The question is: is it really possible for one toplevel to contain
> components having different GraphicsDevice's (and/or different
> GraphicsConfiguration's)? Or may I assume that all and every descendant
> components of a toplevel window use the same GC that the window uses
> (and therefore the Container.checkGD() may safely be removed)?
http://mail.openjdk.java.net/pipermail/awt-dev/2009-January/000509.html
...
http://mail.openjdk.java.net/pipermail/awt-dev/2009-January/000519.html

Yes when using Java3D and GraphicsConfigTemplate3D is possible and wanted for the Java3D Canvas3D
to use a different GraphicsConfiguration compared to its parent components GraphicsConfiguration
especially when using 3D Stereoscopy.

The old awt-dev discussion ended with a behavioural change in Container when using 7u45 and later.
JDK-6804747 : Ensure consistent graphicsConfig member across components hierarchy
http://bugs.java.com/view_bug.do?bug_id=6804747
http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/rev/66d6db0a1de6

This change caused Java3D Stereoscopy to stop working when using professional
3D equipment such as NVIDIA Quadro (FX) or ATI/ASUS FireGL, compatible monitors.
The Stereo capable GraphicsConfiguration GC of the Canvas3D now gets replaced using
Component.setGraphicsConfiguration() inside java.awt.Container.addImpl()
by the non Stereo enabled GraphicsConfig of the parent window/frame.
Regressions caused by JDK-6804747 is described here:
http://stackoverflow.com/questions/21239229/stereo-problems-on-linux-using-java-7-how-to-change-the-gc-of-a-component-afte?rq=1
http://forum.jogamp.org/Java3D-stereo-tp4029914.html - includes Java3D test code that expose the issue.