[OpenJDK 2D-Dev] [9] Review Request: 8041129 and 8017626

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Fri May 30 08:10:00 UTC 2014


added @awt-dev

On 16.05.2014 19:33, Sergey Bylokhov wrote:
> Hello.
> Any volunteers? This change is targeted to 8u20, so I would like to 
> push it to jdk9/8 as soon as possible and to catch a possible 
> regressions.
>
> On 5/13/14 5:00 AM, Sergey Bylokhov wrote:
>> Hello.
>> Please review the fix for jdk 9. This a second  iteration of the fix 
>> for 8041129, because it was changed to cover 8017626 as well.
>>
>> Description of the problem:
>> 8041129: [OGL] surface->sw blit is extremely slow
>>  - The problem is in the glReadPixels(), which is really slow and we 
>> call it very often for each image to make a flip.
>> Solution:
>>  - We call glReadPixels() only once and then flip is done using 
>> memcpy after the whole image was moved from gpu to the memory.
>>  - glPixelStorei were added/removed when necessary.
>>  - Note: actually on my mac the slow path and the fast path(memcpy) 
>> works in the same time. I left it as is, because on other system it 
>> can be faster.
>>
>> 8017626: [OGL] Translucent VolatileImages don't paint correctly
>>  - The problem is in OGLSurfaceToSwBlit. It was implemented with 
>> assumption that the source(ogl) surface contain argb color format, 
>> this is wrong because it use premultiplied alpha.
>> Solution:
>>  - The new ogl blit was added to cover the old behavior 
>> OGLSurfaceToSwBlit(SurfaceType.IntArgbPre,OGLSurfaceData.PF_INT_ARGB_PRE),
>>  - The blit was changed to properly restore the color components if 
>> the source is transparent and destination does not use premultiplied 
>> alpha.
>>
>> Bugs:
>>         https://bugs.openjdk.java.net/browse/JDK-8041129
>>         https://bugs.openjdk.java.net/browse/JDK-8017626
>> Webrev can be found at: 
>> http://cr.openjdk.java.net/~serb/8041129/webrev.10
>>
>> Benchmarks:
>> Note that each benchmark was executed 3 times(25 seconds each) to be 
>> protected from such spread:
>> D3D-base-nvidia-windows: 61796.32109 (var=308.77%) (5857.64%)
>> |*************
>> |*********************************************************
>> |**************************************************
>> So check the full report for additional information, since the spread 
>> for most of the test is small.
>>
>> ==========================================================
>> Windows 7 x64, lenovo T410, nvidia NVS 3100M
>> http://cr.openjdk.java.net/~serb/8041129/webrev.10/benchmarks/results_win.txt 
>>
>> Summary:
>>   OGL-base-nvidia-windows:
>>     Number of tests:  40
>>     Overall average:  1538.6158105111376
>>     Best spread:      0.26% variance
>>     Worst spread:     51.66% variance
>>     (Basis for results comparison)
>>
>>   D3D-base-nvidia-windows:
>>     Number of tests:  40
>>     Overall average:  25477.2292224911
>>     Best spread:      0.03% variance
>>     Worst spread:     308.77% variance
>>     Comparison to basis:
>>       Best result:      11192.65% of basis
>>       Worst result:     9.13% of basis
>>       Number of wins:   28
>>       Number of ties:   0
>>       Number of losses: 12
>>
>>   OGL-fix-nvidia-windows:
>>     Number of tests:  40
>>     Overall average:  125053.84134106003
>>     Best spread:      0.08% variance
>>     Worst spread:     11.96% variance
>>     Comparison to basis:
>>       Best result:      12631.78% of basis
>>       Worst result:     84.45% of basis
>>       Number of wins:   33
>>       Number of ties:   6
>>       Number of losses: 1
>> ==========================================================
>> OSX 10.8.5, macbook pro retina, nvidia GeForce GT 650M 1024 MB
>> http://cr.openjdk.java.net/~serb/8041129/webrev.10/benchmarks/results_osx_nvidia.txt 
>>
>> Summary:
>>   OGL-base-nvidia-osx:
>>     Number of tests:  20
>>     Overall average:  714.8688065382015
>>     Best spread:      0.16% variance
>>     Worst spread:     2.12% variance
>>     (Basis for results comparison)
>>
>>   OGL-fix-nvidia-osx:
>>     Number of tests:  20
>>     Overall average:  10497.046970040716
>>     Best spread:      0.11% variance
>>     Worst spread:     5.55% variance
>>     Comparison to basis:
>>       Best result:      4479.08% of basis
>>       Worst result:     172.49% of basis
>>       Number of wins:   20
>>       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.10/benchmarks/results_osx_intel.txt 
>>
>> Summary:
>>   OGL-base-intel-osx:
>>     Number of tests:  20
>>     Overall average:  3912.1181498636274
>>     Best spread:      0.25% variance
>>     Worst spread:     22.52% variance
>>     (Basis for results comparison)
>>
>>   OGL-fix-intel-osx:
>>     Number of tests:  20
>>     Overall average:  9647.033915964947
>>     Best spread:      0.2% variance
>>     Worst spread:     23.32% variance
>>     Comparison to basis:
>>       Best result:      457.06% of basis
>>       Worst result:     104.3% of basis
>>       Number of wins:   20
>>       Number of ties:   0
>>       Number of losses: 0
>>
>
>


-- 
Best regards, Sergey.




More information about the 2d-dev mailing list