RFR: 8300725: Improve performance of ColorConvertOp for default destinations with alpha

Laurent Bourgès lbourges at openjdk.org
Sat Jan 21 08:48:12 UTC 2023


On Fri, 20 Jan 2023 06:02:53 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

> The "default destination" for the ColorConverOp is used when the user passes "null" as the DST parameter. In this case, the "ColorConverOp.filter" creates the default image and uses ComponentColorModel: 8 bits per color component and optionally 8 bits for the alpha channel. For example for the ARGB source default destination will be RGBA format. Note that the RGBA format is not supported by BufferedImage directly, so the CUSTOM image type will be used.
> 
> Generic filtering of the CUSTOM image type is slow because we cannot pass that format directly to the CMM. But it would be good to support CUSTOM images that were created by the ColorConverOp.
> 
> Support of the default destination w/o alpha was implemented as part of the https://bugs.openjdk.org/browse/JDK-8005530. Since then we added support of the alpha to CMM code https://bugs.openjdk.org/browse/JDK-8012229.
> Now we can improve the performance of the default destination if it has the alpha channel.
> 
> The numbers for filtering opaque and transparent images to the null destination:
> <img width="705" alt="8300725" src="https://user-images.githubusercontent.com/14138494/213744370-241726f9-6653-403e-bb90-ce98fc089945.png">

Congratulations, it is amazing!

Would it be possible to add support for INT_BGRA_PREMUL as supported by skia default raster N32 format?

Of course I cab help but not alone as it means many changes in C macros & backends + CSR request ...

-------------

PR: https://git.openjdk.org/jdk/pull/12110



More information about the client-libs-dev mailing list