PDA

View Full Version : Yet another Intel multisample thread



eodabash
03-18-2013, 03:58 PM
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?

Alfonse Reinheart
03-18-2013, 04:59 PM
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.

eodabash
03-18-2013, 06:06 PM
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.

That makes things more clear, thanks.

AdamB
03-25-2013, 03:48 AM
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