NPOT 3d texture revisited

I am using a 3D textures of size 2^m+2 (eg. 18, 66, 258, don’t ask why). If I use these dimensions in a call to glTexImage3D, the rendering is awfully slow. If i use the dimensions which are rounded to a higher power of 2 (reorganizing the data in memory accordingly), the rendering is fast. I can understand all that, because my Radeon x800 supposedly doesn’t support NPOT textures very well.
But since 2^m+2 is exactly the dimension of a power of 2 texture with a border, I expected to get fast rendering by using texture border and rescaling the texture coordinates in the fragment program so to generate coordinates outside [0,1]. However, the rendering is still slow and I wonder why. It shouldn’t be, since the 2^m+2 dimension is in the specs from the very beginning. It thought even the oldest cards should support it well, even for 3D textures.

Not all chips actually support texture border in hardware. I’m not sure the X800 does. Radeon 9x00 no, X1x00 yes. So maybe you could do a quick test without border.

What clamp mode are you using?

Originally posted by Xmas:
Not all chips actually support texture border in hardware. I’m not sure the X800 does. Radeon 9x00 no, X1x00 yes. So maybe you could do a quick test without border.
I think I tried all possibilities, as I explained. With up-rounded power-of_two, without power_of_two, and with the texture border.

Actually I believe my card is 9800, but the ATI control panel reports it as X800. How can I find out whether my hardware supports texture borders with 3d textures? Can I do it through some OpenGL query, or is it listed somewhere?

Originally posted by Xmas:

What clamp mode are you using?

I am using GL_CLAMP_TO_BORDER.

If you have the DirectX SDK installed, you can use the DX Caps Viewer and look under VolumeTextureAddressCaps. There should be a D3DPTADDRESSCAPS_BORDER.

I just noticed that there is no border support for 3D textures even on an X1600, it’s 2D textures only. I guess you’re out of luck here.