[11] JDK-8204621: Upgrade MarlinFX to 0.9.2
Kevin Rushforth
kevin.rushforth at oracle.com
Fri Jun 29 18:25:40 UTC 2018
One more thing about the test. All of the OpenJFX unit tests should have
GPL v2 + Classpath Exception (this differs from the JDK).
-- Kevin
On 6/29/2018 10:23 AM, Kevin Rushforth wrote:
>
> I'll plan to review the code today if possible. This will need one
> more reviewer, so maybe Phil can also review it, since he reviewed the
> Java2D patch?
>
> As for my comments on the test:
>
>> Finally I think this test should be manually run only if Marlin
>> renderer is modified.
>> How to do that ? use @Ignore or specific tags ?
>
> As a slight variation of this: How about running a small number (say,
> 200 or 250) by default, but adding a flag to run more? Alternatively,
> you could use a flag to enable it, but since you would need to do
> something extra (provide a flag or modify the test) to run it, we
> might as well get at least some testing all the time. Unless you
> really think there is no value in doing this.
>
>> I deliberately set all these Marlin clip (runtime + always
>> subdivider) / curve quality settings (quads / cubics thresholds) to
>> be sure of the concrete Marlin setup as quality thresholds are
>> sensitive to such values.
>
> As a best practice, tests should generally be run using the same
> settings as are used in production. Other than to verify how it
> behaves when you change these settings, I don't see the value in
> testing the system running in a mode that no application will ever
> see. I may be missing some point here.
>
> -- Kevin
>
>
> On 6/25/2018 9:01 AM, Laurent Bourgès wrote:
>> Kevin,
>>
>> Here are my comments below:
>>
>> 2018-06-16 1:47 GMT+02:00 Kevin Rushforth <kevin.rushforth at oracle.com
>> <mailto:kevin.rushforth at oracle.com>>:
>>
>> I tested this on all three platforms and the updated rasterizer
>> looks good.
>>
>> I spot checked the code changes, but didn't get time to do a
>> complete review yet. I was mostly looking for diffs between the
>> Java2D version which was already reviewed, and this one.
>>
>> I do have a couple comments on the new ClipShapeTest (which looks
>> like a nice accuracy test, btw).
>>
>> 1. The test runs for way too long (about 20x too long) to include
>> in our normal test runs. By default the entire class file (all
>> three tests) needs to take < 5 minutes and 2 minutes would be
>> better. I measured the time on 4 machines that I have and found
>> that if you cut the number of iterations down from 5000 to 250 it
>> will be just about the right run time. Then you can set the
>> timeout to 120 seconds (the slowest test on the slowest of my
>> machines took about 48 seconds, so a 2 minute timeout should be
>> plenty).
>>
>>
>> I agree this test is very long but it is the only mean I found to
>> test all possible stroke combinations and test enough shapes (5000)
>> to detect bugs.
>> I wondered if using mask directly (via ShapeUtils.getMaskData())
>> would become faster but it will never run below the 2 minutes
>> threshold in total.
>>
>> Finally I think this test should be manually run only if Marlin
>> renderer is modified.
>> How to do that ? use @Ignore or specific tags ?
>>
>>
>> 2. Can you explain the reason for setting the following?
>>
>> 206 // disable static clipping setting:
>> 207 System.setProperty("prism.marlin.clip", "false");
>> 208
>> System.setProperty("prism.marlin.clip.runtime.enable", "true");
>> 209
>> 210 // enable subdivider:
>> 211 System.setProperty("prism.marlin.clip.subdivider",
>> "true");
>> 212
>> 213 // disable min length check: always subdivide curves
>> at clip edges
>> 214 System.setProperty("prism.marlin.clip.subdivider.minLength",
>> "-1");
>> 215
>> 216 // If any curve, increase curve accuracy:
>> 217 // curve length max error:
>> 218 System.setProperty("prism.marlin.curve_len_err", "1e-4");
>> 219
>> 220 // cubic min/max error:
>> 221 System.setProperty("prism.marlin.cubic_dec_d2",
>> "1e-3");
>> 222 System.setProperty("prism.marlin.cubic_inc_d1",
>> "1e-4"); // or disabled ~ 1e-6
>> 223
>> 224 // quad max error:
>> 225 System.setProperty("prism.marlin.quad_dec_d2", "5e-4");
>>
>> It seems better to test with the default parameters (i.e., it
>> makes a better regression test that way).
>>
>>
>> I deliberately set all these Marlin clip (runtime + always
>> subdivider) / curve quality settings (quads / cubics thresholds) to
>> be sure of the concrete Marlin setup as quality thresholds are
>> sensitive to such values.
>>
>> The ClipShapeTest is dedicated to test the clipper (+ subdivider)
>> part of the Marlin renderer.
>>
>>
>>
>> 3. Related to that, I think you should eliminate the following (I
>> don't recommend running functional tests with this set), although
>> since you don't do any animation, it probably doesn't matter.
>>
>> 227 System.setProperty("javafx.animation.fullspeed",
>> "true"); // full speed
>>
>>
>> I will remove it and see if the overall test is not slower.
>> Is Platform.runLater() impacted by such setting (latency of FX thread
>> -> Prism rendering thread ?) ?
>>
>> Laurent
>>
>>
>>
>> On 6/8/2018 7:28 AM, Laurent Bourgès wrote:
>>
>> Hi,
>>
>> Please review this large patch to upgrade MarlinFX to 0.9.2 in
>> OpenJFX11:
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8198885
>> <https://bugs.openjdk.java.net/browse/JDK-8198885>
>> webrev:
>> http://cr.openjdk.java.net/~lbourges/marlinFX/marlinFX-092.0/
>> <http://cr.openjdk.java.net/%7Elbourges/marlinFX/marlinFX-092.0/>
>> <http://cr.openjdk.java.net/%7Elbourges/marlinFX/marlinFX-092.0/
>> <http://cr.openjdk.java.net/%7Elbourges/marlinFX/marlinFX-092.0/>>
>> PR: https://github.com/javafxports/openjdk-jfx/pull/96
>> <https://github.com/javafxports/openjdk-jfx/pull/96> (CI OK)
>>
>> This patch is almost identical to Marlin(2D) patch, see:
>> https://bugs.openjdk.java.net/browse/JDK-8198885
>> <https://bugs.openjdk.java.net/browse/JDK-8198885>
>>
>> I added the ClipShapeTest (ported to jfx) that compares shape
>> clipping (within threshold) and it works (within large
>> timeouts):
>> gradle -PFULL_TEST=true :system:test --tests
>> test.com.sun.marlin.ClipShapeTest
>>
>> Regards,
>> Laurent
>>
>>
>>
>
More information about the openjfx-dev
mailing list