Current driver support status for rectengular textures


Since I am very limited on hardware available for testing, I wanted to ask how well current drivers for ATI/NVIDIA support rectangular textures and NPOT textures.

Am I correct that the best supported extensions for this are ARB_texture_rectangle and ARB_texture_non_power_of_two?

Is it correct that ATI and NVIDIA supports ARB_texture_rectangle with hardware that supports SM2.0 or better, and ARB_texture_non_power_of_two is only supported by NVIDIA?
(according to

Thanks a lot for your help on this!

RECT + NPOT fully supported on recent HW
NPOT could be problem on older NV HW or drivers.
RECT have broader support.

even the latest integrated Intel gfx chip
cannot do RECT nor NPOT. So beware! Lot of
computers today have it (especially laptops).

RECT for sure, NPOT probably as well.

ATI supports NPOT, too, with their more recent cards (my X1600 does support it).

However, NPOT is really slow on ATI, compared with RECT. On nVidia, AFAIK they are both nearly equally fast. I would suggest you to use ARB_texture_rectangle, as long as you don’t need mipmapping and more than linear filtering.


So is it save to asume that everything equal or newer than R300 and NV30 generation supports RECT with newest drivers?
And how does it look with NPOT?

Damn, it is REALLY frustrating that both vendors don’t supply a extension support matrix for their products based on the current driver revision!
It is their damn business not ours.

We fortunately do not (have to) support the Intel crap.

I would suggest you to use ARB_texture_rectangle, as long as you don’t need mipmapping
Well, I want to use this for textures, not just FBOs.

So can I forget to use RECT with mipmapping if my minimum hardware requirement is R300 and NV30?

This database, even if not complete because filed by users, helps :
Just download the soft, run it, and upload.

Yes, I posted a link to this already.
But as you said, it is created by users and might not be up to date.

And it also doesn’t get into detail like if mipmapping is supported with RECT, etc.

Do not expect that mipmapping is supported on RECT
textures. It is only on POT or NPOT.
Some ATI boards can do NPOT despite it is
not announced through extension string.
They implement it in half way. Some limitation exists, like not all wrap modes are supported.

Originally posted by mfort:
Do not expect that mipmapping is supported on RECT textures.
That phrases it a bit optimistic. Actually rectangle textures NEVER support mipmapping, according to the spec.

See issue 1:

"… it also has limitations such as the absence of both mipmapping and the GL_REPEAT and GL_MIRRORED_REPEAT wrap modes … "

For textures, it is really not suited well. Can’t you just resize your textures to be POT ?


nv3x … NPOT not supported (only software)
nv4x > … NPOT supported

on a nv4x, speedwise theres practically no difference between the two, my testing showed only a few % between NPOT + texture_rectangle_arb

R300 and up supports RECT.
R300 and up supports NPOT as long as you stay within the same restrictions as in RECT.
R600 supports NPOT unconditionally.

I’d recommend NPOT over RECT for everything, especially for R300/R400 series since they don’t support RECT natively but has to normalize the texture coordinates through shader modification.

On Mac OS X things are a little different; RECT is widely supported because the window server etc uses it, and there is an effort made to support things equally across vendors.

RECT is supported on:
R100 and up (all Mac ATI renderers newer than Rage128)
NV11 and up (all Mac NV renderers)
GMA 950 (all Mac Intel renderers)

NPOT is currently supported on:
R500 and up (but < R600 can fall back to software)
NV40 and up
GMA 950

And here’s an extension support matrix for all Mac renderers.

Usage notes:
NPOT is nice if you want to use normalized coordinates, and works on R500 natively as long as you don’t use mipmaps, repeat/mirror modes, or 3D/cube textures.

On the other hand, for some applications RECT denormalized coordinates are more natural. And on NV30, if you want to use float texture formats you are stuck with RECT anyway.