Review request for JDK-8169270: Leverage new Java2D Marlin rasterizer for JavaFX

Laurent Bourgès bourges.laurent at
Thu Nov 10 15:53:01 UTC 2016

Jim & Kevin,

Sorry to announce this code review in late, I thought JBS would have sent
such email from the comment.

Please review the marlin-FX webrev:
Reviewers: flar, kcr

This webrev consist in Prism classes (ShapeUtil, SWContext) using the new
Marlin renderer ported to JavaFX.
The PrismSettings class has been modified to have the new
prism.marlinrasterizer flag (disabled by default).

Marlin-FX is slightly different than Marlin OpenJDK9 to:
- use javafx classes instead of java2d classes
- fix Dasher / Stroker as done in OpenPisces
- support both AA and nonAA Renderer (see MarlinRenderer interface)
- fix Renderer cubic decimation thresholds to match OpenPisces nonAA
- the new MarlinAlphaConsumer supports optimized alpha copies (only
valuable ranges) and the block flag optimized fills for the
MarlinRasterizer only (not SWContext)

Note: The SWContext.DirectRTPiscesMarlinAlphaConsumer relies on
PiscesRenderer.emitAndClearAlphaRow() that is not optimal with the Marlin
approach as it expects a complete row [x0, x1] although Marlin gives the
span [xmin, xmax] where coverage != 0. The prism-native-sw (c code) could
be improved to accept an extra offset to skip useless pixels [x0, xmin] and
improve the blending performance.

Will upgrade later OpenJDK9's Marlin renderer or if you prefer, I can do it

PS: As you proposed in the previous thread, I will refactor reentrant
classes to com.sun.util.reentrant and remove useless properties in


More information about the openjfx-dev mailing list