summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorXiang, Haihao <[email protected]>2007-02-12 16:38:50 +0800
committerXiang, Haihao <[email protected]>2007-02-12 16:38:50 +0800
commit1e6688742e6a6e11d002c1fce5dca3da3d58594f (patch)
tree2deb0c74ba937caef7c420445cb75be363e512c2 /src/mesa/drivers/dri
parentebcc9b5d12995cc83c032beeff468c5ecb30b33f (diff)
I965: fix a failure on waiting irq.
Wait until getting the right fence if drm/i915 resets the counter.
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i965/intel_ioctl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_ioctl.c b/src/mesa/drivers/dri/i965/intel_ioctl.c
index 4da31277ea2..0a8e976f706 100644
--- a/src/mesa/drivers/dri/i965/intel_ioctl.c
+++ b/src/mesa/drivers/dri/i965/intel_ioctl.c
@@ -108,7 +108,8 @@ void intelWaitIrq( struct intel_context *intel, int seq )
/* This seems quite often to return before it should!?!
*/
- } while (ret == -EAGAIN || ret == -EINTR || (ret == -EBUSY && lastdispatch != intel->sarea->last_dispatch) || (ret == 0 && seq > intel->sarea->last_dispatch));
+ } while (ret == -EAGAIN || ret == -EINTR || (ret == -EBUSY && lastdispatch != intel->sarea->last_dispatch) || (ret == 0 && seq > intel->sarea->last_dispatch)
+ || (ret == 0 && intel->sarea->last_dispatch - seq >= (1 << 24)));
if ( ret ) {