Hello Pankaj

I imported your latest changes and checked the build with the test file. 
The test now passes with uiScale mentioned in the test case.

The changes look good.

Thanks
Have a good day

Prahalad

-----Original Message-----
From: Sergey Bylokhov 
Sent: Saturday, November 18, 2017 3:46 AM
To: Pankaj Bansal; Prahalad Kumar Narayanan; awt-...@openjdk.java.net; 
2d-dev@openjdk.java.net; Philip Race
Subject: Re: [OpenJDK 2D-Dev] <AWT Dev> [10] Review Request: JDK-8159142 : 
Visible artifacts in sun/java2d/SunGraphics2D/DrawImageBilinear.java

Looks fine. Thank you.

On 16/11/2017 01:53, Pankaj Bansal wrote:
> Hi Sergey,
> 
> As discussed, I have created a new issue for test failure at HiDPI 
> scale of 1.75 https://bugs.openjdk.java.net/browse/JDK-8191406
> I have also mentioned that we need to write a new test case also for this.
> <<test fails at 1.75 scale value both before and after the fix on GDI, OpenGL 
> and D3D pipelines with exceptions similar to this.
> <<Failed. Execution failed: `main' threw exception: 
> java.lang.RuntimeException: Test failed at x=10 y=10 
> (expected=0xffff0000 actual=0xffff6060)
> 
> 
> As discussed I think we should keep this now, so that the test passes 
> irrespective of default uiScale of system. We will update this later when the 
> issue at HiDPI 1.75 is fixed. I have updated the test to run with all GDI, 
> OpenGL and D3D, so we can catch any artifacts if any are there. Please let me 
> know if this looks ok.
> Webrev: http://cr.openjdk.java.net/~pbansal/8159142/webrev.04/
> <<I have only one comment:
> <<@run main/othervm DrawImageBilinear
> <<Should we preserve this tag and run the test in the common-default config?
> 
> 
> Regards,
> Pankaj Bansal
> 
> -----Original Message-----
> From: Pankaj Bansal
> Sent: Tuesday, November 14, 2017 6:15 PM
> To: Prahalad Kumar Narayanan; Sergey Bylokhov; 
> awt-...@openjdk.java.net; 2d-dev@openjdk.java.net; Philip Race
> Subject: RE: [OpenJDK 2D-Dev] <AWT Dev> [10] Review Request: 
> JDK-8159142 : Visible artifacts in 
> sun/java2d/SunGraphics2D/DrawImageBilinear.java
> 
> Hi Prahalad,
> 
> Thanks for the review.
> 
> Yes, the test fails at 1.75 scale value both before and after the fix on GDI, 
> OpenGL and D3D pipelines with exceptions similar to this.
> Failed. Execution failed: `main' threw exception: 
> java.lang.RuntimeException: Test failed at x=10 y=10 
> (expected=0xffff0000 actual=0xffff6060)
>   
> In this bug, I was working to remove the artifact in the image as shown in 
> the image attached in the JBS. The issue is reproducible at scale 2.5 and 
> similar on only OpenGL pipeline. I mostly worked to remove the artifact at 
> mentioned scale. The proposed fix removes that artifact from the image.
> 
> I am not very sure if it’s a Robot issue or not, but I have some reasons to 
> believe that. I will work on it and let you know.
> 
> Regards,
> Pankaj Bansal
> 
> -----Original Message-----
> From: Prahalad Kumar Narayanan
> Sent: Tuesday, November 14, 2017 3:15 PM
> To: Sergey Bylokhov; Pankaj Bansal; awt-...@openjdk.java.net; 
> 2d-dev@openjdk.java.net; Philip Race
> Subject: RE: [OpenJDK 2D-Dev] <AWT Dev> [10] Review Request: 
> JDK-8159142 : Visible artifacts in 
> sun/java2d/SunGraphics2D/DrawImageBilinear.java
> 
> Hello Pankaj
> 
> Good day to you.
> 
> I imported your changes and checked the build with the JTreg test file.
>      . I tried random uiScales using -Dsun.java2d.uiScale and by adjusting 
> DPI scale on Windows 10.
>            . The test failed at uiScale set at 1.75 on all the pipelines- 
> D3D, OpenGL and GDI.
> 
>      . As you explained offline, this could be due to Robot running on HiDPI 
> tests. Kindly check this out.
>            . Sergey's suggestion to include "@run main/othervm 
> DrawImageBilinear" will enable the test-case use the DPI scale as available 
> on host machine.
>            . Hence any uiScale (1.75) is possible & makes test vulnerable for 
> failures.
> 
> I 've not reviewed the code yet. I 'm working on a similar D3D bug and will 
> need some time to review code.
> If other reviewers approve of the change, kindly proceed with the check-in.
> 
> Thank you
> Have a good day
> 
> Prahalad
> 
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Tuesday, November 14, 2017 3:57 AM
> To: Pankaj Bansal; awt-...@openjdk.java.net; 2d-dev@openjdk.java.net; 
> Philip Race
> Subject: Re: [OpenJDK 2D-Dev] <AWT Dev> [10] Review Request: 
> JDK-8159142 : Visible artifacts in 
> sun/java2d/SunGraphics2D/DrawImageBilinear.java
> 
> I have only one comment:
> @run main/othervm DrawImageBilinear
> Should we preserve this tag and run the test in the common-default config?
> 
> On 09/11/2017 08:43, Pankaj Bansal wrote:
>> Hi Sergey,
>>
>> Do these changes look good? Please give your feedback.
>>
>> Regards,
>> Pankaj Bansal
>>
>> -----Original Message-----
>> From: Pankaj Bansal
>> Sent: Wednesday, November 8, 2017 8:09 PM
>> To: Sergey Bylokhov; awt-...@openjdk.java.net; 
>> 2d-dev@openjdk.java.net; Philip Race
>> Subject: RE: <AWT Dev> [10] Review Request: JDK-8159142 : Visible 
>> artifacts in sun/java2d/SunGraphics2D/DrawImageBilinear.java
>>
>> + 2d-dev, Phil.
>>
>> Regards,
>> Pankaj Bansal
>>
>> -----Original Message-----
>> From: Pankaj Bansal
>> Sent: Friday, November 3, 2017 3:11 PM
>> To: Sergey Bylokhov; awt-...@openjdk.java.net
>> Subject: RE: <AWT Dev> [10] Review Request: JDK-8159142 : Visible 
>> artifacts in sun/java2d/SunGraphics2D/DrawImageBilinear.java
>>
>> Hi Sergey,
>>
>>
>> XRSurfaceData, GLXSurfaceData:        On linux, only integer scale  is 
>> supported. If we give non-integer, the the uiScale is truncated to integer 
>> and used. So the ceil or round does not matter. In both XRSurfaceData and 
>> GLXSurfaceData, ceil function or direct multiplication is used arbitrarily 
>> at different places. So, we can make changes for making things more 
>> consistent, but it is not necessary as of now.
>> PS: There are artifacts in same test case on Linux and there is a separate 
>> bug https://bugs.openjdk.java.net/browse/JDK-8189957. But these don't seem 
>> to be result of this precision error. I will look into this bug later.
>>
>> WGLSurfaceData:     In openGL, ceil function is used in WGLSurfaceData, so 
>> it will create WGLOffScreenSurfaceData and in turn create native resource. 
>> Then in DrawImage class, the clipRound is used, and these sizes are sent to 
>> native size. Then in OGLBlitTextureToSurface function inside OGLBlitLoops 
>> file, the texture coordinates are calculated by dividing the sizes sent from 
>> Java side by the native resource size. So the texture coordinates are wrong. 
>> For instance, in DrawImageBilinear, the size is 5x5 and uiScale is 2.5, so 
>> the native resource is of size, 13x13. But the dimensions sent to native are 
>> 12x12, so the textures are (0,0) and (12/13, 12/13). So artifacts in final 
>> image.
>>
>> D3DSurfaceData:     In D3D, everything is similar to OpenGL, but in 
>> D3DBlitTextureToSurface function inside D3DBlitLoops file,  the calculated 
>> texture coordinates are sent to D3DDrawTextureWithHint and then data is 
>> copied from texture to surface. Here if the native resource size and 
>> dimensions sent from Java are not same, the data is copied in parts. This is 
>> somehow handling the wrong texture coordinates. So this test does not 
>> produce any artifacts in D3D pipeline. But it can in some other case. So 
>> this needs to be fixed.
>>
>> GDIWindowSurfacedata: Here the volatile image creates a BufImageSurfaceData 
>> as backing resource using the ceil function and while copying from 
>> BugImageSurfaceData to a GDIWindowSurface, the 
>> Java_sun_java2d_loops_TransformHelper_Transform in native side is able to 
>> handle the difference in sizes. So the artifacts are not visible. But I 
>> think this should be fixed. So should make changes to getBackupImage 
>> function in SunVolatileImage to use clipRound instead of ceil.
>>
>> BufImageSurfaceData : It uses the image raster size to create the native 
>> resource.  The raster size is already scaled according to the uiScale. So no 
>> need to change this.
>>
>> So in a nutshell,
>> I feel we may not change the code in XRSurfaceData, GLXSurfaceData as linux 
>> only support integer scaling. We can do it later if required.
>> We should change code for D3DSurfaceData, GDIWindowSurfacedata and 
>> WGLSurfacedata as it may cause artifacts. I have updated the webrev for the 
>> same. Please review.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~pbansal/8159142/webrev.01/
>>
>>
>> Regards,
>> Pankaj Bansal
>>
>>
>> -----Original Message-----
>> From: Sergey Bylokhov
>> Sent: Wednesday, November 1, 2017 11:46 PM
>> To: Pankaj Bansal; awt-...@openjdk.java.net
>> Subject: Re: <AWT Dev> [10] Review Request: JDK-8159142 : Visible 
>> artifacts in sun/java2d/SunGraphics2D/DrawImageBilinear.java
>>
>> Hi, Pankaj.
>> D3DSurfaceData, XRSurfaceData and probably other SurfaceData use simple 
>> multiplication or ceil(). Should we update them also? and the test to catch 
>> the errors there as well.
>>
>> On 30/10/2017 03:39, Pankaj Bansal wrote:
>>> Hi All,
>>>
>>> Please review the fix for JDK 10.
>>>
>>> Bug:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8159142
>>>
>>> Webrev:
>>>
>>> http://cr.openjdk.java.net/~pbansal/8159142/webrev.00/
>>>
>>> Issue:
>>>
>>> The test runs with D3D and OpenGL both. The issue is with the OpenGL 
>>> run as there aee some visual artifacts in image when the HiDPI scale 
>>> is set to non-integer value like 2.5.
>>>
>>> Fix:
>>>
>>> The issue is due to precision error. In WGLSurfaceData.java, the 
>>> width and height is calculated by multiplying the width and height with 
>>> scale.
>>> But the ceil function was being used instead of round. It should be 
>>> using round as at most of the places, the round function is being used.
>>>
>>> Also changed the test to run at uiScale of 2.5 to catch any further errors.
>>>
>>> Regards,
>>>
>>> Pankaj Bansal
>>>
>>
>>
>> --
>> Best regards, Sergey.
>>
> 
> 
> --
> Best regards, Sergey.
> 


--
Best regards, Sergey.

Reply via email to