ATI/AMD Non power of two textures (NPOTS)

While it’s not directly related to JOGL I’ve seen a fair amount of interest in the topic here and I thought I’d share anyways. Apparently in one of the more recent drivers they have released NPOT support has finally been fully implemented, though there is still some weirdness to it. If you have the wrap modes set to clamp it ignores your filter mode and provides hardware accelerated nearest filtering, if you change to a different wrap mode it appears to obey all the settings nicely but it falls back to an emulation mode of some sort.

Oh and this is for the R300 class chips, I haven’t tested any of this on the R420, R520, or R600 series chips

The whole AMD(ATI) NPOT thing has been a bit of a weird one. From what I’ve read, the horrible NPOT performance from Radeon’s stemmed from corporate bickering a couple of years back when ATI didn’t get it’s way regarding NPOT textures in the OpenGL 2.0 spec. In hopes of spiting the rest of the videocard world, they purposefully crippled NPOT hardware support in several generations of their cards. Of course, all this did was annoy consumers and alienate developers.

[/rumours]

So JOGL, LWJGL, or good-old C/C++, NPOT texture performance on some Radeon’s is just plain bad.

I’d hardly think that the ATI NPOT problems has been any sort of conspiracy on their part, supporting NPOTs fully has a fairly substantial hardware overhead, where as the route they went which was implementing it through texture rectangles is relatively trivial in comparison.

Of course even supporting it through texture rectangles I’m a little disappointed that clamp is the only wrap mode allowed and that GL_LINEAR can’t even be supported in hardware, yet they invested the time in a full blown software fall back.

Oh and I wouldn’t say performance is bad so long as what you need falls within “their rules”