Imagination PowerVR SDK Blog

texture filtering mode mipmap-nearest


We noticed that in the SDK, PVRTTextureAPI.cpp in particular, texture filtering mode is set to GL_LINEAR_MIPMAP_NEAREST if the texture has mipmaps. What isn’t it set to GL_LINEAR_MIPMAP_LINEAR instead? Is this for performance reasons?

We’re investigating an issue where our textures look fine on some phones but pixelated on others. Phones with issues seem to be mostly new Samsung handsets such as Nexus S, Epic 4g, Fascinate etc. Our texture format is OGL888.



GL_LINEAR_MIPMAP_NEAREST is the default as a compromise between

appearance and performance. This is bilinear filtering per MIP level but

not between MIP levels - localization of data access is improved whilst

still having better quality, although obviously you can see banding

between the MIP levels if you know what you’re looking for.

Obviously, GL_LINEAR_MIPMAP_LINEAR will look better again, but it

requires more samples and so can harm performance. If you want to use

this mode with PVRTTextureAPI then you can override the filtering mode

after the function call.

Have you considered using a smaller or compressed texture format like PVRTC? You may find that texture bandwidth use is improved so much by this that your app may perform better even after enabling trilinear.

We’ve not seen the issue that you mention - do you have any screenshots that you can post here

or a minimal test case that you can send to


Thanks Gordon. An email has been sent with pointers to a simple test case.


Also, regarding the texture format, we were worried that the pvr tc format may not be supported on non-pvr hardware. Is it the case that the format is supported by pretty much everybody now? So that we can just use it without crossplatform concerns?