United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6439320 : OGL: enable sun.java2d.opengl.fbobject by default

Details
Type:
Bug
Submit Date:
2006-06-15
Status:
Resolved
Updated Date:
2008-02-06
Project Name:
JDK
Resolved Date:
2006-07-17
Component:
client-libs
OS:
solaris_10
Sub-Component:
2d
CPU:
generic
Priority:
P2
Resolution:
Fixed
Affected Versions:
6
Fixed Versions:

Related Reports
Relates:

Sub Tasks

Description
In 6255507 we added a new codepath to the OGL pipeline that uses framebuffer objects
(FBOs) instead of pbuffers.  There are many benefits to using FBOs:
  - platform independent render-to-texture API
  - improved blitting performance
  - can transform/blend/etc just like regular textures, unlike pbuffers
  - can avoid expensive context switches in many cases

SwingMark numbers are improved anywhere from 10-15% (depending on the hardware) when
using the FBO codepath instead of the default pbuffer-based one.  Unfortunately though
when we fixed 6255507 the extension was still relatively new and there were driver
bugs that prevented us from enabling the FBO codepath by default.  The purpose of this
bug report is to discuss the resolved/remaining barriers and to provide a vehicle
for enabling the FBO codepath by default for the best out-of-box performance
experience.

                                    

Comments
EVALUATION

Currently the biggest obstacle to enabling the FBO codepath by default is
documented in 6298243, where copyArea() operations are extemely slow for FBO
destinations on Nvidia nv3x hardware (GeForce FX 5xxx series), which makes
scrolling/dragging unusable in Swing applications on those boards.  We plan to
workaround that driver/hardware issue under 6298243, which would eliminate the
barrier for Nvidia boards.  (Update: the fix for 6298243 has been putback into
the Java2D workspace, and is targetted for b92 along with the fix for 6439320.)

In addition to the above driver issue, Nvidia has recently broken our FBO codepath
in their latest 84.21 driver release (only affects Windows).  However, they have
fixed this problem in their next driver release (whatever comes after 91.31),
so this was just a small blip.  Once we turn on the FBO codepath by default with
this bug fix, if you have the 84.21 drivers installed, you can do one of three
things to work around the problem:
  - upgrade to 91.xx when it becomes available (highly recommended)
  - downgrade to 81.95 or an earlier Nvidia driver release
  - disable the FBO codepath using -Dsun.java2d.opengl.fbobject=false
                                     
2006-06-15
EVALUATION

Another benefit to enabling the FBO codepath by default is that it works
around a number of bugs in ATI's driver support for pbuffers, specifically:
  5033205: OGL with Java2Demo and Radeon not displaying application demos properly
  5066318: OGL: Enabling OGL pipeline on Windows with ATI board crashes VM at exit
  6357499: OGL crashed with resizing Java2Demo Frame on Radeon 9800XT
                                     
2006-06-19



Hardware and Software, Engineered to Work Together