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: 6695820
Votes 0
Synopsis D3D: performance degradation for AA primitives on older hardware
Category java:classes_2d
Reported Against
Release Fixed 6u10(b24)
State 10-Fix Delivered, bug
Priority: 3-Medium
Related Bugs 6690659
Submit Date 29-APR-2008
Description
The fix for 6690659 introduced some performance optimizations for
rendering antialised and/or transformed primitives.

On some older hardware this optimization actually results in performance
degradation.
Posted Date : 2008-04-29 23:46:32.0
Work Around
N/A
Evaluation
The pixel shader which does antialiasing proves to be too much for
older pre-PS3.0 level hardware. Even though it is compiled to target
PS2.0a pixel shader profile it seems that it runs completely in
software on older boards like FX5600 or Nvidia Quadro NV280.

NV280, drawLine: AA
graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=ident,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 958.0026809 (var=0.34%) (100.0%)
new: 365.6308515 (var=0.4%) (38.17%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=rot15,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 883.5955056 (var=0.26%) (100.0%)
new: 404.6854082 (var=0.47%) (45.8%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=ident,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 599.5514147 (var=6.41%) (100.0%)
new: 46.89521345 (var=109.44%) (7.82%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=rot15,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 833.9368005 (var=1.26%) (100.0%)
new: 69.48881789 (var=75.58%) (8.33%)

  NV280, drawLine NO AA: the only improvement is 2x for TX:
 graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=ident,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 90419.85205 (var=2.11%) (100.0%)
new: 87247.61840 (var=3.16%) (96.49%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 17255.51455 (var=0.6%) (100.0%)
new: 40464.60200 (var=0.13%) (234.5%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=ident,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 76994.82098 (var=1.69%) (100.0%)
new: 74372.50664 (var=0.13%) (96.59%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 63822.01875 (var=1.15%) (100.0%)
new: 61676.05633 (var=0.2%) (96.64%)

FX5600, drawLine: AA - losing across the board:

graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=ident,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 588.2263134 (var=0.88%) (100.0%)
new: 475.1216122 (var=0.77%) (80.77%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=rot15,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 564.7548690 (var=1.29%) (100.0%)
new: 523.8857972 (var=1.24%) (92.76%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=ident,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 415.3290529 (var=0.62%) (100.0%)
new: 65.86402266 (var=25.73%) (15.86%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=rot15,graphics.render.opts.antialias=true,graphics.render.opts.paint=single:
old: 557.3379579 (var=0.65%) (100.0%)
new: 81.57756123 (var=109.07%) (14.64%)

FX5600, drawLine: NO AA: 2x improvement for TX:

graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=ident,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 42154.74207 (var=17.04%) (100.0%)
new: 43618.63665 (var=3.87%) (103.47%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=20,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 9276.336499 (var=0.07%) (100.0%)
new: 19064.87641 (var=0.27%) (205.52%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=ident,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 305632.56148 (var=0.4%) (100.0%)
new: 303968.88913 (var=0.54%) (99.46%)
-- 
graphics.render.tests.drawLine,graphics.opts.sizes=250,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 118543.53123 (var=0.47%) (100.0%)
new: 241079.35076 (var=0.47%) (203.37%)


Similar story with drawRect, fillRect: very bad with AA,
some improvement (up to 8x) for NO AA with TX:

FX5600:
graphics.render.tests.fillRect,graphics.opts.sizes=20,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 33762.81271 (var=0.54%) (100.0%)
new: 288962.08509 (var=0.33%) (855.86%)
-- 
graphics.render.tests.fillRect,graphics.opts.sizes=250,graphics.opts.transform=rot15,graphics.render.opts.antialias=false,graphics.render.opts.paint=single:
old: 636079.10480 (var=1.94%) (100.0%)
new: 1271898.62160 (var=0.87%) (199.96%)

So it looks like as a short term solution we should only enable the AA shader 
for PS3.0 level of hardware.
Posted Date : 2008-04-29 23:46:32.0

Another data point: with the fix for 6690659 we have put in a better
mechanism for flushing for the Direct3D pipeline.

The mechanism is the same we used for the old pre-6u10 pipeline:
create a RT surface and lock/unlock it on sync request.

This resulted in better flushing behavior: the J2DBench
benchmark shows much smaller score variations (< 1%) while
the old mechanism sometimes went into double digits.

The new flushing mechamism degrades the benchmark scores by 
around 2-3% though.
Posted Date : 2008-04-30 22:27:51.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang