summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 078e430)
raw | patch | inline | side by side (parent: 078e430)
author | Michel Dänzer <michel@tungstengraphics.com> | |
Fri, 2 Feb 2007 16:28:43 +0000 (17:28 +0100) | ||
committer | Michel Dänzer <michel@tungstengraphics.com> | |
Mon, 19 Feb 2007 14:08:40 +0000 (15:08 +0100) |
Leave it to the client to wait for the flip to complete when necessary,
but wait for a previous flip to complete before emitting another one. This
should help avoid unnecessary stalling of the ring due to pending flips.
Call i915_do_cleanup_pageflip() unconditionally in preclose.
but wait for a previous flip to complete before emitting another one. This
should help avoid unnecessary stalling of the ring due to pending flips.
Call i915_do_cleanup_pageflip() unconditionally in preclose.
shared-core/i915_dma.c | patch | blob | history | |
shared-core/i915_drv.h | patch | blob | history |
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index 82fde7e78befae4d0a2007c7dc994ac9d45bfb82..18fe0881b2a2ef2c3f672c97d26d1f07aa54ab1f 100644 (file)
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
OUT_RING(0);
ADVANCE_LP_RING();
+ /* Wait for a pending flip to take effect */
+ BEGIN_LP_RING(2);
+ OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_PLANE_A_FLIP);
+ OUT_RING(0);
+ ADVANCE_LP_RING();
+
BEGIN_LP_RING(6);
OUT_RING(CMD_OP_DISPLAYBUFFER_INFO | ASYNC_FLIP);
OUT_RING(0);
OUT_RING(0);
ADVANCE_LP_RING();
- BEGIN_LP_RING(2);
- OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_PLANE_A_FLIP);
- OUT_RING(0);
- ADVANCE_LP_RING();
i915_emit_breadcrumb(dev);
#ifdef I915_HAVE_FENCE
drm_fence_flush_old(dev, 0, dev_priv->counter);
{
if (dev->dev_private) {
drm_i915_private_t *dev_priv = dev->dev_private;
- if (dev_priv->page_flipping) {
- i915_do_cleanup_pageflip(dev);
- }
+ i915_do_cleanup_pageflip(dev);
i915_mem_release(dev, filp, dev_priv->agp_heap);
}
}
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index f922d1f5c701907adcb394b8b4a1acdf657af518..a81653a7627e32f1f1762e3ea83396c38194d8d2 100644 (file)
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
int back_offset;
int front_offset;
int current_page;
- int page_flipping;
int use_mi_batchbuffer_start;
wait_queue_head_t irq_queue;