Test system: Windows 7, NVIDIA Quadro K5000, NVIDIA Driver 311.35
Steps to reproduce:
- Load Volume dataset
- Enable Volume Rendering
- Switch Rendering mode eg. from texture slicing to GPU raycast
How to check GPU memory consumption:
E.g. on Windows systems (7 or later) use Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) and open the System Information View (via Menubar -> View -> System Information), select the GPU tab to show GPU compute/memory utilization.
On step 2 you'll see that GPU memory is allocated for the GPU slicer, on step 3 you'll see that additional GPU memory is allocated for the GPU raycaster.
Interestingly when switching from GPU raycast to GPU slicing the memory is freed for the raycast renderer. However when switching from slicing to raycast mode the slicing renderer allocated GPU memory is kept.
Another note: The GPU slicer allocates huge amounts of GPU memory as it uses an RGBA texture instead of a single channel texture. Furthermore the dynamic range is reduced for CT datasets as only 8bits are used per channel. Is this a limitation imposed by VTK? E.g. for a large dataset (CT 512x512x1024) the GPU slicer allocated 1024Mbyte (8bit, RGBA) instead of the needed 512Mbyte (@16bit single channel) and also reduced the rendering quality.