Yet another Intel multisample thread

I’ve seen the various threads here reporting problems with Intel’s multisample support. I can live with this, but I’m having trouble with one of their integrated GPUs (identifying itself as “Intel HD Graphics”) advertising support for GL_ARB_framebuffer_object but not GL_EXT_framebuffer_multisample, and generating an invalid enum error when I query GL_MAX_SAMPLES.

The GL_ARB_framebuffer_object spec includes GL_EXT_framebuffer_multisample, so even if they choose to advertise just the ARB extension, that means it is incorrect for the driver to generate the error right, since they are claiming to support multisampling?

Currently my check to determine if msaa is available looks like GL_ARB_framebuffer_object || GL_EXT_framebuffer_multisample. Does it seem safe to change this to just GL_EXT_framebuffer_multisample? Is there likely to be hardware out there that is advertising just the ARB extension but does in fact support multisampling?

GL_ARB_framebuffer_object spec includes GL_EXT_framebuffer_multisample

No it does not. It include GL_MAX_SAMPLES. It includes the same functionality, but that doesn’t mean that it includes the extension itself.

that means it is incorrect for the driver to generate the error right, since they are claiming to support multisampling?

Yes and no. In that order.

The driver should not emit GL_INVALID_ENUM if ARB_framebuffer_object is supported and you use glGetIntegerv with GL_MAX_SAMPLES. However, that does not mean that multisampling is supported. The extension is very clear that GL_MAX_SAMPLES can be zero, in which case multisampling is not supported. The infrastructure for multisampling exists, but that doesn’t mean you can use it.

[QUOTE=Alfonse Reinheart;1249092]No it does not. It include GL_MAX_SAMPLES. It includes the same functionality, but that doesn’t mean that it includes the extension itself.

Yes and no. In that order.

The driver should not emit GL_INVALID_ENUM if ARB_framebuffer_object is supported and you use glGetIntegerv with GL_MAX_SAMPLES. However, that does not mean that multisampling is supported. The extension is very clear that GL_MAX_SAMPLES can be zero, in which case multisampling is not supported. The infrastructure for multisampling exists, but that doesn’t mean you can use it.[/QUOTE]

That makes things more clear, thanks.

FWIW, I check (GL_ARB_multisample && GL_EXT_framebuffer_multisample) for whether MSAA is supported and then cache the GL_MAX_SAMPLES value as the indicator of whether to use MSAA. ie if it returns 0, its going down the non-MSAA code path.

Adam

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.