From fa5279e289da82eb0acabc00d5acbfd9ac8f633c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Fri, 11 May 2007 12:49:26 +0200 Subject: [PATCH] i915: Invalidate all non-static indirect state at the beginning of HWZ render. --- shared-core/i915_dma.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index 3833dd98..64dd16d8 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -1494,12 +1494,21 @@ static int i915_hwz_render(drm_device_t *dev, DRM_DEBUG("Emitting %d DWORDs of static indirect state\n", render->static_state_size); - BEGIN_RING(&dev_priv->ring, (7 * filp_priv->num_rects + 11 + + BEGIN_RING(&dev_priv->ring, (7 * filp_priv->num_rects + 20 + (render->wait_flips ? 2 : 0) + 1) & ~1); - OUT_RING(GFX_OP_LOAD_INDIRECT | (1<<8) | (0<<14) | 1); + OUT_RING(GFX_OP_LOAD_INDIRECT | (0x3f<<8) | (0<<14) | 10); OUT_RING(render->static_state_offset | (1<<1) | (1<<0)); OUT_RING(render->static_state_size - 1); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); + OUT_RING(0); OUT_RING(CMD_MI_FLUSH /*| MI_NO_WRITE_FLUSH*/); OUT_RING(CMD_MI_LOAD_REGISTER_IMM); OUT_RING(Cache_Mode_0); @@ -1533,7 +1542,7 @@ static int i915_hwz_render(drm_device_t *dev, OUT_RING(Cache_Mode_0); OUT_RING(0x221 << 16 | 0x20); - if (!(filp_priv->num_rects & 0x1)) + if (filp_priv->num_rects & 0x1) OUT_RING(0); i915_hwb_idle(dev, filp_priv, render->bpl_num);