[Piglit] [PATCH] ext_framebuffer_multisample: check for num_samples<=1

Brian Paul brianp at vmware.com
Mon Jan 28 07:54:08 PST 2013

[cross-posting this reply to the mesa-dev list]

On 01/27/2013 09:07 AM, Brian Paul wrote:
> On Sun, Jan 27, 2013 at 2:51 AM, Eric Anholt<eric at anholt.net>  wrote:
>> Brian Paul<brianp at vmware.com>  writes:
>>> Even if GL_ARB_multisample is advertised, it's OK for the max number of
>>> samples to be zero.
>> Huh?  The EXT_framebuffer_multisample spec says minmax of MAX_SAMPLES is
>> 1.
> And GL_ARB_framebuffer_object says it's zero.
> It looks like the piglit test is checking the wrong extension.  At
> line 364 we're calling
> piglit_require_extension("GL_ARB_framebuffer_object").  I don't see
> any checks for GL_EXT_framebuffer_multisample.  I was looking at
> GL_MAX_SAMPLES in the former, not the later.
> I guess the proper fix is to just check for the proper extension.

There's several things going on here.

First, the piglit test needs a 
piglit_require_extension("GL_EXT_framebuffer_multisample") check.

Second, I think we need to disable advertising this extension for 
swrast, softpipe and llvmpipe.

Third, I think we need to decide what GL_MAX_SAMPLES=1 really means.

I've been reading the various multisample-related extensions and none 
of them really says anything special about GL_MAX_SAMPLES=1.  But in 
some places (like the GLSL spec) you'll see the phrase 
"single-sampling" but it seems to mean the non-multisample / 
conventional rasterization case.

My thinking is that it would be theoretically possible to have 
single-sample multisampling (perhaps with a different sample position 
per pixel).

In any case, regardless of the number of samples per pixel, we still 
must obey centroid sampling mode (must interpolate at a point that 
lies in both the pixel and in the primitive being
rendered).  swrast, softpipe and llvmpipe don't support that so we 
really shouldn't advertise GL_MAX_SAMPLES=1 (it should be zero) so 
GL_EXT_framebuffer_multisample shouldn't be advertised for those drivers.

Most likely, the user's going to be disappointed if they want 
multisampling in their app and the driver only gives him GL_MAX_SAMPLES=1.

Does this sound reasonable?


More information about the Piglit mailing list