Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-08-08 Thread Laurent Bourgès
On Sat, 18 Jul 2020 14:57:08 GMT, Kevin Rushforth  wrote:

> This removes the obsolete OpenPiscesRasterizer (Java-based) and 
> NativePiscesRasterizer implementations. The Marlin
> rasterizer was added in FX 9 and was made the default in FX 10. Marlin both 
> outperforms Pisces and is more robust.
> There is no reason to keep the Pisces rasterizer(s) any more.  Note that the 
> SW pipeline still has a Pisces-based
> renderer for the actual rendering of primitives. This is separate from the 
> rasterizer and is not affected by this
> proposed fix.  I have tested this on Mac, Windows, and Linux.

Loiks good to me.

-

Marked as reviewed by lbourges (Reviewer).

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-20 Thread Kevin Rushforth
On Sun, 19 Jul 2020 09:35:15 GMT, Laurent Bourgès 
 wrote:

>> I think you are conflating the rasterization step with the rendering step. 
>> In Prism the rasterization mainly includes
>> clipping the shape and generating the mask data for the filled and/or 
>> stroked shape (the latter possibly being a wide
>> and/or dashed stroke). The rasterized shape is then sent to the Prism 
>> GraphicsPipeline for drawing into the render
>> target. This latter step is either done using shaders + D3D or OpenGL, or 
>> via the SW pipeline (or the J2D pipeline for
>> printing). In the case of the SW pipeline, the renderer is based on code 
>> that was originally derived from Pisces, but
>> it is distinct from the rasterization step that OpenPisces used to perform 
>> and Marlin now does perform. Take a look at
>> the [SW 
>> pipeline](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/prism/sw)
>> classes, the [Java
>> PiscesRendering](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/pisces)
>> classes, and the
>> [prism-sw](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/native-prism-sw)
>>  native code.
>
> @kevinrushforth I asked skara JBS to associate my github account with my 
> openjdk role...
> I will approve your PR once I have proper credentials.
> 
> Good job, 10k LOC removed.
> 
> I wonder if I should also deprecate the Float-precision Marlin renderer to 
> remove 10k lines too.
> The Double-precision Marlin renderer was enabled as the default renderer 
> since JDK10, so it is doing the job properly,
> no reason to have 2 variants anymore and it will ease the maintenance.
> Laurent

That's a good question about removing the single-precision float Marlin 
rasterizer. For desktop platforms, I see no
reason to keep it. Perhaps Johan could weigh in as to whether their might be 
value in keeping it for some embedded
platforms.

-

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-19 Thread Laurent Bourgès
On Sat, 18 Jul 2020 22:07:59 GMT, Kevin Rushforth  wrote:

>> That's the case, michael.
>> In SWContext, the Marlin renderer is called to rasterize any shape.
>> 
>> See 
>> https://github.com/openjdk/jfx/pull/268/files#diff-28f93b00dc9cba7197f0a6c2fef022ed
>
> I think you are conflating the rasterization step with the rendering step. In 
> Prism the rasterization mainly includes
> clipping the shape and generating the mask data for the filled and/or stroked 
> shape (the latter possibly being a wide
> and/or dashed stroke). The rasterized shape is then sent to the Prism 
> GraphicsPipeline for drawing into the render
> target. This latter step is either done using shaders + D3D or OpenGL, or via 
> the SW pipeline (or the J2D pipeline for
> printing). In the case of the SW pipeline, the renderer is based on code that 
> was originally derived from Pisces, but
> it is distinct from the rasterization step that OpenPisces used to perform 
> and Marlin now does perform. Take a look at
> the [SW 
> pipeline](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/prism/sw)
> classes, the [Java
> PiscesRendering](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/pisces)
> classes, and the
> [prism-sw](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/native-prism-sw)
>  native code.

@kevinrushforth I asked skara JBS to associate my github account with my 
openjdk role...
I will approve your PR once I have proper credentials.

Good job, 10k LOC removed.

I wonder if I should also deprecate the Float-precision Marlin renderer to 
remove 10k lines too.
The Double-precision Marlin renderer was enabled as the default renderer since 
JDK10, so it is doing the job properly,
no reason to have 2 variants anymore and it will ease the maintenance.

Laurent

-

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-19 Thread Laurent Bourgès
On Sat, 18 Jul 2020 16:11:38 GMT, Phil Race  wrote:

>> This removes the obsolete OpenPiscesRasterizer (Java-based) and 
>> NativePiscesRasterizer implementations. The Marlin
>> rasterizer was added in FX 9 and was made the default in FX 10. Marlin both 
>> outperforms Pisces and is more robust.
>> There is no reason to keep the Pisces rasterizer(s) any more.  Note that the 
>> SW pipeline still has a Pisces-based
>> renderer for the actual rendering of primitives. This is separate from the 
>> rasterizer and is not affected by this
>> proposed fix.  I have tested this on Mac, Windows, and Linux.
>
> Marked as reviewed by prr (Reviewer).

