[Bug 68410] [bisected ivb] Small black box corruption in firefox
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Mon Oct 7 17:23:01 CEST 2013
https://bugs.freedesktop.org/show_bug.cgi?id=68410
--- Comment #40 from Chris Wilson <chris at chris-wilson.co.uk> ---
How about
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 4b60f53..5764244 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -801,7 +801,7 @@ gen7_emit_cc(struct sna *sna, uint32_t blend_offset)
struct gen7_render_state *render = &sna->render_state.gen7;
if (render->blend == blend_offset)
- return;
+ return false;
DBG(("%s: blend = %x\n", __FUNCTION__, blend_offset));
@@ -814,6 +814,7 @@ gen7_emit_cc(struct sna *sna, uint32_t blend_offset)
OUT_BATCH((render->cc_blend + blend_offset) | 1);
render->blend = blend_offset;
+ return blend_offset != NO_BLEND;
}
static void
@@ -1098,10 +1099,12 @@ gen7_emit_state(struct sna *sna,
uint16_t wm_binding_table)
{
bool need_stall;
+ bool need_flush;
assert(op->dst.bo->exec);
- gen7_emit_cc(sna, GEN7_BLEND(op->u.gen7.flags));
+ need_flush = sna->render_state.gen7.emit_flush;
+ need_flush |= gen7_emit_cc(sna, GEN7_BLEND(op->u.gen7.flags));
gen7_emit_sampler(sna, GEN7_SAMPLER(op->u.gen7.flags));
gen7_emit_sf(sna, GEN7_VERTEX(op->u.gen7.flags) >> 2);
gen7_emit_wm(sna, GEN7_KERNEL(op->u.gen7.flags));
@@ -1120,7 +1123,7 @@ gen7_emit_state(struct sna *sna,
sna->render_state.gen7.emit_flush = false;
need_stall = false;
}
- if (ALWAYS_FLUSH || (sna->render_state.gen7.emit_flush &&
GEN7_READS_DST(op->u.gen7.flags))) {
+ if (ALWAYS_FLUSH || (need_flush && GEN7_READS_DST(op->u.gen7.flags))) {
gen7_emit_pipe_flush(sna, need_stall);
need_stall = false;
}
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20131007/f7167fb6/attachment.html>
More information about the intel-gfx-bugs
mailing list