JDK-8102558 : Use DirectX 9Ex mechanism to avoid calling cv.save()
  • Type: Enhancement
  • Component: javafx
  • Sub-Component: graphics
  • Affected Version: 7u6
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2012-07-25
  • Updated: 2015-06-16
  • Resolved: 2012-12-06
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.
JDK 8
8Fixed
Related Reports
Relates :  
Description
Comparing the SceneGraph and Canvas versions of BitmapTest w/ 600 monsters at fullspeed, SceneGraph shows a big speed advantage over canvas:

Canvas: 110 fps
SG: 330 fps

This is primarily due to the call to cv.save() in NGCanvas.renderContent().  Without it, we see a big performance boost:

Canvas w/o cv.save(): 350 fps

cv.save() is there to save the contents of the canvas so we can guarantee persistence when the screen is locked and the HW buffers are lost.  So we're reading the pixels back on every frame.

Once we move to DX10, there is a mechanism where they can save the buffers for us only when the surfaces are lost.

Comments
Actually, DirectX 9Ex is enough for persistent graphics data.
04-09-2012

Note that this is a per-scene overhead based on the scene size, so the performance hit in the case of an app running at, say, 30fps is much less severe. Having said that we do want to do this for Lombard.
25-07-2012