JDK-8091889 : Improve performance of Prism rendering and clipping
  • Type: Enhancement
  • Component: javafx
  • Sub-Component: graphics
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2012-07-16
  • Updated: 2018-09-05
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Blocks :  
Description
When trying to display some fairly large graphs (>50.000 Nodes) I noticed that the performance of the software renderer broke down quite badly, even though the current viewport didn't display more then a few hundred items.
Further experiments revealed that turning some nodes invisible improved the performance markedly.

I subsequently built a framework to automatically have groups in a ScrollPane invisible and only switch them to be visible shortly before they get scrolled into the viewport.
This solves my performance issues, but leaves a lot to be desired, because the only visibility I have access to is the public property.
Switching this has some undesired side effects (unneccessary layout passes, change of the bounds of the scrollable area) for which I had to compensate.

Furthermore, I suspect that this behavior might even be counterproductive if hardware acceleration is enabled - so I think a better place for it would be the software rendering engine.

So, to summarize, I'd like you to optimize the software rendering engine to handle Groups outside the current clipping area like invisible ones. 

If you think you could use my code for switching visiblilty on scrolling, tell me -- I'd have to ask my management, but it would probably be ok.
Comments
Might this be the same as RT-15839?
30-05-2013

Sorry for the delay, I was on vacation :-) I uploaded some illustrational code. Instructions: - Start Example without parameters -> scrolling performance should be fairly sluggish. - Try again with parameter "-optimized" -> performance should be much better. My whish would be for the framework do do something similar (more generic, of cause - thinking of quad trees).
10-08-2012

Can the submitter please attach a test case?
26-07-2012

According to the log, this is not related to the SW pipeline.
17-07-2012

I started my application with prism set to verbose and got the following result: Prism pipeline init order: d3d j2d Using t2k for text rasterization Using dirty region optimizations Prism pipeline name = com.sun.prism.d3d.D3DPipeline Loading D3D native library ... succeeded. Direct3D initialization succeeded (X) Got class = class com.sun.prism.d3d.D3DPipeline Initialized prism pipeline: com.sun.prism.d3d.D3DPipeline OS Information: Windows Vista build 6002 D3D Driver Information: Intel(R) HD Graphics Family \\.\DISPLAY1 Driver igdumdx32.dll, version 8.15.10.2342 Pixel Shader version 3.0 Device : ven_8086, dev_0116, subsys_21CE17AA
17-07-2012

Dirk, can you please run your app with -Dprism.verbose=true to see what pipeline is used. Thanks.
17-07-2012

Consider for future release.
16-07-2012