I performed a rapid measurement to know the truth about the padding issues, and here are my results:
3D Card: NV8500GT
Driver version: 169.21
I’ve uploaded 10 times a texture with no mipmaps, and I took the seconds that it taken. I tried with several texture’s sizes: 4095, 4096, 4097 and 8000.
The thing I wanted to know was if effectively, the driver was padding with zeroes the textures when they are NPOT.
For a 4095x4095x3 bytes texture, I got a mean time (per texture upload) of 0.126444 seconds
For a 4096x4096x3 bytes texture, I got a mean time (per texture upload) of 0.12778 seconds (almost the same than the 4095 version)
For a 4097x4097x3 bytes texture, I got a mean time (per texture upload) of 0.128251 seconds. It is in the same ‘range’ than the 1023-1024 versions, so if it were padded with zeroes the time should be much bigger, because it shall be uploading a 8192x8192 texture
For a 8000x8000x3 bytes texture, I got a mean time (per texture upload) of 0.489454 seconds, four times more than the 4097x4047, so my thoughts are that, (at least without mipmaps) NPOT textures are not padded with zeroes to fill until the next power of two size, at least not in the uploading process, but we can’t know how many vram is using the texture.
After these results, I reach to the conclusion that we don’t know anything new :/, so I’ll try some tests mixing DX GetAvailableTextureMem call after and before uploading the textures, to see if I can reach to any conclusion.