JDK-4607536 : Use opengl to improve runtime performance of Swing/2D
  • Type: Enhancement
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 5.0
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2001-12-14
  • Updated: 2017-05-16
  • Resolved: 2003-04-21
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 Availabitlity Release.

To download the current JDK release, click here.
5.0 tigerFixed
Related Reports
Duplicate :  

Name: ca25432			Date: 12/13/2001

Improve the runtime performance of Swing and 2D , using opengl bindings. OpenGL has drivers available on many operating systems that can take advantage of hardware acceleration on the graphics card itself.

Original optional support is for Linux and Solaris.

Later addition for optional support for windows tracked separately as 5008045 OGL: add OpenGL-based pipeline for Windows

CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger FIXED IN: tiger INTEGRATED IN: tiger tiger-b05

EVALUATION Name: ca25432 Date: 12/13/2001 This feature has been added for Tiger release ====================================================================== A baseline OpenGL pipeline for Java 2D has been putback as of 2/18/2003. This OpenGL pipeline is currently disabled by default, but can be enabled by specifying the -Dsun.java2d.opengl=true system property on the command line. A number of requirements must be met for the pipeline to be enabled: - the -Dsun.java2d.opengl=true flag must be specified - the libGL.so library must be available and all required function symbols must be present - the GLX version must be >= 1.3 - the OpenGL version must be >= 1.2 and the GL_ARB_imaging subset must be present If any of these requirements is not met, the existing X11 pipeline will be used. These requirements are subject to change in the future as the pipeline is updated (requirements will most likely be loosened so that we support a wider variety of configurations). This new pipeline has been extensively tested using the IFB (Expert 3D) and IFB-lite (Expert 3D Lite) framebuffers and the Sun OpenGL for Solaris 1.3 implementation. In theory this pipeline should work well on all modern Sun framebuffers, as well as any video card supported by XFree86 on Linux. However, there are some outstanding driver/library bugs that cause problems when running Java apps with the OpenGL pipeline enabled. We are working closely with driver groups within Sun and at other companies (ATI, Nvidia, etc.) to get these issues resolved. Once these bugs are fixed, the Java 2D OpenGL pipeline should be accelerated in hardware on a variety of video cards, including (but not limited to): - Sun IFB series (Expert 3D, Expert 3D Lite, XVR-500) - Sun FFB3 (XVR-1000) - Sun IFB3 (XVR-1200) - Nvidia boards from the TNT series to the Radeon series - ATI boards in the FireGL and Radeon series - many other boards supported by the open source DRI project This umbrella RFE to support OpenGL will be marked "fixed" since baseline support for OpenGL is now available in Tiger. There is still plenty of engineering work remaining to make the pipeline perform better, to take advantage of more OpenGL features and extensions, and so on. Some examples include: - enable OpenGL as the default pipeline for certain (modern) framebuffers - cache glyphs as OpenGL texture objects for increased text performance - allocate VolatileImages in unused backbuffer memory - accelerate Beziers using OpenGL primitives - fix XORed text rendering (causes the only known JCK failure when the sun.java2d.opengl=true flag is specified) These issues will be opened as separate bugs and RFEs with "OGL: <desc>" in the synopsis for easy tracking. Note that the OpenGL libraries need not be installed on build machines in order to build the JDK. The necessary headers are included in the source tree (only used to resolve GL_* constants) and the appropriate libraries are dynamically loaded at runtime, obviating the need to statically link libGL.so at build time. ###@###.### 2003-02-18