On Mon, 7 Jun 2021 12:03:35 GMT, Ajit Ghaisas <aghai...@openjdk.org> wrote:

>> This PR fixes an issue exclusively seen on Apple M1 systems when SwingSet2 
>> demo is run with uiScale=1.0.
>> 
>> **Issue :**
>> SwingSet2 Demo - As reported in JBS description
>> J2DDemo - As reported in a comment on JBS
>> 
>> **Root Cause :** 
>> DrawPixel path is used only with uiScale=1.0. 
>> MTLPrimitiveTypePoint is used to draw a pixel while encoding a render 
>> command.
>> As mentioned in the documentation -
>> https://developer.apple.com/documentation/metal/mtlprimitivetype/mtlprimitivetypepoint?language=objc
>> 
>> "The vertex shader must provide [[point_size]], or the point size is 
>> undefined."
>> 
>> In our shader functions, we do not define this point size. It is harmless on 
>> x86_64 based mac systems, but causes visual artifacts on M1 mac systems.
>> 
>> **Solution :**
>>  Explicitly define point size in shader functions that draw 
>> MTLPrimitiveTypePoint.
>
> Ajit Ghaisas has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   add automated test

test/jdk/java/awt/Graphics/DrawOvalTest.java line 54:

> 52:         render(vi.createGraphics());
> 53: 
> 54:         BufferedImage snapshot = vi.getSnapshot();

I guess we need to obtain this snapshot in a do-while loop to check for 
volatile image contents is not lost similar to 

do {
vi.validate(gc);
render();
vi.getShapshot();
} while(vi.getContentsLost())

-------------

PR: https://git.openjdk.java.net/jdk/pull/4356

Reply via email to