From: Thomas Richter <thor@math.tu-berlin.de>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Avoid flicker with horizontal panning on 830GM
Date: Mon, 02 Sep 2013 15:58:59 +0200 [thread overview]
Message-ID: <522499A3.50502@math.tu-berlin.de> (raw)
In-Reply-To: <2593_1378105810_522439D2_2593_1811_1_20130902071022.GP9374@phenom.ffwll.local>
Hi Daniel,
> I've just looked at the docs and they only mention that the base address
> must be pixel aligned. But it could very well be that the watermarks are a
> bit off for your chipset. The below quick hack should test this theory.
> -Daniel
>
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index dfdc7ad..990b1f4 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -1673,7 +1673,7 @@ static void i830_update_wm(struct drm_device *dev)
> dev_priv->display.get_fifo_size(dev, 0),
> 4, latency_ns);
> fwater_lo = I915_READ(FW_BLC)& ~0xfff;
> - fwater_lo |= (3<<8) | planea_wm;
> + fwater_lo |= (3<<8) | 0;
>
> DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d\n", planea_wm);
>
Checked with the above modifications. Unfortunately, the result is
negative. With the above modifications and my changes commented out, the
screen flickers in normal state (without panning) but in a different
way: With the above enabled, you get a rather irregular almost
pseudo-random flicker, and not the 60/30Hz flicker I see when panning
horizontally. If I add horizontal panning, then I also get this
irregular flicker, except when scrolling to the "forbidden positions" at
which I get the regular hi-frequency flicker again.
However, now that I checked closer, I found that my patch has also a
drawback, namely the hardware scroll position and the requested scroll
position disagrees, i.e. the mouse pointer is not exactly where it
should be, i.e. the mouse pointer hot-spot is off.
Is there a way to indicate the calling method what the actual
panning/scroll position is if it is different from the requested position?
Is there a different method to scroll the screen than to adjust the
screen origin? Old hardware had not only a screen pointer, but also a
pixel-offset (horizontal scroll) register. Is there something like this
on the 830M to work around the observed trouble?
Greetings,
Thomas
PS: A closer inspection shows that the screen flickers if the panning
position x has the property that (x mod 16) != 0. Strange enough.
next prev parent reply other threads:[~2013-09-02 13:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-01 17:01 [PATCH] drm/i915: Avoid flicker with horizontal panning on 830GM Thomas Richter
2013-09-02 7:10 ` Daniel Vetter
2013-09-02 14:12 ` Ville Syrjälä
[not found] ` <2593_1378105810_522439D2_2593_1811_1_20130902071022.GP9374@phenom.ffwll.local>
2013-09-02 13:58 ` Thomas Richter [this message]
2013-09-02 14:18 ` Daniel Vetter
2013-09-02 14:21 ` Ville Syrjälä
[not found] ` <2593_1378131525_52249E45_2593_4993_1_20130902141857.GW9374@phenom.ffwll.local>
2013-09-02 15:21 ` Thomas Richter
2013-09-05 14:51 ` Thomas Richter
2013-09-05 14:56 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=522499A3.50502@math.tu-berlin.de \
--to=thor@math.tu-berlin.de \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.