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.
|