Please review this simple fix for MarlinFX: JBS: https://bugs.openjdk.java.net/browse/JDK-8170879 webrev: http://cr.openjdk.java.net/~lbourges/marlinFX/marlinFX-8170879.0/
As mentioned in JBS, I studied both quality & performance and MarlinFX is now slightly better than openpisces (1.6 vs 2.1 avg px). I added attachements in JBS providing updated test classes (bug fix) " This simple fix changes MarlinFX renderers: - use QUAD_DEC_BND=0.5 pixel - cleaned up comments about both CUBIC / QUAD BND that are really related to 2nd derivative (so expressed subpixels) - modified the subdivision condition to use the manhattan norm |ddx| + |ddy| instead of max( |ddx| , |ddy| ) to improve the average bad pixels from 2.1 to 1.6 (30% better) Quality tests after the fix: cubic: bad paths (59294/100000 == 59,29%, 94335 bad pixels (avg = 1,59), 3966 warnings (avg = 0,07) quad: bad paths (62916/100000 == 62,92%, 103818 bad pixels (avg = 1,65), 6514 warnings (avg = 0,10) I also fixed the RasterPerf test that did not really tested the nonAA performance as the antialiasing argument was hard-coded to true. Here are the latest results still showing that MarlinFX is still the fastest rasterizer (the fix caused only 3% slowdown on quads) 1656771 10x10 Rectangle native non-AA rasterizations took 2838.21ms, 583737.989789339 ops/sec 167656 100x100 Rectangle native non-AA rasterizations took 2988.26ms, 56104.89047137799 ops/sec 24657 300x300 Rectangle native non-AA rasterizations took 2999.07ms, 8221.548680090827 ops/sec 1095638 10x10 Ellipse native non-AA rasterizations took 2921.11ms, 375075.91292351193 ops/sec 141453 100x100 Ellipse native non-AA rasterizations took 2993.52ms, 47253.06662390764 ops/sec 23322 300x300 Ellipse native non-AA rasterizations took 2990.53ms, 7798.6176363387085 ops/sec 104167 100x100 Cubics native non-AA rasterizations took 2993.09ms, 34802.49508033504 ops/sec 179098 100x100 Quads native non-AA rasterizations took 2990.27ms, 59893.588204409636 ops/sec 697353 10x10 Rectangle native AA rasterizations took 2970.08ms, 234792.66551742714 ops/sec 69040 100x100 Rectangle native AA rasterizations took 2996.82ms, 23037.75335188633 ops/sec 15150 300x300 Rectangle native AA rasterizations took 3000.23ms, 5049.6128630138355 ops/sec 427194 10x10 Ellipse native AA rasterizations took 2984.12ms, 143155.77121563477 ops/sec 52642 100x100 Ellipse native AA rasterizations took 3000.88ms, 17542.187624963342 ops/sec 14141 300x300 Ellipse native AA rasterizations took 2999.32ms, 4714.735340010402 ops/sec 32264 100x100 Cubics native AA rasterizations took 3004.43ms, 10738.80902533925 ops/sec 65598 100x100 Quads native AA rasterizations took 2996.14ms, 21894.170499375865 ops/sec 2270203 10x10 Rectangle Java non-AA rasterizations took 2643.8ms, 858689.3864891444 ops/sec 130620 100x100 Rectangle Java non-AA rasterizations took 2933.28ms, 44530.355097365406 ops/sec 18158 300x300 Rectangle Java non-AA rasterizations took 2999.77ms, 6053.130740023402 ops/sec 1302146 10x10 Ellipse Java non-AA rasterizations took 2832.42ms, 459729.1362156742 ops/sec 115743 100x100 Ellipse Java non-AA rasterizations took 2980.09ms, 38838.759903224396 ops/sec 17448 300x300 Ellipse Java non-AA rasterizations took 3000.02ms, 5815.961226925154 ops/sec 90130 100x100 Cubics Java non-AA rasterizations took 2947.1ms, 30582.606630246682 ops/sec 153626 100x100 Quads Java non-AA rasterizations took 2981.04ms, 51534.36384617449 ops/sec 577864 10x10 Rectangle Java AA rasterizations took 2886.25ms, 200212.7327847553 ops/sec 49513 100x100 Rectangle Java AA rasterizations took 2997.83ms, 16516.280109279047 ops/sec 10649 300x300 Rectangle Java AA rasterizations took 2999.48ms, 3550.282048888474 ops/sec 396414 10x10 Ellipse Java AA rasterizations took 2984.77ms, 132812.2434894481 ops/sec 40773 100x100 Ellipse Java AA rasterizations took 2999.61ms, 13592.767059717762 ops/sec 10132 300x300 Ellipse Java AA rasterizations took 2999.64ms, 3377.7386619727704 ops/sec 28466 100x100 Cubics Java AA rasterizations took 3080.16ms, 9241.727702457016 ops/sec 48989 100x100 Quads Java AA rasterizations took 2900.38ms, 16890.545376812694 ops/sec 2837061 10x10 Rectangle Marlin non-AA rasterizations took 2773.42ms, 1022946.7588753236 ops/sec 217841 100x100 Rectangle Marlin non-AA rasterizations took 2560.12ms, 85090.15202412388 ops/sec 48999 300x300 Rectangle Marlin non-AA rasterizations took 2966.98ms, 16514.772597051546 ops/sec 1165498 10x10 Ellipse Marlin non-AA rasterizations took 2259.69ms, 515777.82793215 ops/sec 145263 100x100 Ellipse Marlin non-AA rasterizations took 2450.31ms, 59283.51922817929 ops/sec 31591 300x300 Ellipse Marlin non-AA rasterizations took 2868.11ms, 11014.57057086374 ops/sec 93796 100x100 Cubics Marlin non-AA rasterizations took 2760.0ms, 33984.057971014496 ops/sec 182128 100x100 Quads Marlin non-AA rasterizations took 2978.02ms, 61157.413314887075 ops/sec 803422 10x10 Rectangle Marlin AA rasterizations took 2411.52ms, 333159.9986730361 ops/sec 64034 100x100 Rectangle Marlin AA rasterizations took 2449.72ms, 26139.31388077005 ops/sec 20347 300x300 Rectangle Marlin AA rasterizations took 2996.04ms, 6791.297846490701 ops/sec 560302 10x10 Ellipse Marlin AA rasterizations took 2462.22ms, 227559.68191307035 ops/sec 52090 100x100 Ellipse Marlin AA rasterizations took 2436.22ms, 21381.484430798533 ops/sec 17032 300x300 Ellipse Marlin AA rasterizations took 2918.12ms, 5836.634545529314 ops/sec 39960 100x100 Cubics Marlin AA rasterizations took 2516.15ms, 15881.406116487491 ops/sec 53866 100x100 Quads Marlin AA rasterizations took 2426.0ms, 22203.627370156635 ops/sec " Laurent