WISHLIST: Proxy render ability.

Bug #330271 reported by Troy James Sobotka
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Krzysztof Kosinski

Bug Description

Summary: Currently Inkscape suffers dearly when works get complicated. This might include but not be limited to blurring, object count, live path effects, etc. In order to keep within the WYSIWYG paradigm it would be extremely useful to create a proxy output for a layer. This would render the layer in full and provide almost 100% speed improvement by hiding and eliminating the need for constant re-rendering of a layer. Loosely, this would be the equivalent of rendering to PNG, importing the render for the layer, and turning the SVG elements off.

It is not uncommon to offer proxy abilities for workflows that have strenuous CPU needs. This has been seen in the non-linear editor world where rendering pure HD content (2k) or higher (4k, 8k, 16k, etc.) is simply too taxing with current technology.

See http://img134.imageshack.us/img134/3910/proxydemohd4.jpg for a demonstration of a potential interface location.

I would add that this feature greatly enhances workflow opportunities and provides a temporary mechanism for developers to work out performance issues while maintaining usefulness to artists and designers. Working in outline mode is simply not feasible for most workflows, especially when it comes to the impact of blurs and such on works.

Tags: performance
Revision history for this message
theAdib (theadib) wrote :

Could you please gives some pointers where proxies are described or where proxies are used.
I actually don't know what this means; caching, lowering the accuracy or ...
Thx, Adib.

Changed in inkscape:
importance: Undecided → Wishlist
status: New → Triaged
Revision history for this message
Troy James Sobotka (troy-sobotka) wrote :

Proxies are used extensively when the technology horsepower can't quite deliver adequate performance. In the case of an Inkscape proxy, it would be a form of pre-rendered caching.

This form of proxy layer would be one that you would not be able to adjust much like a locked layer.

To give a demonstration:

1) Create an HD resolution image of 1920x1080.
2) Create approximately ten objects of larger size.
3) Blur each of them until the system becomes painfully unresponsive - it shouldn't take too long ;).
4) Select the layer and render it to PNG with alpha.
5) Re-load the PNG version as a layer alone.
6) Disable the visibility on the original SVG layer that is causing your system to grind to a halt.

Now you should be able to work with that layer at any resolution and get back nearly all of your processing power. When you want to render off of the actual work, turn on the visibility of all of the SVG layers and disable the visibility of the PNG layers.

IF we can make Inkscape work with proxy layers, we GREATLY enhance its ability to cope with complex images. Seeing as how no performance can assure the end artist / designer that their designs will work 100% of the time, a proxy system such as this provides a mechanism for the individual to produce amazingly complex work in a far more rapid fashion as compared to manually doing the above steps.

The easiest way to enable this would be to perhaps provide an 'auto proxy' for locked layers that automatically does the above behind the scenes in memory OR provide a proxy button.

Logically, I can see no reason why 'locked' couldn't be proxied. Perhaps though, it is wiser for selection purposes and other needs that the layer have an explicit 'proxy' toggle.

Revision history for this message
Troy James Sobotka (troy-sobotka) wrote :

Still nightmarish performance in Inkscape. Any progress on this? Anyone even taking it seriously?

Revision history for this message
Rena Kunisaki (i-am-inuyasha) wrote :

This sounds more complicated than necessary. Why is Inkscape re-rendering all the layers every time I zoom in or out, when they haven't changed? Can it not tell which zoom levels I usually use, and render a bitmap of each layer at each of those levels?

Revision history for this message
Troy James Sobotka (troy-sobotka) wrote :

This is most certainly the only effective means to alleviate _all_ performance issues with a singular stroke. It is also future friendly in that more taxing processing can also be proxied.

There is no way around it.

tags: added: performance
removed: proxy
Revision history for this message
Troy James Sobotka (troy-sobotka) wrote :

Does anyone see a way to implement this painlessly?

It's almost 2011 and we still have horrible performance. This would at least provide a work around that deals with all levels of complexity.

The only overhead hit is the alpha compositing, which is an order of a magnitude less than what we currently have.

Changed in inkscape:
status: Triaged → Fix Committed
status: Fix Committed → Confirmed
Revision history for this message
theAdib (theadib) wrote :

inkscape currently renders tiles of the image.
1.) this can be distributed to the different cores.
2.) also inkscape can render in two passes; first with lower accuracy and the second having the full accuracy. To get a full repaint quickly.
3) Inkscape should respond to user input after drawing a single tile

points 1) and 2) are to be implemented.
I have no glue about 3)

my 2 ct.

Changed in inkscape:
assignee: nobody → Krzysztof Kosinski (tweenk)
Revision history for this message
Krzysztof Kosinski (tweenk) wrote :

Now partially fixed in trunk. There is a cache for SPCanvasArena, so path highlights, or selecting and deselecting objects does not cause a redraw of the SVG drawing.

Kris (kris-degussem)
Changed in inkscape:
status: Confirmed → In Progress
Kris (kris-degussem)
Changed in inkscape:
milestone: none → 0.49
Revision history for this message
ScislaC (scislac) wrote :

I'm going to mark back to Confirmed and remove the milestone, I don't see any indication that Krzysztof has plans to implement this for 0.49.

Changed in inkscape:
status: In Progress → Confirmed
milestone: 0.49 → none
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related blueprints

Remote bug watches

Bug watches keep track of this bug in other bug trackers.