That's the case, michael.
In SWContext, the Marlin renderer is called to rasterize any shape.

See 
https://github.com/openjdk/jfx/pull/268/files#diff-28f93b00dc9cba7197f0a6c2fef022ed

-

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-18 Thread Kevin Rushforth
On Sat, 18 Jul 2020 16:11:38 GMT, Phil Race  wrote:

>> This removes the obsolete OpenPiscesRasterizer (Java-based) and 
>> NativePiscesRasterizer implementations. The Marlin
>> rasterizer was added in FX 9 and was made the default in FX 10. Marlin both 
>> outperforms Pisces and is more robust.
>> There is no reason to keep the Pisces rasterizer(s) any more.  Note that the 
>> SW pipeline still has a Pisces-based
>> renderer for the actual rendering of primitives. This is separate from the 
>> rasterizer and is not affected by this
>> proposed fix.  I have tested this on Mac, Windows, and Linux.
>
> Marked as reviewed by prr (Reviewer).

I think you are conflating the rasterization step with the rendering step. In 
Prism the rasterization mainly includes
clipping the shape and generating the mask data for the filled and/or stroked 
shape (the latter possibly being a wide
and/or dashed stroke). The rasterized shape is then sent to the Prism 
GraphicsPipeline for drawing into the render
target. This latter step is either done using shaders + D3D or OpenGL, or via 
the SW pipeline (or the J2D pipeline for
printing). In the case of the SW pipeline, the renderer is based on code that 
was originally derived from Pisces, but
it is distinct from the rasterization step that OpenPisces used to perform and 
Marlin now does perform. Take a look at
the [SW 
pipeline](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/prism/sw)
classes, the [Java
PiscesRendering](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/java/com/sun/pisces)
classes, and the
[prism-sw](https://github.com/openjdk/jfx/tree/master/modules/javafx.graphics/src/main/native-prism-sw)
 native code.

-

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-18 Thread Michael Paus

Am 18.07.20 um 17:57 schrieb Kevin Rushforth:


On 7/18/2020 8:50 AM, Michael Paus wrote:

Am 18.07.20 um 17:10 schrieb Kevin Rushforth:
Note that the SW pipeline still has a Pisces-based renderer for the 
actual rendering of primitives. This is separate

from the rasterizer and is not affected by this proposed fix.


Just out of curiosity - why is this still needed? Wouldn't it be nice 
to remove Pisces completely?


We still fall back to the SW pipeline for a few cases, such as virtual 
environments without HW graphics support (Windows Remote Desktop, 
VMWare, VirtualBox), systems with insufficient graphics HW or drivers 
(mainly on Linux, but also on some Windows servers).
I think you misunderstood my question. Of course I know that JavaFX has 
a SW pipeline which is used under certain conditions. My question was 
why this SW pipeline still uses Pisces. The Marlin renderer has replaced 
Pisces in all other areas, as far as I know. Why not also in the SW 
pipeline. In how far are the requirements of the SW pipeline different 
from the ones in AWT for example?


Michael



Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-18 Thread Phil Race
On Sat, 18 Jul 2020 14:57:08 GMT, Kevin Rushforth  wrote:

> This removes the obsolete OpenPiscesRasterizer (Java-based) and 
> NativePiscesRasterizer implementations. The Marlin
> rasterizer was added in FX 9 and was made the default in FX 10. Marlin both 
> outperforms Pisces and is more robust.
> There is no reason to keep the Pisces rasterizer(s) any more.  Note that the 
> SW pipeline still has a Pisces-based
> renderer for the actual rendering of primitives. This is separate from the 
> rasterizer and is not affected by this
> proposed fix.  I have tested this on Mac, Windows, and Linux.

Marked as reviewed by prr (Reviewer).

-

PR: https://git.openjdk.java.net/jfx/pull/268


Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-18 Thread Kevin Rushforth



On 7/18/2020 8:50 AM, Michael Paus wrote:

Am 18.07.20 um 17:10 schrieb Kevin Rushforth:
Note that the SW pipeline still has a Pisces-based renderer for the 
actual rendering of primitives. This is separate

from the rasterizer and is not affected by this proposed fix.


Just out of curiosity - why is this still needed? Wouldn't it be nice 
to remove Pisces completely?


We still fall back to the SW pipeline for a few cases, such as virtual 
environments without HW graphics support (Windows Remote Desktop, 
VMWare, VirtualBox), systems with insufficient graphics HW or drivers 
(mainly on Linux, but also on some Windows servers).


-- Kevin



Re: RFR: 8196079: Remove obsolete Pisces rasterizer

2020-07-18 Thread Michael Paus

Am 18.07.20 um 17:10 schrieb Kevin Rushforth:

Note that the SW pipeline still has a Pisces-based renderer for the actual 
rendering of primitives. This is separate
from the rasterizer and is not affected by this proposed fix.


Just out of curiosity - why is this still needed? Wouldn't it be nice to 
remove Pisces completely?


Michael