[OpenJDK Rasterizer] Marlin renderer contribution for review
Laurent Bourgès
bourges.laurent at gmail.com
Mon Mar 30 21:24:15 UTC 2015
Jim,
2015-03-30 20:34 GMT+02:00 Jim Graham <james.graham at oracle.com>:
> Looks like it is good to go into the graphics-rasterizer repo, then.
>
> Thanks for the hard work on the cleanup Laurent!
>
Thanks for your reviews too, but I am really happy that marlin goes in
(back).
What kind of performance / regression tests do you plan to run (j2dBench) ?
I hope testers and then users will enjoy its performance and its
scalability !
We'll need to get people testing this with their programs and start looking
> into any additional cleanup.
Excellent. Could you give how to properly commit this patch as I never did
it before (hg push) ?
FYI I have run all my regression tests last night and they passed (same
output image as pisces) : createStrokedShape, very large dashed shape
(spiral with 800k segments), winding rule (even odd / non zero) and many
complex affine transforms (tx, shear, rotate ...).
Did you have a list of things you were planning on working on?
>
Here is my list of ideas to be discussed:
First:
- improve coordinate rounding ie ceil(x - 0.5) or better ?
Maybe ceil/floor(float) intrinsics could help but let's discuss that in the
core-libs mailing list...
I have found another trick about float rounding:
http://stereopsis.com/sree/fpu2006.html
Or you may have other ideas as you did in your JavaFX renderer ?
- overflow handling: support NaN or very large coordinates => use subpixel
offsets vs boundaries to avoid overflow ...
- set reference to weak by default and maybe tune a bit initial array
capacities ...
- tweak tile size and x/y subpixels: it seems using 256 subpixel on x-axis
is free (no performance penalty)
- do some improvements to array caches (dirty vs clean caches): after your
comments, it appears few int[] arrays could use a dirty cache => no need to
zero-fill but it needs a new dirty IntArrayCache
- improve array cache access according to the array length: use some bit
magic tweak to avoid testing array length (in loop).
Last (R&D): Improve rendering quality
- adaptive scanline step to refine nearly horizontal edges up to 1/256
precision depending on the edge slope ~ adaptive resampling.
- gaussian 1/2 filtering ie 1.5x1.5 pixels (ie mixing 3 scanlines) ~
use resampling filter better than the box filter
- gamma correction in alpha & color coverage blending (as demonstrated
a while ago) at least on buffered image output (or quality color rendering
ie slow but more accurate)
Of course, I would appreciate having some help from other contributors on
these tasks.
Regards,
Laurent
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/graphics-rasterizer-dev/attachments/20150330/46b4e90a/attachment-0001.html>
More information about the graphics-rasterizer-dev
mailing list