On Mon, 29 Jun 2020 16:16:58 GMT, Frederic Thevenet <github.com+7450507+ftheve...@openjdk.org> wrote:
>> Thanks for your review. >> >> I don't have access to a Mac so I can't check that directly. >> The tests pass on both my Windows 10 and Ubuntu 20.04 environments and the >> stack isn't very helpful (it simply >> indicates the renderImage method returned null). >> Running the test with the unpatched version of the >> `QuantumToolkit::renderToImage` method would typically result in >> such a stack, but there are many other possible reasons. >> With regard to the choice of random noise for the test image, my idea was to >> be able to catch any misalignment caused >> by tiling in the final snapshot: using a single color or a simple pattern >> would not necessarily help catching such >> errors. Using a complex image could do the trick, and avoid the broken >> aspect you mentioned, but it would need to be >> very large (>4096x4096), and I was not sure it would be wise to add such a >> large binary resource to the repo. So I >> settled for random noise, since it was the simplest way to generate an image >> which guaranties any misalignment would be >> caught by comparing pixels 1 to 1. > > I have changed the test setup to fill up the scene with a gradient instead of > random noise; it should be as able to > catch misalignment, while not looking like something's gone horribly wrong. Also, while running the tests again on a ubuntu 20.04 VM, I encountered 2 occurences where one of the tests failed, out of ~8 runs in total. In one case, the error where similar to yours: > Task :systemTests:test test.javafx.scene.Snapshot2Test > testSnapshot2x2TilesSameSizeImm[3] FAILED java.lang.IllegalArgumentException: Unrecognized image loader: null at javafx.graphics/javafx.scene.image.WritableImage.loadTkImage(WritableImage.java:278) at javafx.graphics/javafx.scene.image.WritableImage$1.loadTkImage(WritableImage.java:53) at javafx.graphics/javafx.scene.Scene.doSnapshot(Scene.java:1342) at javafx.graphics/javafx.scene.Node.doSnapshot(Node.java:2136) at javafx.graphics/javafx.scene.Node.snapshot(Node.java:2214) at test.javafx.scene.Snapshot2Test.lambda$doTestTiledSnapshotImm$12(Snapshot2Test.java:375) 148 tests completed, 1 failed While in the other, it pointed to an Out Of Memory Error: Task :systemTests:test test.javafx.scene.Snapshot2Test > testSnapshot2x2TilesSameHeightDefer[3] FAILED java.lang.OutOfMemoryError: Java heap space at java.base/java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:63) at java.base/java.nio.ByteBuffer.allocate(ByteBuffer.java:351) at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.createPlatformImage(QuantumToolkit.java:1426) at javafx.graphics/javafx.scene.image.Image.<init>(Image.java:740) at javafx.graphics/javafx.scene.image.WritableImage.<init>(WritableImage.java:77) at test.javafx.scene.Snapshot2Test.doTestTiledSnapshotDefer(Snapshot2Test.java:377) at test.javafx.scene.Snapshot2Test.testSnapshot2x2TilesSameHeightDefer(Snapshot2Test.java:489) 148 tests completed, 1 failed Again, in my environment, it only failed one test, and not all the time, but this could be the same root cause. Two ways we could find out would be by either increasing the max heap size for the test runner or use a smaller image and force the prism.maxTextureSize property to something less than 4096 to trigger tiling anyway. Unfortunately, I could not find out how to achieve either of these (simply passing the properties to the JVM running the Gradle wrapper seem to have no effect). ------------- PR: https://git.openjdk.java.net/jfx/pull/112