[OpenJDK 2D-Dev] [9] Review Request: 8059942 Default implementation of DrawImage.renderImageXform() should be improved for d3d/ogl

Jim Graham james.graham at oracle.com
Mon Nov 10 20:38:17 UTC 2014


Hi Sergey,

Please don't use "union" to build up a region.  There are methods for 
building regions that are very efficient and the "union" operation is 
meant to be used for occasional operations on 2 already established 
regions, not for repeated iterative operations in building up a single 
region from scratch.

Pass the list of spans to a method on Region and have it build the 
object up in a single pass like any of the existing getScaled, 
getTranslated, or getInstance(Shape) methods...

			...jim

On 11/10/14 12:03 PM, Sergey Bylokhov wrote:
> Hello.
> Please review the fix for jdk 9:
>   - If interaction of dst&clip is empty we return immediately, without
> creation of intermediate buffers
>   - Size of intermediate buffers now take into account the clip, this is
> especially effective if the we have a big scale, which much bigger than
> destination
>   - One regular blit is used instead of scanline by scanline copying.
> Note that I plan to improve generation of the clip region of this method
> later.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8059942
> Webrev can be found at: http://cr.openjdk.java.net/~serb/8059942/webrev.14
>
> Benchmarks, note that the spread is a big(+-50% on each rerun) , because
> we generate a lot of garbage(non cached intermediate buffers):
> =======================================================================
> Windows 7 x64, lenovo T410, nvidia NVS 3100M
>
> D3D:
> http://cr.openjdk.java.net/~serb/8059942/ogl_nvidia_win_fix14/results_d3d.txt
>
>      Comparison to basis:
>        Best result:      24719.07% of basis
>        Worst result:     63.97% of basis
>        Number of wins:   78
>        Number of ties:   52
>        Number of losses: 14
>
> OGL:
> http://cr.openjdk.java.net/~serb/8059942/ogl_nvidia_win_fix14/results_ogl.txt
>
>      Comparison to basis:
>        Best result:      7797.69% of basis
>        Worst result:     91.25% of basis
>        Number of wins:   85
>        Number of ties:   47
>        Number of losses: 12
>
> GDI:
> http://cr.openjdk.java.net/~serb/8059942/ogl_nvidia_win_fix14/results_gdi.txt
>
>      Comparison to basis:
>        Best result:      106.21% of basis
>        Worst result:     81.05% of basis
>        Number of wins:   32
>        Number of ties:   97
>        Number of losses: 15
>
> =======================================================================
> OSX 10.9.5, macbook pro retina, nvidia GeForce GT 650M 1024 MB
> http://cr.openjdk.java.net/~serb/8059942/ogl_nvidia_osx_fix14/results.txt
>      Comparison to basis:
>        Best result:      26838.34% of basis
>        Worst result:     87.3% of basis
>        Number of wins:   78
>        Number of ties:   62
>        Number of losses: 4
>
> =======================================================================
> OSX 10.9.5, macbook pro retina, Intel HD Graphics 4000
> http://cr.openjdk.java.net/~serb/8059942/ogl_intel_osx_fix14/results.txt
>      Comparison to basis:
>        Best result:      20700.43% of basis
>        Worst result:     96.94% of basis
>        Number of wins:   85
>        Number of ties:   57
>        Number of losses: 2
>



More information about the 2d-dev mailing list