OSDN Git Service

i965: Move post-sync non-zero flush for 3DSTATE_MULTISAMPLE.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 24 Oct 2013 07:38:27 +0000 (00:38 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 28 Oct 2013 18:29:32 +0000 (11:29 -0700)
For some reason, we put the flush in the caller, rather than just before
emitting the packet.  This is more than a cosmetic problem: BLORP calls
gen6_emit_3dstate_multisample() directly, and so it missed the flush.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Xinkai Chen <yeled.nova@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Cc: "9.2" <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/gen6_multisample_state.c

index c94c900..9f69ddc 100644 (file)
@@ -83,6 +83,9 @@ gen6_emit_3dstate_multisample(struct brw_context *brw,
       break;
    }
 
+   /* 3DSTATE_MULTISAMPLE is nonpipelined. */
+   intel_emit_post_sync_nonzero_flush(brw);
+
    int len = brw->gen >= 7 ? 4 : 3;
    BEGIN_BATCH(len);
    OUT_BATCH(_3DSTATE_MULTISAMPLE << 16 | (len - 2));
@@ -138,9 +141,6 @@ static void upload_multisample_state(struct brw_context *brw)
       }
    }
 
-   /* 3DSTATE_MULTISAMPLE is nonpipelined. */
-   intel_emit_post_sync_nonzero_flush(brw);
-
    gen6_emit_3dstate_multisample(brw, num_samples);
    gen6_emit_3dstate_sample_mask(brw, num_samples, coverage,
          coverage_invert, sample_mask);