[OpenJDK 2D-Dev] [9] Review Request: 8041129 [OGL] surface->sw blit is extremely slow

Jim Graham james.graham at oracle.com
Wed Apr 23 23:48:02 UTC 2014


The benchmark spreads look much better and the code looks good, but I 
worry that we are being inconsistent in whether or not we set the SKIP_ 
values.  This function sets them back to 0 when done, but can we assume 
that about all code that uses these methods?

			...jim

On 4/23/14 1:46 PM, Sergey Bylokhov wrote:
> Hello.
> Please review an updated version of the fix.
>
> Bugs which were found in the previous version:
>   - Destination vertical offset was
> ignored(j2d_glPixelStorei(GL_PACK_SKIP_ROWS, dsty)) now we take it into
> account using PtrAddBytes(pDst, dsty * dstInfo.scanStride)
>   - srcy wasn't recalculated for the correct direction
>   - In the first version of the fix scanStride was used for iteration
> over destination memory and as a parameter of memcpy. This is incorrect,
> because we should flip only a drawable part of destination. Now memcpy
> uses pixelStride * width
>
> Because no one of these problems were not found by the tests a new ones
> were added.
>
> I filed another issue related to the surface->sw blit, opengl and d3d
> ignore the clip of the destination JDK-8041644
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8041129
> Webrev can be found at:
> http://cr.openjdk.java.net/~serb/8041129/webrev.03/webrev
>
> Benchmarks: to decrease the spread I increased the time per test from
> 2500 ms to 25 seconds
> =======================================================================
> Windows 7 x64, lenovo T410, nvidia NVS 3100M
> http://cr.openjdk.java.net/~serb/8041129/webrev.03/J2DBench/results-nvidia-windows.txt
>
> Summary:
>    OGL-base-nvidia-windows:
>      Number of tests:  10
>      Overall average:  1943.4318817726798
>      Best spread:      0.36% variance
>      Worst spread:     4.16% variance
>      (Basis for results comparison)
>
>    OGL-fix2-nvidia-windows:
>      Number of tests:  10
>      Overall average:  181165.51031119752
>      Best spread:      0.35% variance
>      Worst spread:     2.57% variance
>      Comparison to basis:
>        Best result:      19142.77% of basis
>        Worst result:     97.75% of basis
>        Number of wins:   8
>        Number of ties:   2
>        Number of losses: 0
>
>    D3D-base-nvidia-windows:
>      Number of tests:  10
>      Overall average:  30046.475416066532
>      Best spread:      0.05% variance
>      Worst spread:     4.56% variance
>      Comparison to basis:
>        Best result:      13660.29% of basis
>        Worst result:     9.34% of basis
>        Number of wins:   6
>        Number of ties:   1
>        Number of losses: 3
>
> =======================================================================
> OSX 10.8.5, macbook pro retina, nvidia GeForce GT 650M 1024 MB
> http://cr.openjdk.java.net/~serb/8041129/webrev.03/J2DBench/results-nvidia-osx.txt
>
> Summary:
>    OGL-base-nvidia-osx:
>      Number of tests:  10
>      Overall average:  719.3548194040994
>      Best spread:      0.1% variance
>      Worst spread:     4.09% variance
>      (Basis for results comparison)
>
>    OGL-fix2-nvidia-osx:
>      Number of tests:  10
>      Overall average:  11050.087724732544
>      Best spread:      0.11% variance
>      Worst spread:     3.54% variance
>      Comparison to basis:
>        Best result:      4713.13% of basis
>        Worst result:     175.51% of basis
>        Number of wins:   10
>        Number of ties:   0
>        Number of losses: 0
>
> =======================================================================
> OSX 10.8.5, macbook pro retina, Intel HD Graphics 4000
> http://cr.openjdk.java.net/~serb/8041129/webrev.03/J2DBench/results-intel-osx.txt
>
> Summary:
>    OGL-base-intel-osx:
>      Number of tests:  10
>      Overall average:  3958.228739879219
>      Best spread:      0.4% variance
>      Worst spread:     8.09% variance
>      (Basis for results comparison)
>
>    OGL-fix2-intel-osx:
>      Number of tests:  10
>      Overall average:  10098.091503211792
>      Best spread:      0.35% variance
>      Worst spread:     17.97% variance
>      Comparison to basis:
>        Best result:      477.95% of basis
>        Worst result:     105.42% of basis
>        Number of wins:   10
>        Number of ties:   0
>        Number of losses: 0
>
> On 21.04.2014 18:52, Andrew Brygin wrote:
>> Hello Sergey,
>>
>>  the fast path skips j2d_glPixelStorei(GL_PACK_SKIP_ROWS, dsty).
>>
>>  Could you please clarify why? I think that initial value of dsty
>>  (dstInfo.bounds.y1) can be non-zero, and this operation
>>  seem to be required...
>>
>> Thanks,
>> Andrew
>>
>> On 4/21/2014 6:17 PM, Sergey Bylokhov wrote:
>>> Hello.
>>> Please review the fix for jdk 9.
>>> This issue initially was found in FX[1], and there is description of
>>> this problem.
>>> In the fix the flip operation is done using memcpy after the whole
>>> image was moved from gpu to cpu.
>>>
>>> [1] https://javafx-jira.kenai.com/browse/RT-30035
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8041129
>>> Webrev can be found at:
>>> http://cr.openjdk.java.net/~serb/8041129/webrev.01
>>>
>>> Benchmarks:
>>> ==========================================================
>>> Windows 7 x64, lenovo T410, nvidia NVS 3100M
>>> http://cr.openjdk.java.net/~serb/8041129/J2DBench/results
>>> base ogl vs base d3d vs fixed ogl
>>> Summary:
>>>   OGL-base-nvidia-windows:
>>>     Number of tests:  10
>>>     Overall average:  2239.9261323744704
>>>     Best spread:      1.72% variance
>>>     Worst spread:     88.61% variance
>>>     (Basis for results comparison)
>>>
>>>   OGL-fix-nvidia-windows:
>>>     Number of tests:  10
>>>     Overall average:  166667.93024226945
>>>     Best spread:      1.23% variance
>>>     Worst spread:     66.19% variance
>>>     Comparison to basis:
>>>       Best result:      13719.74% of basis
>>>       Worst result:     97.17% of basis
>>>       Number of wins:   8
>>>       Number of ties:   1
>>>       Number of losses: 1
>>>
>>>   D3D-base-nvidia-windows:
>>>     Number of tests:  10
>>>     Overall average:  29755.21747098
>>>     Best spread:      0.34% variance
>>>     Worst spread:     61.12% variance
>>>     Comparison to basis:
>>>       Best result:      12068.41% of basis
>>>       Worst result:     8.05% of basis
>>>       Number of wins:   6
>>>       Number of ties:   0
>>>       Number of losses: 4
>>>
>>> ==========================================================
>>> OSX 10.8.5, macbook pro retina, nvidia GeForce GT 650M 1024 MB
>>> http://cr.openjdk.java.net/~serb/8041129/J2DBench-osx/results-nvidia-osx.txt
>>>
>>> Summary:
>>>   OGL-base-nvidia-osx:
>>>     Number of tests:  10
>>>     Overall average:  710.7070782394075
>>>     Best spread:      0.73% variance
>>>     Worst spread:     5.72% variance
>>>     (Basis for results comparison)
>>>
>>>   OGL-fix-nvidia-osx:
>>>     Number of tests:  10
>>>     Overall average:  11032.674771293528
>>>     Best spread:      0.62% variance
>>>     Worst spread:     8.14% variance
>>>     Comparison to basis:
>>>       Best result:      4659.95% of basis
>>>       Worst result:     169.66% of basis
>>>       Number of wins:   10
>>>       Number of ties:   0
>>>       Number of losses: 0
>>>
>>> ==========================================================
>>> OSX 10.8.5, macbook pro retina, Intel HD Graphics 4000
>>> http://cr.openjdk.java.net/~serb/8041129/J2DBench-osx/results-intel-osx.txt
>>>
>>> Summary:
>>>   OGL-base-intel-osx:
>>>     Number of tests:  10
>>>     Overall average:  3993.5366388495613
>>>     Best spread:      0.65% variance
>>>     Worst spread:     20.91% variance
>>>     (Basis for results comparison)
>>>
>>>   OGL-fix-intel-osx:
>>>     Number of tests:  10
>>>     Overall average:  10197.361705976433
>>>     Best spread:      0.72% variance
>>>     Worst spread:     38.4% variance
>>>     Comparison to basis:
>>>       Best result:      491.0% of basis
>>>       Worst result:     108.61% of basis
>>>       Number of wins:   10
>>>       Number of ties:   0
>>>       Number of losses: 0
>>>
>>> Thanks to Anton for the initial version of the fix.
>>>
>>
>
>



More information about the 2d-dev mailing list