[Mesa-dev] [PATCH 3/7] r600g: fix evergreen 8x MSAA sample positions
Paul Berry
stereotype441 at gmail.com
Mon Aug 27 17:18:36 PDT 2012
On 26 August 2012 18:04, Marek Olšák <maraeo at gmail.com> wrote:
> On Thu, Aug 23, 2012 at 11:39 PM, Paul Berry <stereotype441 at gmail.com>
> wrote:
> > On 23 August 2012 10:42, Marek Olšák <maraeo at gmail.com> wrote:
> >>
> >> On Thu, Aug 23, 2012 at 6:42 PM, Paul Berry <stereotype441 at gmail.com>
> >> wrote:
> >> > On 22 August 2012 18:54, Marek Olšák <maraeo at gmail.com> wrote:
> >> >>
> >> >> The original samples positions took samples outside of the pixel
> >> >> boundary,
> >> >> leading to dark pixels on the edge of the colorbuffer, among other
> >> >> things.
> >> >
> >> >
> >> > Does this address the issues you were having with the error thresholds
> >> > in
> >> > the EXT_framebuffer_multisample piglit tests (Re: your Aug 13 email
> >> > "[Piglit] [PATCH] ext_framebuffer_multisample: relax MSAA precision")?
> >>
> >> Yes, it does. The accuracy tests now pass for me.
> >>
> >> Marek
> >
> >
> > Excellent. Glad to hear it.
>
> Sorry, the tests actually don't pass, I tested with the piglit patch
> applied. :( However this patch reduces the error quite a lot, it's
> just not enough. I guess I have to choose the sample positions very
> carefully.
>
> Marek
>
If it helps any, here are the positions I used for 8x MSAA on Intel
hardware (from src/mesa/drivers/dri/i965/gen6_multisample_state.c). I
don't know what the capabilities of r600g are, but if it can reproduce the
same sample positions that would be a nice quick way to double check
whether the remaining inaccuracy is caused by sample positions:
* Sample positions:
* 1 3 5 7 9 b d f
* 1 5
* 3 2
* 5 6
* 7 4
* 9 0
* b 3
* d 1
* f 7
Intel hardware specifies the sample positions in offsets of 1/16 pixel,
with 8=pixel center, so for example in the above diagram, sample number 2
has x coordinate of 0xb, meaning 3/16 pixel to the right of center. I
*think* that means you'll have to subtract 8 from each coordinate to get
the values you want to use on r600g.
Here's the results I get for "ext_framebuffer_multisample-accuracy 8 color"
on Ivy Bridge:
Pixels that should be unlit
count = 214644
Perfect output
Pixels that should be totally lit
count = 28972
Perfect output
Pixels that should be partially lit
count = 18528
RMS error = 0.060891
The error threshold for this test is 0.071928
I also tried using your sample positions with the Intel driver (I think I'm
interpreting eg_sample_locs_8x correctly), and I got these results:
Pixels that should be unlit
count = 214644
Perfect output
Pixels that should be totally lit
count = 28972
Perfect output
Pixels that should be partially lit
count = 18528
RMS error = 0.068037
The error threshold for this test is 0.071928
Which also passes, but by a narrower margin.
I'm curious what results you are getting. Perhaps there is a problem with
downsampling?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120827/e4e8996b/attachment.html>
More information about the mesa-dev
mailing list