VTK color 3D image display error

Dear All,

I have a 3D, MHD color image display error with VTK with interactor. The image has 2.8GBytes (raw).
The problem is in Linux. My computer has 20GBytes of RAM and is i7 (Intel GPU).
VTK 9.0.3

2021-08-20 11:52:29.308 ( 5.371s) [ FC3F3740] vtkVolumeTexture.cxx:739 ERR| vtkVolumeTexture (0x4c10b70): Capabilities check via proxy texture 3D allocation failed!

How I can display such big image? Despite to be color file it displays in gray level.


Luís Gonçalves

glxinfo | egrep -i ‘device|memory’
Device: Mesa Intel(R) UHD Graphics 630 (CFL GT2) (0x3e9b)
Video memory: 3072MB
Unified memory: yes
GL_AMD_performance_monitor, GL_AMD_pinned_memory,
GL_AMD_pinned_memory, GL_AMD_query_buffer_object,

How I increase the memory limit available to Intel GPU?

Intel Memory of GPU is dynamically increased.

I have two GPUs in my portable. The Intel GPU and a Nvidia GTX 1650 with 4GBytes.
If the display in Intel GPU it gives the error reported. With GTX 1650 it displays Ok.

I think you answered your own question. It seems you’re trying to load a texture too large for the graphics card’s memory. This means that you either have to add memory modules to it or buy another one with more memory.

I’m curious: why do you need such large texture? To display an image that large you have to resort to some large data management technique such as level-of-detail or multiresolution volume. You never actually need (or are able to) to load all your data in full resolution. I mean, if you’re looking at the entire cube from afar, you only need a low resolution version of it. If you zoom in, then you only need the small portions of the image that happen to intersect the viewing frustrum. That’s how we display 300GB-1TB seismic surveys cubes in petroleum industry without the need for a high-end graphics card.

A simpler techinque for displaying large volumes is by using orthoslices or camera-facing slices. This way you reduce the problem to a number of 2D textures, reducing memory demand dramacticaly:

Thanks for the answer.

The display GPU is an Intel from the CPU. I think that if the GPU needs more memory, it dynamically uses from CPU memory (RAM shared between CPU and GPU). I suppose…

I suspect that the problem is related with Intel GPU (with CPU RAM) has not enough performance to deal to such large image. (perhaps some timeout).

The Nvidia GPU deals with it without problems. It has GDDR5 4GBytes that is much faster. It can process pixels much faster than the Intel.

It doesn’t work exactly like that. Of course you can have graphics data in CPU memory. However, to display them, the data is transfered to GPU memory, not the way around (the graphics card requesting data). This means that the CPU memory is not available for the graphics card to use on demand, otherwise it would be a mess, not counting the lag resulting from constantly transferring data between both memories. The NVidia card works because it has enough memory for your texture. The other card has about 3GB, which is likely not enough for a 2.8GB texture. Remember that the graphics card has other stuff taking up its memory: shaders, vertex buffer, z-buffer, stencil buffer, back buffer, etc.

Are you certain about that?

My Intel GPU:
Intel® UHD Graphics 630

Look, this is not a dispute of who’s wrong and who’s right like in those forums discussing politics, right? We’re not discussing video memory from the OS standpoint, but texture rendering. I’m giving you an explanation of why you’re getting a texture allocation error. You’re trying to load a 2.8GB texture into a 3GB graphics card, and that’s marginally not possible. You can use your 20GB main memory to load the texture data from a file, but, yet, it must be transfered to the graphics card’s memory to be rendered, unless you use software rendering (disable hardware acceleration). In conclusion: I don’t see any fault in VTK here, just limited hardware combined with a naïve way to handle a large data set.

take care.

All sites in internet says that Intel GPU uses the RAM of the CPU and it is dynamically allocated. Seems that the 3GBytes can be expanded dynamically.

I continue to receive this error even with smaller images 1.1Gbytes raw images in Linux.

2021-08-20 11:52:29.308 ( 5.371s) [ FC3F3740] vtkVolumeTexture.cxx:739 ERR| vtkVolumeTexture (0x4c10b70): Capabilities check via proxy texture 3D allocation failed!