<div dir="ltr">On 30 November 2013 15:30, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The bspec says:<br>
<br>
"SW must program the sample mask value in this field so that it matches<br>
with 3DSTATE_SAMPLE_MASK"<br>
<br>
I haven't observed this to actually fix anything, but stumbled across it<br>
while adding the rest of the support for CMS layout for multisample<br>
   textures.<br>
<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/gen7_wm_state.c | 9 +++++++--<br>
 1 file changed, 7 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c b/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
index 65c9bbf..92e880c 100644<br>
--- a/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
+++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
@@ -173,8 +173,11 @@ upload_ps_state(struct brw_context *brw)<br>
    if (ctx->Shader.CurrentFragmentProgram == NULL)<br>
       dw2 |= GEN7_PS_FLOATING_POINT_MODE_ALT;<br>
<br>
+   /* Haswell requires the sample mask to be set in this packet as well as<br>
+    * in 3DSTATE_SAMPLE_MASK; the values must match, or strange things happen. */<br></blockquote><div><br></div><div>In the commit message you say you haven't observed this to fix anything, but here you say that strange things happen if you don't set it.  Which is it?<br>
<br>With that discrepancy resolved, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+   /* _NEW_BUFFERS, _NEW_MULTISAMPLE */<br>
    if (brw->is_haswell)<br>
-      dw4 |= SET_FIELD(1, HSW_PS_SAMPLE_MASK); /* 1 sample for now */<br>
+      dw4 |= SET_FIELD(gen6_determine_sample_mask(brw), HSW_PS_SAMPLE_MASK);<br>
<br>
    dw4 |= (brw->max_wm_threads - 1) << max_threads_shift;<br>
<br>
@@ -274,7 +277,9 @@ upload_ps_state(struct brw_context *brw)<br>
 const struct brw_tracked_state gen7_ps_state = {<br>
    .dirty = {<br>
       .mesa  = (_NEW_PROGRAM_CONSTANTS |<br>
-               _NEW_COLOR),<br>
+               _NEW_COLOR |<br>
+                _NEW_BUFFERS |<br>
+                _NEW_MULTISAMPLE),<br>
       .brw   = (BRW_NEW_FRAGMENT_PROGRAM |<br>
                BRW_NEW_PS_BINDING_TABLE |<br>
                BRW_NEW_BATCH |<br>
<span class="HOEnZb"><font color="#888888">--<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>
</font></span></blockquote></div><br></div></div>