OK, even though this thread might be dead already, I want to make an assumption
For retrieving an arbitrary texel of a given texture with witdth w and heigh h, at coordinate x,y the renderer would have to do
addr = startAddr + y*w + x
if you use 2^n textures, it can be
addr = startAddr + y<<n + x
Now, I’m anything else but sure about hardware implementations, but a in my world a bitshift is still faster than a multiplication
Funny thing is, it should be implementation-dependent. Mesa3D for example (and, being a hardcore coder for fun, I mean the software renderers here) builds a table with one longword entry for every y, containing the start address of every row of any texture, when calling glTeximage2D()… so for Mesa it’s always one memory access, no matter what dimensions the texture has. I’m not sure why Brian did this, because Mesa still spits out an error when trying to use a texture that doesn’t have 2^n dimensions.
But, is it possible that the bitshift assumption is correct?