I thought some hardware could generate mip-maps via successive decimation.
But what would I know?
But what would I know?
OpenGL guy said:I don't think Kristof was concerned about the fillrate. You'd have to send down the same geometry multiple times in order to generate the miplevels, and that could affect performance.fresh said:Have you ever tried this? It's very, very fast to generate mipmaps in hardware. A complete mipmap chain is 1.333 times as big as the top mip level. so a 512x512 texture only takes an additional ~87k pixels for the mipmaps. With 2 gpix fillrate, it's not big deal.
Kristof said:Lots of little ones make one big... you need to read in the top level, write out a lower level, re-read that level, write out an even lower level, re-read that level, etc... for each render texture in the scene and for each frame... it all adds up to something. Not to mention that render target changes come at a cost as well.
Point mainly is its not "free" and will have some performance impact unless you are not bottlenecking yet.
But at least we all learned something more about render to texture and MipMap generation, which is a good thing (tm)
K-
The actual rendering of the top level is what would take the most time. One Of These Days When I Have Time (tm) I'll whip up a small app to test this
And Kristof, OpenGL guy is right about the tiling. You render to texture in a way so that it winds up exactly the same as a normal texture, and there's no performance hit associated with that. It's been done like that for some time now (several generations), AFAIK. The only performance limitation is lack of compression, and that's it
No, the driver determines the memory layout that gives best performance. If the application does a lock on the surface (which should be rare because it's bad for performance) you can give them an aperture that looks like linear memory so the app (or API) doesn't need to know anything about your tiling.ERP said:I'm not sure if you can specify all or any of these rendertarget formats in D3D on the PC, but you can on the XBox version.
Anyway, your list of fast-to-slow uncompressed texture formats doesn't make sense. Swizzled + Tiled should be the fastest texture format. Memory tiling was initially done for textures so that bilinear filtering would be faster, i.e. the texels are closer together in memory
Maybe what we are calling swizzled + tiled has different meanings.ERP said:While this is intuitively true, it's certainly not true if you benchmark it.
My understanding is that the Tiling and the swizzling work against each other providing worse performance.
ERP said:While this is intuitively true, it's certainly not true if you benchmark it.
My understanding is that the Tiling and the swizzling work against each other providing worse performance.
"Twiddled" (as in twiddling your thumbs, i.e. moving them around) is the term that was coined at IMG/PowerVR for the arrangement of texels (actually refering to the movement of the 'addressing' bits) used since pre PCX1.Gunhead said:"Twiddled"? "Swizzled"? These technical terms kill me
Linking this in with another thread, I remember explaining how we stored textures to RenderMorphics and they were initially, not surprisingly, rather confused by it.darkblu said:now that was intriguing. thanks, Simon.
nvidia texture swizzling is substantially different to ATI's. I can believe that swizzled + tiled is a negative in their hardware, although I'd be surprised if it was slower than straight-linear.OpenGL guy said:Maybe what we are calling swizzled + tiled has different meanings.ERP said:While this is intuitively true, it's certainly not true if you benchmark it.
My understanding is that the Tiling and the swizzling work against each other providing worse performance.
nvidia texture swizzling is substantially different to ATI's. I can believe that swizzled + tiled is a negative in their hardware, although I'd be surprised if it was slower than straight-linear