Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6757527
Votes 2
Synopsis D3D: serious rendering issues on Nvidia boards with driver version 178.13 on Vista
Category java:classes_2d
Reported Against b31 , b37
Release Fixed 6u11(b03)
State 10-Fix Delivered, bug
Priority: 2-High
Related Bugs 6762839 , 6765224
Submit Date 08-OCT-2008
Description
The latest Nvidia driver (178.13) causes significant rendering problems across
multiple adapters on Windows Vista.

Sample configuration:
[I] Description      : NVIDIA GeForce 7600 GT
[I] GDI Name, Driver : \\.\DISPLAY1, nvd3dum.dll
[I] Vendor Id        : 0x10de
[I] Device Id        : 0x02e0
[I] SubSys Id        : 0x22491682
[I] Driver Version   : 7.15.11.7813
[I] GUID             : {D7B71E3E-41A0-11CF-B76B-420202C2CA35}
Posted Date : 2008-10-08 22:03:07.0
Work Around
disable the Direct3D pipeline with -Dsun.java2d.d3d=false .
Evaluation
Working with Nvidia on identifying the cause.
Posted Date : 2008-10-08 22:03:08.0

The condition that triggers the bug is this: we use a texture for rendering 
heap-based images into accelerated surfaces. This surface (at tile) is 
256x256, so if the image is too large to fit it is tiled.

The texture is created with DYNAMIC use flag. This means that we can
use DISCARD when locking the contents of the surface, letting the
runtime know that we don't care about previous contents of the surface.

The current code only locks with the discard flag if the loaded bits
fill whole image. This is probably due to misinterpretation of the
documentation for DISCARD/DYNAMIC, which says that you could only
use DISCARD if you're replacing every single texel in the texture,
since the contents of the texture locked with DISCARD are not guaranteed
to be the same from lock to another lock.

What they meant to say is "every single texel that you care about",
so if we only care about and access 10x10 part of 256x256 texture 
we could still use the DISCARD flag when locking.

Anyway, I don't believe our current use is illegal - we don't *have* to
use the DISCARD flag with DYNAMIC textures, it's just recommended.
The Microsoft reference rasterizer works just fine, and so were nvidia drivers
up to the latest update.

The work around for this apparent driver bug is to always lock with the DISCARD 
flag - which is the better performing option anyway.

We'll still pursue Nvidia to address this issue or explain what's
wrong with our current usage, and why the reference rasterizer doesn't
think so.
Posted Date : 2008-10-30 20:06:42.0
Comments
  
  Include a link with my name & email   

Submitted On 23-OCT-2008
Verified on 176.15 and 178.26 on Quadro NVS 285 running on Vista Business 32. Disabling the d3d pipeline by settting J2D_D3D to false can be used as a workaround.



PLEASE NOTE: JDK6 is formerly known as Project Mustang