[OpenJDK 2D-Dev]  Review Request: 8039774 [OGL] Image painting is broken if 'sun.java2d.accthreshold' is set to 0
james.graham at oracle.com
Thu Apr 10 23:15:08 UTC 2014
The fix looks good - approved.
It might be worth noting in the comment that the returned image will be
a single use image and so acceleration caching wouldn't help and just
add overhead compared to rendering it directly from the sw surface. Or
add a single-line comment on the new call to set the priority to 0.
Either way, approved regardless of comment changes...
On 4/10/14 4:45 AM, Sergey Bylokhov wrote:
> Please review the fix for jdk 9.
> The bug occurs, when we try to call drawImageBg with scale and
> 'sun.java2d.accthreshold' is set to 0.
> The bug exists in the DrawImage.renderImageXform(). This method is
> called, when all our attempts to scale the image fails, and we create a
> buffered image, and use it as intermediate buffer.
> Note that the buffered image has predefined image type
> (TYPE_INT_RGB/TYPE_INT_ARGB), because we know that for these types we
> have necessary tranform helpers.
> So if "sun.java2d.accthreshold" set to 0 the next code  is broken,
> because dstData.getSourceSurfaceData() returns cached version of the
> surface, which is unexpected.
> srcData = dstData.getSourceSurfaceData(img,
> srcType = srcData.getSurfaceType();
> helper = TransformHelper.getFromCache(srcType);
> !!!!! helper is null here.
> I can reproduce the problem on OGL, and sure that it will be reproduced
> on d3d as well.
> BTW: we have to do something with this code path because DrawImageBg()
> in this scenario 10000 slower than DrawImage().
> Bug: https://bugs.openjdk.java.net/browse/JDK-8039774
> Webrev can be found at: http://cr.openjdk.java.net/~serb/8039774/webrev.00
More information about the 2d-dev