When will GPUs get rid of textures?

K.I.L.E.R

Retarded moron
Veteran
Sorry but texture memory is used more like general memory.
I would *love* to see a more flexible model than what is currently used.

Mixed memory usage would be great.
For instance a texture doesn't have to be a specific format. It could be a variable format.
This would be more in line as to how texture memory is used by developers; as storage.
 
Direct3D 10 already makes a step in this direction. First you create a memory resource and then you create one or multiple views for it. The views can use different formats. There are still limits when it comes to different bit sizes per channel but it is much more flexible than the older systems.
 
As Demirug said, D3D10 allows limited format "casting" for texture resources. It's pretty restrictive -- you can't change the total pixel size or number of components per pixel, just how the bits in each component are interpreted. Views don't let you change the width or height either, just mip levels and array length (for texture arrays) or depth (for volume textures).

But D3D10 also supports "Buffer Resources", which are just linear (1D) regions of memory with no fixed structure at all, apart from size in bytes. They're mostly used for vertex/index/streamout buffers, but can also be read in a shader similar to how textures are. Each buffer view you create can have a totally different format without any of the restrictions that texture views have. You can have multiple views of a buffer bound at the same time, so you could bind a view with 4xFP32 elements and another one with 1xUINT16 to a single shader, for example. Reading from buffers is different from textures since you can only use integer [0..n] coordinates rather than normalized [0..1], you only get point sampling, no mipmaps, etc.

So this is pretty much exactly what you're asking for -- big chunks of 1D unformatted data. But by using them instead of textures you're giving up all the filtering horsepower and all the tricks GPUs do to lay out textures for maximum utilization of the DRAMs and memory bus. Those layout tricks require knowing the dimensions and pixel size, so can't be done for buffers without copying and reformatting for each view. Don't underestimate how much performance that leaves on the table...
 
Back
Top