diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-06-17 13:56:30 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-06-17 14:08:07 +0100 |
commit | 2ff7a2fc9d939554502e9adec89cae5597a9e82c (patch) | |
tree | 325cbda5ccf033c6271d3098e46f568be580ebf8 /src/i915_render.c | |
parent | a25573d5c47ebea34c076075e1993233d7db2b4f (diff) |
i915: Force the emission of BUF_INFO on every composite_setup
We should be able to eliminate these as the drawable remains unchanged.
However, the implicit flush of BUF_INFO fixes the rendering in KDE.
Alternatively, we need an MI_FLUSH | INHIBIT_RENDER_CACHE_FLUSH between
composites. (Note that it is not stale cache data causing the rendering
corruption and that a pipelined flush is not sufficient either.) Also,
having tried varies points at which to flush, the only place where the
flush is effective seems to be between composite operations - that is a
flush after 2D is not sufficient.
Reported-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reported-by: Clemens Eisserer <linuxhippy@gmail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/i915_render.c')
-rw-r--r-- | src/i915_render.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/i915_render.c b/src/i915_render.c index b2bc7a76..782c2594 100644 --- a/src/i915_render.c +++ b/src/i915_render.c @@ -1032,10 +1032,15 @@ static void i915_emit_composite_setup(ScrnInfoPtr scrn) OUT_BATCH (intel->render_mask_solid); } - /* BUF_INFO is an implicit flush, so avoid if the target has not changed */ - if (dest != intel->render_current_dest) { + /* BUF_INFO is an implicit flush, so avoid if the target has not changed. + * XXX However for reasons unfathomed, correct rendering in KDE requires + * at least a MI_FLUSH | INHIBIT_RENDER_CACHE_FLUSH here. + */ + if (1 || dest != intel->render_current_dest) { uint32_t tiling_bits; + intel_batch_do_flush(scrn); + if (i830_pixmap_tiled(dest)) { tiling_bits = BUF_3D_TILED_SURFACE; if (i830_get_pixmap_intel(dest)->tiling |