- 
    Bug 
- 
    Resolution: Fixed
- 
     P4 P4
- 
    16
- 
        b21
- 
        generic
- 
        linux
                    The XrSwToPMBlit is a blit which is used as a direct(unscaled) blit of the image in the memory to the pixmap. It tries to optimize the SrcOver composite in case of an opaque source image and use Src instead:
if (CompositeType.SrcOverNoEa.equals(comp) && (src.getTransparency() == Transparency.OPAQUE)) {
Blit opaqueSwToSurfaceBlit = Blit.getFromCache(src.getSurfaceType(), CompositeType.SrcNoEa, dst.getSurfaceType());
opaqueSwToSurfaceBlit.Blit(src, dst, comp, clip, sx, sy, dx, dy, w, h);
} else {
The code above does not work for two reasons:
- The check "CompositeType.SrcOverNoEa.equals(comp)" always fails because the comp is of type Composite(AlphaComposite/XORComposite/etc) not a CompositeType
- This optimisation is applied already in the sun.java2d.pipe.DrawImage#blitSurfaceData:
https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/sun/java2d/pipe/DrawImage.java#L933
if (CompositeType.SrcOverNoEa.equals(comp) && (src.getTransparency() == Transparency.OPAQUE)) {
Blit opaqueSwToSurfaceBlit = Blit.getFromCache(src.getSurfaceType(), CompositeType.SrcNoEa, dst.getSurfaceType());
opaqueSwToSurfaceBlit.Blit(src, dst, comp, clip, sx, sy, dx, dy, w, h);
} else {
The code above does not work for two reasons:
- The check "CompositeType.SrcOverNoEa.equals(comp)" always fails because the comp is of type Composite(AlphaComposite/XORComposite/etc) not a CompositeType
- This optimisation is applied already in the sun.java2d.pipe.DrawImage#blitSurfaceData:
https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/classes/sun/java2d/pipe/DrawImage.java#L933
 
        