View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003924ParaView(No Category)public2006-10-11 14:342016-08-12 09:57
ReporterKen Moreland 
Assigned ToUtkarsh Ayachit 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionmoved 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0003924: Render Window images need to be cached
DescriptionI have noticed that when one of the render windows needs to be updated but none of the view parameters changed, a full rerender is performed. This occurs, for example, when one of the docable windows or a window from another application is dragged over the display. This can cause the whole window system to slow down.

Rather than redraw the image, the last rendered image should be cached and redrawn over the window. The QVTKWidget already has this ability. We just need to enable it.
TagsNo tags attached.
Project
Topic Name
Type
Attached Filestxt file icon patch.txt [^] (2,066 bytes) 1969-12-31 19:00 [Show Content]

 Relationships

  Notes
(0005368)
Berk Geveci (administrator)
2006-10-12 10:35

Do this in November if easy. Otherwise, we may postpone it to later.
(0005464)
Clinton Stimpson (developer)
2006-10-18 18:52

/cvsroot/ParaView3/ParaView3/Qt/Core/pqRenderModule.cxx,v <-- pqRenderModule.cxx
new revision: 1.17; previous revision: 1.16

Fixed (one liner)
(0005465)
Clinton Stimpson (developer)
2006-10-18 18:56

backed out. QVTKWidget has an issue.
(0005585)
Clinton Stimpson (developer)
2006-10-27 19:01

Fixing bug 3995 will allow us to turn this image caching on and have it work correctly on X11.

I guess it already works fine on Windows & Mac.
(0005682)
Clinton Stimpson (developer)
2006-11-08 16:14

Looked into this some more....
And did some measurements on it in the context of ParaView3.
For a test case I did, I got a real low 5% cache hit rate. It is saving lots of images during interaction that end up getting thrown away.

And sometimes when the cache is reused, the image is too old, and we get incorrect results. For example, in the display panel, I hit the checkbox to toggle the visibility, and the screen remains unchanged because it reused the cache.

In ParaView3, we prefer QVTKWidget::update() over vtkRenderWindow::Render() for performance reasons. If vtkRenderWindow::Render() were called instead, the cache would always be correct, but we'd never re-use the cache because re-using it is handled by the QVTKWidget. If we called QVTKWidget::paintEvent(), the cache is re-used, but it the image may be too old.

We need to do some re-thinking here.
(0005687)
Clinton Stimpson (developer)
2006-11-09 14:47

just so I remember, attached is patch.txt which checks the MTime of the renderers for modifications. That works fine for tracking some model modifications. But the cache is still incorrectly reused when the visibility of a source is changed.
(0005723)
Clinton Stimpson (developer)
2006-11-15 14:51

Ok, finally fixed.

/cvsroot/ParaView3/ParaView3/Qt/Core/pqRenderModule.cxx,v <-- pqRenderModule.cxx
new revision: 1.20; previous revision: 1.19

QVTKWidget needs help knowing when the cache is dirty.
(0005744)
Ken Moreland (manager)
2006-11-20 15:24

This almost works. There is one issue I found on my Windows machine where if another window happens to be over the render window when the render occurs, that window is grabbed in the image cache.

This is easy to replicate. Un-dock one of the dockable windows and place it over the view. Then move the camera to make a new render. Now move the dockable window a bit. You will see it still drawn in the old location.
(0005745)
Clinton Stimpson (developer)
2006-11-20 16:49

I don't know how to fix that. Qt or VTK don't give me the information necessary to know whether the image saved is partly occuluded.
A render server should have an unoccluded image. Can we just have the render server or server manager put the image back?
(0007267)
Berk Geveci (administrator)
2007-04-13 08:56

I enabled this feature on OS X. It works there because OpenGL buffers are always valid even when they are rendered behind a window. We can also get this working well if:
* Compositing is on and we cache the image before putting it on screen
* Hardware accelerated offscreen rendering is supported (framebuffers) and we always render still frames offscreen and paste as texture
* Compiled with offscreen Mesa

We should probably turn caching off for all other cases.
(0011097)
Berk Geveci (administrator)
2008-04-07 12:01

Ken,

Can you create a detailed design document on things we want caching to accomplish? We will reevaluate in the future.

(0011098)
Clinton Stimpson (developer)
2008-04-07 12:09

I thought it was a way to take a shortcut when getting an expose event from the window system (the scene doesn't change).
Above, the feature was enabled on OS X, which I think is redundent because OS X doesn't produce expose events. The Window manager does caching already for us.
(0037503)
Kitware Robot (administrator)
2016-08-12 09:57

Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current ParaView Issues page linked in the banner at the top of this page.

 Issue History
Date Modified Username Field Change
2007-08-13 14:13 Berk Geveci Note Deleted: 0008176
2007-08-13 14:19 Berk Geveci Priority high => normal
2007-08-13 14:19 Berk Geveci Status backlog => tabled
2008-04-07 12:01 Berk Geveci Note Added: 0011097
2008-04-07 12:01 Berk Geveci Assigned To Berk Geveci => Ken Moreland
2008-04-07 12:01 Berk Geveci Category => 3.4
2008-04-07 12:09 Clinton Stimpson Note Added: 0011098
2008-04-14 14:23 Ken Moreland Category 3.4 => 3.6
2009-02-16 14:40 Ken Moreland Category 3.6 => 3.8
2009-05-13 13:42 Utkarsh Ayachit Target Version => 3.8
2010-12-10 13:43 Dave DeMarle Assigned To Ken Moreland => Utkarsh Ayachit
2010-12-10 13:43 Dave DeMarle Status tabled => @20@
2011-06-16 13:10 Zack Galbreath Category => (No Category)
2016-08-12 09:57 Kitware Robot Note Added: 0037503
2016-08-12 09:57 Kitware Robot Status expired => closed
2016-08-12 09:57 Kitware Robot Resolution reopened => moved


Copyright © 2000 - 2018 MantisBT Team