On Mon, 9 Mar 2020 10:01:53 GMT, Frederic Thevenet
<[email protected]> wrote:
>> Issue JDK-8088198, where an exception would be thrown when trying to capture
>> a snapshot whose final dimensions would be
>> larger than the running platform's maximum supported texture size, was
>> addressed in openjfx14. The fix, based around
>> the idea of capturing as many tiles of the maximum possible size and
>> re-compositing the final snapshot out of these, is
>> currently only attempted after the original, non-tiled, strategy has already
>> failed. This was decided to avoid any risk
>> of regressions, either in terms of performances and correctness, while still
>> offering some relief to the original
>> issue. This follow-on issue aims to propose a fix to the original issue,
>> that is able to correctly decide on the best
>> snapshot strategy (tiled or not) to adopt before applying it and ensure best
>> performances possible when tiling is
>> necessary while still introducing no regressions compared to the original
>> solution.
>
> Frederic Thevenet has updated the pull request incrementally with one
> additional commit since the last revision:
>
> Avoid useless width and height calculation
The change seems good to me. Suggested few minor corrections and a query.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 1493:
> 1492: }
> 1493: else {
> 1494: rt.readPixels(buffer, rt.getContentX(),
> rt.getContentY(), w, h);
Please correct the `if` `else` formatting here and other places.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 1527:
> 1526: private int computeOptimumTileSize(int size, int maxSize,
> AtomicBoolean isDivExact) {
> 1527: // This methods attempts to find the smallest integer
> divider for the provided `size`
> 1528: // while the result of the division is less than
> `maxSize`.
This **method** attempts to....
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 1575:
> 1574: }
> 1575: // Find out it is is possible to divide up the
> image in tiles of the same size
> 1576: AtomicBoolean exactWidthDivFound = new
> AtomicBoolean(false);
Find out **if it** is possible...
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 1600:
> 1599: }
> 1600: }
> 1601: }
The `if (exactHeightDivFound.get())` and `else` block here look effectively
same. Could you please take a re-look or
explain what am I missing here.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 1576:
> 1575: // Find out it is is possible to divide up the
> image in tiles of the same size
> 1576: AtomicBoolean exactWidthDivFound = new
> AtomicBoolean(false);
> 1577: int tileWidth = computeOptimumTileSize(w,
> maxTextureSize, exactWidthDivFound);
`exactWidthDivFound` is unused, may be can skip creating a named variable and
just pass a unnamed `AtomicBoolean` in
next call to `computeOptimumTileSize`
-------------
Changes requested by arapte (Reviewer).
PR: https://git.openjdk.java.net/jfx/pull/112