On 13 August 2012 10:31, Marek Olšák <span dir="ltr"><<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
r600g needs this to successfully pass the 8x MSAA accuracy tests.<br></blockquote><div><br>This test passes as-is on Mesa's Intel driver with 4x and 8x, and with nVidia's binary blob with everything from 2x through 32x, so it seems much more likely that the test is correct, and you are seeing a genuine driver bug.  (For example, is it possible that your sample positions aren't properly centered on the pixel, or extend outside the pixel boundary?)<br>
<br>Does the test also fail on the proprietary driver for r600g?  If it passes, then I think we should leave the test as is.  If the proprietary driver fails too, then I'd like to understand what it is about the r600g hardware's MSAA implementation that causes it to be so inaccurate.  If r600g's MSAA implementation is really this bad, then perhaps we should just blacklist the test for r600g, so that we don't weaken the testing of other platforms.<br>
<br>I'm particularly concerned to see the changes you're suggesting to the is_perfect() function--this is used to verify that rendering is correct for pixels that are completely covered or completely uncovered.  I'm having trouble imagining how a correct implementation would get these pixels wrong.<br>
<br>If you're certain that the r600g implementation is correct, could you perhaps provide some information about what is unique about r600g's implementation of MSAA that causes it to be less accurate than Intel's or nVidia's, but nonetheless spec compliant?  And perhaps send us a screenshot of the test so we can understand what's going wrong?<br>
<br>Paul <br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
 tests/spec/ext_framebuffer_multisample/common.cpp |   10 +++++-----<br>
 tests/spec/ext_framebuffer_multisample/common.h   |    2 +-<br>
 2 files changed, 6 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/tests/spec/ext_framebuffer_multisample/common.cpp b/tests/spec/ext_framebuffer_multisample/common.cpp<br>
index 412bf01..6f994b3 100644<br>
--- a/tests/spec/ext_framebuffer_multisample/common.cpp<br>
+++ b/tests/spec/ext_framebuffer_multisample/common.cpp<br>
@@ -1311,9 +1311,9 @@ Stats::summarize()<br>
 }<br>
<br>
 bool<br>
-Stats::is_perfect()<br>
+Stats::is_satisfactory()<br>
 {<br>
-       return sum_squared_error == 0.0;<br>
+       return sqrt(sum_squared_error / count) < 0.003;<br>
 }<br>
<br>
 bool<br>
@@ -1607,10 +1607,10 @@ Test::measure_accuracy()<br>
<br>
        printf("Pixels that should be unlit\n");<br>
        unlit_stats.summarize();<br>
-       pass = unlit_stats.is_perfect() && pass;<br>
+       pass = unlit_stats.is_satisfactory() && pass;<br>
        printf("Pixels that should be totally lit\n");<br>
        totally_lit_stats.summarize();<br>
-       pass = totally_lit_stats.is_perfect() && pass;<br>
+       pass = totally_lit_stats.is_satisfactory() && pass;<br>
        printf("Pixels that should be partially lit\n");<br>
        partially_lit_stats.summarize();<br>
<br>
@@ -1630,7 +1630,7 @@ Test::measure_accuracy()<br>
                 * log2(num_samples).<br>
                 */<br>
                int effective_num_samples = num_samples == 0 ? 1 : num_samples;<br>
-               error_threshold = 0.333 *<br>
+               error_threshold = 0.36 *<br>
                        pow(0.6, log((double)effective_num_samples) / log(2.0));<br>
        }<br>
        printf("The error threshold for this test is %f\n", error_threshold);<br>
diff --git a/tests/spec/ext_framebuffer_multisample/common.h b/tests/spec/ext_framebuffer_multisample/common.h<br>
index 710d77e..7dcf0e6 100644<br>
--- a/tests/spec/ext_framebuffer_multisample/common.h<br>
+++ b/tests/spec/ext_framebuffer_multisample/common.h<br>
@@ -478,7 +478,7 @@ public:<br>
<br>
        void summarize();<br>
<br>
-       bool is_perfect();<br>
+       bool is_satisfactory();<br>
<br>
        bool is_better_than(double rms_error_threshold);<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
1.7.9.5<br>
<br>
_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/piglit" target="_blank">http://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</font></span></blockquote></div><br>