Handling Large volume of data

Kumar_K

Newcomer
What approach developers take for handling large volumes of data??
I mean if i have hundreds of high resolution render target textures which i might need at different instance of time, whats is the best way???
I wont be able to keep all these data in GPU memory. Should i copy it to CPU memory and transfer to GPU when needed? Or there is better method.
I use GetRenderTarget API call for moving data to CPU.
 
Render target textures cannot be swapped to CPU memory automatically. If you are updating your 100+ render target textures rarely, and all your render targes are of same size, you should use just one render target for the rendering, and copy the data from it to standard textures for storage (you could use DirectX managed textures for this purpose). Copying data from buffer to buffer using hardware is very fast. If you are updating just a few of the dynamic textures every frame, copying doesn't cause any noticeable performance hit. If you update these textures very rarely, and use them in 3d-rendering, I also suggest creating mipmaps for the textures before using them (to increase both performance and rendering quality). Also you could compress the textures on fly (see: http://forum.beyond3d.com/showthread.php?t=47625). Both mipmap generation and compression are good choices if you are using the generated texture 10+ times before updating it again. If you are using the texture only once, you should generate it in the proper detail level right away (calculate object texture LOD by using it's size in screen space).
 
Last edited by a moderator:
thanks for the reply.
The scenario is somthing like this...
I have large number of images and i would apply filter on each of these image to generate equivalent filtered image. In further processing i will need these filtered image at different instance. But i dont want to do filtering each time because its heavy. So i need to backup these filtered image. Each filtered image currently is in a rendertarget texture. But the number of images is so large that i cannot keep everythin in GPU memory at same time.

From your reply i think i should use one rendertarget and then copy it to normal texture. Please correct me if am wrong.
 
From your reply i think i should use one rendertarget and then copy it to normal texture. Please correct me if am wrong.

Yes, use one rendertarget, and do the filtering processing there. Then copy the filtered texture to a basic (non-rendertarget) texture. If you use managed textures, you can have any amount of textures, and the driver will swap them to the graphics card automatically when needed.
 
Back
Top