<div dir="ltr">On 1 December 2013 00:24, Chris Forbes <span dir="ltr"><<a href="mailto:chrisf@ijw.co.nz" target="_blank">chrisf@ijw.co.nz</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im">We need to emit extra shader code in this case to sample the<br>
MCS surface first; we can't just blindly do this all the time<br>
since IVB will sometimes try to access the MCS surface even if<br>
disabled.<br>
<br>
</div>V3: Use actual MSAA layout from the texture's mt, rather<br>
then computing what would have been used based on the format.<br>
This is simpler and less fragile - there's at least one case where<br>
we might want to have a texture's MSAA layout change based on what<br>
the app does (CMS SINT falling back to UMS if the app ever attempts<br>
to render to it with a channel disabled.)<br>
<br>
This also obsoletes V2's 1/10 -- compute_msaa_layout can now remain<br>
an implementation detail of the miptree code.<br>
<div class="im"><br>
Signed-off-by: Chris Forbes <<a href="mailto:chrisf@ijw.co.nz">chrisf@ijw.co.nz</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_program.h | 5 +++++<br>
</div> src/mesa/drivers/dri/i965/brw_wm.c      | 8 ++++++++<br>
 2 files changed, 13 insertions(+)<br>
<div class="im"><br>
diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h<br>
index 07be4a0..51182ea 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_program.h<br>
+++ b/src/mesa/drivers/dri/i965/brw_program.h<br>
@@ -45,6 +45,11 @@ struct brw_sampler_prog_key_data {<br>
     * For RG32F, gather4's channel select is broken.<br>
     */<br>
    uint16_t gather_channel_quirk_mask;<br>
+<br>
+   /**<br>
+    * Whether this sampler uses the compressed multisample surface layout.<br>
+    */<br>
+   uint16_t compressed_multisample_layout_mask;<br>
 };<br>
<br>
 #ifdef __cplusplus<br>
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c<br>
</div>index bc1480c..3977395 100644<br>
<div class="im">--- a/src/mesa/drivers/dri/i965/brw_wm.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_wm.c<br>
@@ -38,6 +38,7 @@<br>
 #include "main/samplerobj.h"<br>
 #include "program/prog_parameter.h"<br>
 #include "program/program.h"<br>
+#include "intel_mipmap_tree.h"<br>
<br>
 #include "glsl/ralloc.h"<br>
<br>
</div>@@ -356,6 +357,13 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,<br>
<div class="im">             if (img->InternalFormat == GL_RG32F)<br>
                key->gather_channel_quirk_mask |= 1 << s;<br>
          }<br>
+<br>
+         /* If this is a multisample sampler, and uses the CMS MSAA layout, then<br>
+          * we need to emit slightly different code to first sample the MCS surface.<br>
+          */<br>
</div>+         if (brw->gen >= 7 && intel_texture_object((struct gl_texture_object *)t)->mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {<br>
<div class=""><div class="h5">+            key->compressed_multisample_layout_mask |= 1 << s;<br>
+         }<br></div></div></blockquote><div><br></div><div>We prefer to keep source lines limited to <80 columns when possible.  Maybe rewrite like this?<br><br>         /* If this is a multisample sampler, and uses the CMS MSAA layout,<br>
          * then we need to emit slightly different code to first sample the<br>          * MCS surface.<br>          */<br>         struct intel_texture_object *intel_tex =<br>            intel_texture_object((struct gl_texture_object *)t);<br>
         if (brw->gen >= 7 &&<br>             intel_tex->mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {<br>            key->compressed_multisample_layout_mask |= 1 << s;<br>         }<br><br></div>
<div>With that fixed, this patch is:<br><br>Reviewed-by: Paul Berry <<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class=""><div class="h5">
       }<br>
    }<br>
 }<br>
--<br>
1.8.4.2<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br></div></div>