[OpenJDK 2D-Dev] [9] Review Request: 8041129 [OGL] surface->sw blit is extremely slow
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Fri Apr 25 12:52:49 UTC 2014
On 4/25/14 4:35 PM, Andrew Brygin wrote:
> 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?
Yes, I assume that the jdk know better, when to use ogl pipeline, and if
it was not used by default means it has some issues.
Moreover I think it is better to run all tests with
-Dsun.java2d.opengl=True when needed.
>
> 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.
>>>>>>
>>>>>
>>>>
>>>>
>>
>>
>
--
Best regards, Sergey.
More information about the 2d-dev
mailing list