[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