From 63fd6f284ddd1096d34b39941683ae244c1e01fc Mon Sep 17 00:00:00 2001 From: Zou Nan hai Date: Mon, 3 Mar 2008 14:49:49 +0800 Subject: [i915] 2D driver may reset Frame count value, this may lead driver to leap it's vblank count a huge value. This will stall some applications that switch video mode if vblank_mode is set to a non zero value in drirc. --- shared-core/i915_irq.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'shared-core') diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c index fd08b6e8..126f0379 100644 --- a/shared-core/i915_irq.c +++ b/shared-core/i915_irq.c @@ -406,6 +406,13 @@ u32 i915_get_vblank_counter(struct drm_device *dev, int plane) if (i915_in_vblank(dev, pipe)) count++; #endif + /* count may be reset by other driver(e.g. 2D driver), + we have no way to know if it is wrapped or resetted + when count is zero. do a rough guess. + */ + if (count == 0 && dev->last_vblank[pipe] < dev->max_vblank_count/2) + dev->last_vblank[pipe] = 0; + return count; } -- cgit v1.2.3