diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index f6b84fe8099a..cea4f1a8709e 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
| @@ -213,7 +213,7 @@ static int init_render_ring(struct drm_device *dev, | |||
| 213 | #define PIPE_CONTROL_FLUSH(addr) \ | 213 | #define PIPE_CONTROL_FLUSH(addr) \ |
| 214 | do { \ | 214 | do { \ |
| 215 | OUT_RING(GFX_OP_PIPE_CONTROL | PIPE_CONTROL_QW_WRITE | \ | 215 | OUT_RING(GFX_OP_PIPE_CONTROL | PIPE_CONTROL_QW_WRITE | \ |
| 216 | PIPE_CONTROL_DEPTH_STALL); \ | 216 | PIPE_CONTROL_DEPTH_STALL | 2); \ |
| 217 | OUT_RING(addr | PIPE_CONTROL_GLOBAL_GTT); \ | 217 | OUT_RING(addr | PIPE_CONTROL_GLOBAL_GTT); \ |
| 218 | OUT_RING(0); \ | 218 | OUT_RING(0); \ |
| 219 | OUT_RING(0); \ | 219 | OUT_RING(0); \ |
| @@ -236,7 +236,19 @@ render_ring_add_request(struct drm_device *dev, | |||
| 236 | u32 seqno; | 236 | u32 seqno; |
| 237 | drm_i915_private_t *dev_priv = dev->dev_private; | 237 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 238 | seqno = intel_ring_get_seqno(dev, ring); | 238 | seqno = intel_ring_get_seqno(dev, ring); |
| 239 | if (HAS_PIPE_CONTROL(dev)) { | 239 | |
| 240 | if (IS_GEN6(dev)) { | ||
| 241 | BEGIN_LP_RING(6); | ||
| 242 | OUT_RING(GFX_OP_PIPE_CONTROL | 3); | ||
| 243 | OUT_RING(PIPE_CONTROL_QW_WRITE | | ||
| 244 | PIPE_CONTROL_WC_FLUSH | PIPE_CONTROL_IS_FLUSH | | ||
| 245 | PIPE_CONTROL_NOTIFY); | ||
| 246 | OUT_RING(dev_priv->seqno_gfx_addr | PIPE_CONTROL_GLOBAL_GTT); | ||
| 247 | OUT_RING(seqno); | ||
| 248 | OUT_RING(0); | ||
| 249 | OUT_RING(0); | ||
| 250 | ADVANCE_LP_RING(); | ||
| 251 | } else if (HAS_PIPE_CONTROL(dev)) { | ||
| 240 | u32 scratch_addr = dev_priv->seqno_gfx_addr + 128; | 252 | u32 scratch_addr = dev_priv->seqno_gfx_addr + 128; |
| 241 | 253 | ||
| 242 | /* | 254 | /* |
