JDK-6613563 : D3D: Netbeans 6.0 is slower with the pipeline
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6,6u5
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2007-10-05
  • Updated: 2010-10-14
  • Resolved: 2007-11-07
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.
JDK 6
6u10 b07Fixed
Description
There have been reports that NB6 feels slower with the new
pipeline: tab switching, scrolling.

One hw config where this was reported:
[I] CheckAdaptersInfo
[I] ------------------
[I] Adapter Ordinal  : 0
[I] Description      : NVIDIA Quadro NVS 110M
[I] GDI Name, Driver : \\.\DISPLAY1, nvd3dum.dll
[I] Vendor Id        : 0x10de
[I] Version          : 7.15.11.144
[I] ------------------
[I] Adapter Ordinal  : 1
[I] Description      : NVIDIA Quadro NVS 110M
[I] GDI Name, Driver : \\.\DISPLAY2, nvd3dum.dll
[I] Vendor Id        : 0x10de
[I] Version          : 7.15.11.144
[I] ------------------
[I] InitD3D: successfully created Direct3D9 object
[I] D3DGD_getDeviceCapsNative
[I] D3DPPLM::CheckDeviceCaps: device 0: Passed
[I] D3DContext::InitContext device 0
[I] D3DContext::ConfigureContext device 0
[I] D3DContext::ConfigureContext: successfully created device: 0
[I] D3DContext::InitDevice: device 0
[I] D3DContext::InitDefice: successfully initialized device 0
[V]   | CAPS_DEVICE_OK
[V]   | CAPS_ALPHA_RT_PLAIN
[V]   | CAPS_ALPHA_RTT
[V]   | CAPS_OPAQUE_RTT
[V]   | CAPS_LCD_SHADER | CAPS_BIOP_SHADER
[V]   | CAPS_MULTITEXTURE
[V]   | CAPS_TEXNONPOW2
[V]   | CAPS_TEXNONSQUARE
[I] D3DGD_getDeviceCapsNative
[I] D3DPPLM::CheckDeviceCaps: device 1: Passed
[I] D3DContext::InitContext device 1
[I] D3DContext::ConfigureContext device 1
[I] D3DContext::ConfigureContext: successfully created device: 1
[I] D3DContext::InitDevice: device 1
[I] D3DContext::InitDefice: successfully initialized device 1
[V]   | CAPS_DEVICE_OK
[V]   | CAPS_ALPHA_RT_PLAIN
[V]   | CAPS_ALPHA_RTT
[V]   | CAPS_OPAQUE_RTT
[V]   | CAPS_LCD_SHADER | CAPS_BIOP_SHADER
[V]   | CAPS_MULTITEXTURE
[V]   | CAPS_TEXNONPOW2
[V]   | CAPS_TEXNONSQUARE

Comments
SUGGESTED FIX http://sa.sfbay.sun.com/projects/java2d_data/6u5/6613563.0
23-10-2007

EVALUATION While looking at another issue reported on java2d-interest I believe I found the cause of the slowness: Quote: OK, I figured it out. The problem basically boils down to what kind of text is rendered by the application first - lcd antialiased or regular grayscale AA. Depending on that we create a glyph cache in video memory where we cache glyphs to be rendered. If the first text to be rendered happens to be grayscale AA - the cache will be initialized for grayscale glyphs, otherwise - LCD. And since we don't switch from one cache type to another if first you rendered a single grayscale AA glyph, all following LCD-AA glyphs will be rendered without the use of cache which is slow.. And if the first window is created < 150 pixels we do not use the d3d pipeline for rendering to such window so it doesn't matter what kind of text is rendered there - the rest of Swing renders using LCD AA. I am pretty sure it is the same problem with netbeans. Now I'll need to come up with the fix - probably different caches for lcd and grayscale glyphs.
11-10-2007