JDK-8090902 : Create "CommandBuffer" for storing graphics drawing commands in Prism
  • Type: Enhancement
  • Component: javafx
  • Sub-Component: graphics
  • Priority: P2
  • 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
Relates :  
Description
Often Prism has to render a node which has not actually changed -- either because something transparent over top that node has changed or the window was resized etc. In such cases, we recompute a ton of information and then ask OpenGL / D3D / Software to draw. Instead, we should retain a "CommandBuffer" of drawing commands. We construct this once, and then as long as the Node hasn't changed, when we are asked to draw again, we simply iterate (perhaps in native code) this command buffer and issue drawing commands, rather than having to recompute all the drawing state.

We should make sure that we can avoid having to recreate all the drawing commands when a Node simply moves from one place to another, or whenever something like the fill changes. In such cases if we can reconstruct only that part of the command buffer that has changed, we would have some performance advantage even in the case that the node has changed in some way, but not in every way. Of course this will increase memory footprint per node.

However, we need to make sure that the case of a node being moved is exceptionally fast and does not require recomputing the command buffer, or we will not see performance gains in many cases.
Comments
This is similar to, though different from, RT-17582. This issue is about storing the list of GL commands that we should issue on the NG nodes such that next time we are asked to draw, instead of doing work to figure out what commands to issue, we can just issue them. RT-17582 on the other hand is about retaining state (geometry) on the card so that when asked to render we don't have to transfer state down to the card again.
30-05-2013