Canvas SVG: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
No edit summary
Line 5: Line 5:


On some platforms, just the initialization of the [[FG1000]] is taking ~15 seconds - profiling shows most of the time is spent in ~1500 context switches between Nasal and C++ respectively.
On some platforms, just the initialization of the [[FG1000]] is taking ~15 seconds - profiling shows most of the time is spent in ~1500 context switches between Nasal and C++ respectively.
== Ideas ==
* run parsexml in a Nasal worker thread (problematic: while parsing/loading can happen asynchronously, the parser needs a handle to the canvas group to draw into, so need to synchronize access to that)


[[File: Svg-via-canvas-image.png|Native SVG handling via [[Canvas Image]] and the OSG SVG plugin (via librsvg)]]
[[File: Svg-via-canvas-image.png|Native SVG handling via [[Canvas Image]] and the OSG SVG plugin (via librsvg)]]

Revision as of 14:08, 31 May 2020

This article is a stub. You can help the wiki by expanding it.

Background

With MFDs making heavy use of SVG files, our way of using a custom scripted parser implemented in Nasal (svg.nas) is adding up considerably. i.e. performance is severely affected when processing such files.

On some platforms, just the initialization of the FG1000 is taking ~15 seconds - profiling shows most of the time is spent in ~1500 context switches between Nasal and C++ respectively.


Ideas

  • run parsexml in a Nasal worker thread (problematic: while parsing/loading can happen asynchronously, the parser needs a handle to the canvas group to draw into, so need to synchronize access to that)


Native SVG handling via Canvas Image and the OSG SVG plugin (via librsvg)

References

References