glGenerateMipmap on ATI

Has anyone got glGenerateMipmapsEXT working on an ATI card (especially FireGL cards)?
I just don’t get it working. No GL errors are thrown; the same code works on nvidia. The result are just white textures. Using the obsolete SGIS_generate_mipmap extension worked, though. Manually generating and uploading all mipmap levels works also.

Additionally, I’d like to ask about/point out some “grey space” in the FBO specs concerning glGenerateMipmapEXT:
What happens, if I request a compressed internal format to glTexImage and some time later call glGenerateMipmapEXT? Will the driver derive the mipmaps from the already-compressed texture or will it use the uncompressed source data (which it would have to keep around, just for the case described)

I have found that glMipmapGenerate does not work on any of the ATI cards I have tested. Neither does GL_SELECT render mode.

It doesn’t seem to work neither on my 3870HD… How to generate mipmaps with ATi cards ? I have three textures that are created by an FBO.

I can generate them with glTexParameter (GL_GENERATE_MIPMAP), but if I set GL_MIPMAP for MIN_FILTER, it doesn’t work :/.

Do I have to generate my mipmaps by hand on the GPU ?

I can get myGenerateMipmapsEXT to work on any card :wink:

Might be nice anyway if you want a tent, Gaussian or something other than an off the rack box filter.

To everyone struggling with glGenerateMipmapEXT on ATI:

Remember to glEnable(GL_TEXTURE_2D) (or whatever target you are using) before calling glGenerateMipmapEXT(GL_TEXTURE_2D). Or else it doesn’t work (at least not here)

I got it working on a Radeon mobility X1600. Probably due to reason given by Duckers

Another thing that I found is that you need to disable the mipmapping filter (for example by setting it to GL_LINEAR,GL_LINEAR) just before calling glGenerateMipmapEXT.

Apparently it’s a driver bug: when mipmaps are generated in hardware, it probably tries to downsample the top-most level with a box filter which performs 4 texture samples, but if mipmap filtering is enabled, the result is undefined… so the mipmaps generation itself becomes undefined. Talk about shooting yourself in the feet…


I’ve discovered some problem on nVidia with glGenerateMipmap() and GL_ALPHA textures - their succeeding mip levels became thrashed.