RFR: 8296589: PixelBufferDrawTest fails on some systems
Lukasz Kostyra
duke at openjdk.org
Thu Nov 10 12:49:39 UTC 2022
On Wed, 9 Nov 2022 18:30:26 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> tests/system/src/test/java/test/robot/javafx/scene/PixelBufferDrawTest.java line 189:
>>
>>> 187:
>>> 188: private void compareColor(Color exp, Color act) {
>>> 189: Assert.assertEquals(exp.getRed(), act.getRed(), 0.01);
>>
>> I am curious: what is the source of these differences?
>> Is it color model (and could we explicitly set the CM?)
>> Or is it differences in anti-aliasing or some such?
>
> It's a good question, but I note that any number of things can cause such differences on some systems. As I mentioned in the bug report, most of our robot-based tests use `0.07` as a tolerance value. The idea being that these tests aren't trying to check whether the rendering is pixel perfect or that the shaders, etc., produce an exact value. They are just checking whether the pixel is red versus green versus orange, etc.
I decided to do a bit more digging and I found out that those tests pass with original 0.005 tolerance if you plug in an external display and make it your main. In short:
* Plugged in a 1080p display via HDMI port
* Made the 1080p display the main display
* To be sure tests will execute on it I mirrored 1080p display contents onto built-in Retina XDR display (I couldn't find an option to disable it).
As a result, these tests started to pass again. Hard to say why exactly that happens, could be HiDPI-related, could be no HDR on my 1080p display, could be something else... Regardless, higher tolerance in these tests should still be okay as Kevin mentioned.
-------------
PR: https://git.openjdk.org/jfx/pull/944
More information about the openjfx-dev
mailing list