Usage of textures with incomplete mipmap is a common OpenGL pitfall , since by default GL_TEXTURE_MIN_FILTER is GL_NEAREST_MIPMAP_LINEAR. Thus it'd be very useful if Mesa called debug callbacks on such errors.
A test case can be found in the attachment. When run, it first tries to draw a full-screen textured quad with a mipmap-incomplete texture, and on a key press it toggles TEXTURE_MIN_FILTER between NEAREST and NEAREST_MIPMAP_LINEAR.
Binary nvidia driver gives me a useful debug notification, leading to the following output from the test program on each frame with mipmap-incomplete texture use:
> debug callback called, notification: Texture state usage warning: Texture 1 has no mipmaps, while its min filter requires mipmap.
It would be very useful if Mesa also did this. Currently (as of 17.2) it doesn't emit any relevant messages.
Created attachment 138612 [details]
With a debug build of Mesa if you set the MESA_DEBUG env var to "incomplete_tex" you'll get a warning. This predates the GL_ARB_debug_output extension.
It shouldn't be hard to go into the incomplete() function in texobj.c and have it call _mesa_log_msg() so the incomplete texture gets reported via GL_ARB_debug_output.
Want to take a stab at it?
We should do the same for FBOs.
(In reply to Brian Paul from comment #2)
> Want to take a stab at it?
I might try if no one other does, but I'm not sure how soon I'll be able to do this.
There's also an unfortunate extra case that's not even picked up by incomplete_tex here:
And this is actually the case being mentioned. The incomplete() stuff doesn't take sampler state into account.