Backport proposal of the Marlin renderer in OpenJDK8

Laurent Bourgès bourges.laurent at gmail.com
Fri Oct 11 22:09:53 UTC 2019


Hi,

Here are some news:

I created a small repository to store zulu patches from Andrew Brygin,
original jdk/jdk extracted patches and their corresponding jdk8 patches
(unshuffled):
https://github.com/bourgesl/marlin-jdk8u

I am still reviewing patches m01 to m11 are OK = zulu patches are OK by me.

See https://github.com/bourgesl/marlin-jdk8u/blob/master/marlin-review.txt

I will go on and officially share all this work once done.

PS: I applied locally zulu8 patches on my local jdk8u/jdk repository and it
works well: Marlin 0.9.1.1 in action !

Cheers,
Laurent

Le mar. 1 oct. 2019 à 23:06, Laurent Bourgès <bourges.laurent at gmail.com> a
écrit :

> Hi all,
>
> FYI I started working on the Marlin renderer backport for JDK8u:
> - consolidate the azul zulu patch list with my own bug list (hg log + JBS)
> - retrieve all corresponding patches from jdk/client repository
> - I am reviewing patches (original vs azul) now
>
> I will try automating the integration locally (sed + hg import locally +
> build) to let me test the all process.
>
> Here is my patch list:
> ------------------------------------------------
> | Marlin renderer patches history (jdk/client) |
> ------------------------------------------------
>
> * 2015
> 34419:14108cfd0823 m01.8143849.patch 8143849: Integrate Marlin renderer
> per JEP 265
> 35979:4462913d471a NEW m01b.8149896.patch 8149896: Remove unnecessary
> values in FloatConsts and DoubleConsts => Merge with m01.8143849.patch
>
> 34689:4b5bf9f960c8 m02.8145055.patch 8145055: Marlin renderer causes
> unaligned write accesses
> 34801:a7740dae1f3a m03.8144630.patch 8144630: Use PrivilegedAction to
> create Thread in Marlin RendererStats
> 34814:09435f7f0013 m04.8144446.patch 8144446: Automate the Marlin crash
> test
> 34815:81e87daa9876 m05.8144445.patch 8144445: Maximum size checking in
> Marlin ArrayCache utility methods is not optimal
> 34422:438c2710ab20 m06.8144526.patch 8144526: Remove Marlin logging use of
> deleted internal API
> 34816:5ff696b1bbac m07.8144654.patch 8144654: Improve Marlin logging
>
> * 2016
> 35445:86db4c432b19 SKIP 8147443: Use the Common Cleaner in Marlin
> OffHeapArray
> 35645:a96d68e3fda2 m08.8144718.patch 8144718: Pisces / Marlin Strokers may
> generate invalid curves with huge coordinates and round joins
> 35665:e90002447fd5 SKIP 8146076: Fail of
> sun/java2d/marlin/CeilAndFloorTests.java with Jigsaw
> 36446:c06d6e681158 m09.8149338.patch 8149338: JVM Crash caused by Marlin
> renderer not handling NaN coordinates
> 36458:25786a73a5fc m10.8148886.patch 8148886: SEGV in
> sun.java2d.marlin.Renderer._endRendering
> 36902:bb30d89aa00e m11.8144938.patch 8144938: Handle properly coordinate
> overflow in Marlin Renderer
> 39519:21bfc4452441 m12.8159093.patch 8159093: Fix coding conventions in
> Marlin renderer
> 40421:d5ee65e2b0fb m13.8159638.patch 8159638: Improve array caches and
> renderer stats in Marlin renderer
>
> * 2017
> 47126:188ef162f019 m14.8180055.patch 8180055: Upgrade the Marlin renderer
> in Java2D
> CHECK azul m20.8180055.patch
> 48258:fd7fbc929001 m15.8191814.patch 8191814: Marlin rasterizer spends
> time computing geometry for stroked segments that do not intersect the clip
>
> * 2018
> 49318:1ea202af7a97 m16.8198885.patch 8198885: upgrade Marlin (java2d) to
> 0.9.1
> 49524:a38e7ef21cc0 m17.8200526.patch 8200526: Test
> sun/java2d/marlin/ClipShapeTest.java times out
> 50019:793e481c7641 m18.8202580.patch 8202580: Dashed BasicStroke randomly
> painted incorrectly, may freeze application
> 51887:4ec74929fbfe m19.8210335.patch 8210335: Clipping problems with
> complex affine transforms: negative scaling factors or small scaling factors
>
> 2019:
> 55816:13178f7e75d5 NEW m20.8228711.patch 8228711: Path rendered
> incorrectly when it goes outside the clipping region
> 56131:7f55aad34ac4 NEW m21.8230728.patch 8230728: Thin stroked shapes are
> not rendered if affine transform has flip bit
>
> Laurent
>
> Le ven. 20 sept. 2019 à 10:41, Andrew Brygin <abrygin at azul.com> a écrit :
>
>> Hi Laurent,
>>
>> > On Sep 19, 2019, at 11:09 PM, Laurent Bourgès <
>> bourges.laurent at gmail.com> wrote:
>> >
>> > Hi Andrew B,
>> >
>> > It is a wonderful work, thanks !
>> >
>> > I will carefully check the patchs, review changes and identify which
>> are missing (most recent Marlin changes in 2019): it will take some time.
>> >
>> > I will also apply them and compare with my latest Marlin code…
>>
>> Thanks, it will be quite useful.
>>
>> >
>> > JDK8 maintainers (Andrew JH) , what do you think of this workflow ?
>> >
>>
>> > On Sep 17, 2019, at 9:52 PM, Andrew John Hughes <gnu.andrew at redhat.com>
>> wrote:
>> >
>> >Is this Zulu public? Does it use OpenJDK bug IDs for the changesets?
>>
>> All Marlin-related changes in Zulu were made under OpenJDK bugIDs
>> (actually
>> all of them are just backports from jdk9 and jdk10).
>>
>> >
>> > As I said before, my preferred method is the backport of changesets
>> > corresponding to individual OpenJDK bug IDs, so we have a clear idea of
>> > what issues are now fixed in 8u.
>>
>> This approach seems to be absolutely reasonable.
>>
>> Thanks,
>> Andrew
>>
>> > Le jeu. 19 sept. 2019 à 21:17, Andrew Brygin <abrygin at azul.com> a
>> écrit :
>> > Hello Laurent,
>> >
>> >  I am sorry for the delay.
>> >
>> >  I have applied Marlin patches from Zulu 8 repo to jdk8u-dev,
>> >  and generated webrevs.
>> >
>> >  There are 20 patches related to Marlin integration:
>> >
>> > 01 8143849: Integrate Marlin renderer per JEP 265
>> > 02 8145055: Marlin renderer causes unaligned write accesses
>> > 03 8144630: Use PrivilegedAction to create Thread in Marlin
>> RendererStats
>> > 04 8144446: Automate the Marlin crash test
>> > 05 8144445: Maximum size checking in Marlin ArrayCache utility methods
>> is not optimal
>> > 06 8144526: Remove Marlin logging use of deleted internal API
>> > 07 8144654: Improve Marlin logging
>> > 08 8144718: Pisces / Marlin Strokers may generate invalid curves with
>> huge coordinates and round joins
>> > 09 8149338: JVM Crash caused by Marlin renderer not handling NaN
>> coordinates
>> > 10 8148886: SEGV in sun.java2d.marlin.Renderer._endRendering
>> > 11 8144938: Handle properly coordinate overflow in Marlin Renderer
>> > 12 8159093: Fix coding conventions in Marlin renderer
>> > 13 8159638: Improve array caches and renderer stats in Marlin renderer
>> > 14 8180055: Upgrade the Marlin renderer in Java2D
>> > 15 8191814: Marlin rasterizer spends time computing geometry for
>> stroked segments that do not intersect the clip
>> > 16 8198885: upgrade Marlin (java2d) to 0.9.1
>> > 17 8200526: Test sun/java2d/marlin/ClipShapeTest.java times out
>> > 18 8202580: Dashed BasicStroke randomly painted incorrectly, may freeze
>> application
>> > 19 8210335: Clipping problems with complex affine transforms: negative
>> scaling factors or small scaling factors
>> > 20 8180055: Upgrade the Marlin renderer in Java2D (update service list)
>> >
>> >  Webrevs are available here:
>> >
>> > http://cr.openjdk.java.net/~bae/marlin/webrevs/
>> >
>> >  Just in case, patches are available here, cleanly applicable to
>> >  current state of jdk8u-dev:
>> >
>> > http://cr.openjdk.java.net/~bae/marlin/
>> >
>> > Thanks,
>> > Andrew
>
>


More information about the jdk8u-dev mailing list