[Rev 02] RFR: 8238954: Improve performance of tiled snapshot rendering
Ambarish Rapte
arapte at openjdk.java.net
Tue Mar 17 11:04:08 UTC 2020
On Sat, 14 Mar 2020 13:25:00 GMT, Frederic Thevenet <github.com+7450507+fthevenet at openjdk.org> wrote:
>> 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.
>
> Functionally, both side of the condition actually do the exact same thing, but the side effects of which dimension is
> processed in the inner loop sometime have measurable consequences in terms of performances; I've added the following
> comment to the code to better explain this:
> // In order to minimize the number of time we have to resize the underlying
> // surface for capturing a tile, choose a dimension that has an exact divider
> // (if any) to be processed in the inner most loop.
> // E.g. looping on width then height in the example bellow requires four
> // surface resizing, whereas the opposite requires only two:
> //
> // for (w;;) for (h;;)
> // for(h;;) for(w;;)
> // ----------------- -----------------
> // | | | | | |
> // | 1 | 3 | | 1 | 2 |
> // h | | | h | | |
> // ----------------- -----------------
> // | 2 | 4 | | 3 | 4 |
> // ----------------- -----------------
> // w w
Than for the additional comment, this will reduce the number of textures created by below call in `renderTile()`
`com.sun.prism.RTTexture rt = tileImg.getRT(w, h, rf);`
-------------
PR: https://git.openjdk.java.net/jfx/pull/112
More information about the openjfx-dev
mailing list