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";>

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

Commit messages:
 - 8300725: Improve performance of ColorConverOp for default destinations with 
alpha

Changes: https://git.openjdk.org/jdk/pull/12110/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12110&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8300725
  Stats: 74 lines in 3 files changed: 54 ins; 6 del; 14 mod
  Patch: https://git.openjdk.org/jdk/pull/12110.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12110/head:pull/12110

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

Reply via email to