Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8131760

JEP 265: Marlin Graphics Renderer

    Details

    • Author:
      Laurent Bourgès
    • JEP Type:
      Feature
    • Exposure:
      Open
    • Subcomponent:
      2d
    • Scope:
      JDK
    • Discussion:
      graphics dash rasterizer dash dev at openjdk dot java dot net
    • Effort:
      S
    • Duration:
      S
    • Alert Status:
       Green
    • Alert Reason:
      Delivered
    • JEP Number:
      265

      Description

      Summary

      Update Java 2D to use the Marlin Renderer as the default graphics rasterizer.

      Success Metrics

      The Marlin Renderer must consistently perform at least as well as Pisces, the current graphics rasterizer, with equal or better quality and accuracy. It must significantly outperform Pisces on most benchmarks. It should demonstrate multi-threaded scalability that outperforms Pisces. The development version is already meeting these goals. Additional goals are to equal or outperform the closed-source Ductus rasterizer on single-threaded performance, and match it in quality and accuracy. Marlin already has demonstrated better scalability for the MT case than Ductus.

      Motivation

      The JDK currently uses a graphics rasterizer called Pisces. It is used for anti-aliased rendering (other than fonts), and so its performance is crucial for many graphics intensive applications, yet its performance is much poorer than that of the closed-source Ductus rasterizer shipped by Oracle. As a result, Marlin is already being used by some applications as a replacement for Pisces, by placing it on the bootstrap class path. A higher-performing rasterizer is therefore important for adoption.

      Description

      The graphics rasterizer is an implementation library used by Java 2D. It implements an internal interface for communicating with the AWT and Java 2D subsystems, but does not have any externally visible API for Java developers. Marlin is all Java code (thus far) and is a fork of the Pisces rasterizer. Although it was separately hosted for a long time it is now being developed through the continuation of the OpenJDK graphics-rasterizer project which was originally focused on Pisces. Marlin is already largely complete and has been field tested as well as having passed Oracle's internal testing. It will be incrementally further developed and then integrated into the JDK as a replacement for Pisces and, at Oracle's option, perhaps Ductus as well.

      Testing

      This does not require any new test development, since there is no API. However we anticipate developing additional test scenarios for the existing J2DBench or other test suites to examine MT performance if we identify gaps there. Test execution will be the existing functional and compliance tests as well as existing performance tests such as J2DBench The current version of Marlin has already passed all functional, regression, and compliance (JCK) tests in JDK 9, run by courtesy of the Oracle SQE group.

        Issue Links

          Activity

          Hide
          lbourges Laurent Bourgès added a comment -
          See JDK-8143849 - Integrate Marlin renderer per JEP 265 (client-libs)
          http://hg.openjdk.java.net/jdk9/client/jdk/rev/314ce60cae98
          Show
          lbourges Laurent Bourgès added a comment - See JDK-8143849 - Integrate Marlin renderer per JEP 265 (client-libs) http://hg.openjdk.java.net/jdk9/client/jdk/rev/314ce60cae98
          Hide
          flar Jim Graham added a comment -
          As of the integration of the Marlin Renderer in JDK9 b96, Marlin is performing on par with or better than Ductus in single threaded benchmarks and much better than Ductus in multi-threaded benchmarks. It also outperforms Pisces in all cases. The quality is also on par or better than Ductus in some quality tests. As a result, the Marlin renderer was enabled as the default AA renderer for both the open source and Oracle specific builds as of b96.
          Show
          flar Jim Graham added a comment - As of the integration of the Marlin Renderer in JDK9 b96, Marlin is performing on par with or better than Ductus in single threaded benchmarks and much better than Ductus in multi-threaded benchmarks. It also outperforms Pisces in all cases. The quality is also on par or better than Ductus in some quality tests. As a result, the Marlin renderer was enabled as the default AA renderer for both the open source and Oracle specific builds as of b96.
          Hide
          vdyakov Victor Dyakov added a comment -
          Completed from SQE perspective [GREEN]
          Show
          vdyakov Victor Dyakov added a comment - Completed from SQE perspective [GREEN]

            People

            • Assignee:
              lbourges Laurent Bourgès
              Reporter:
              lbourges Laurent Bourgès
              Owner:
              Laurent Bourgès
              Reviewed By:
              Jim Graham, Philip Race, Victor Dyakov
              Endorsed By:
              Kevin Rushforth
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Due:
                Created:
                Updated:
                Resolved:
                Integration Due: