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.

Reply via email to