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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox