[OpenJDK 2D-Dev] [9] Review Request: 8041129 [OGL] surface->sw blit is extremely slow
Andrew Brygin
andrew.brygin at oracle.com
Fri Apr 25 12:35:53 UTC 2014
Hello Sergey,
the fix looks fine to me.
The tests do not force the OGL pipeline, so they will verify the
change only
on macosx. Is it done for purpose?
Thanks,
Andrew
On 4/24/2014 10:43 PM, Sergey Bylokhov wrote:
> Hi, Jim.
> Yes, we shouldn't depend on default values of SKIP_**
> The new version of the fix:
> http://cr.openjdk.java.net/~serb/8041129/webrev.04
> Now we sets explicitly all SKIPs parameters.
>
> On 4/24/14 3:48 AM, Jim Graham wrote:
>> 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