RFR: 8300725: Improve performance of ColorConverOp for default destinations with alpha
Sergey Bylokhov
serb at openjdk.org
Fri Jan 20 16:05:36 UTC 2023
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
More information about the client-libs-dev
mailing list