diff mbox

commit drm/i915: disable shared panel fitter for pipe breaks resolution switching

Message ID CAKMK7uGijUgr-Q-ztcUrBfNv9biUTVHUUVS6DzzOHguxWW9qjA@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter April 9, 2013, 4:40 p.m. UTC
Can you please quickly test whether the below patch changes anything
in the behaviour?



On Mon, Apr 8, 2013 at 7:38 PM, Hans de Bruin <jmdebruin@xmsnet.nl> wrote:
> On 04/07/2013 08:56 PM, Daniel Vetter wrote:
>>
>> On Sun, Mar 10, 2013 at 06:02:32PM +0100, Hans de Bruin wrote:
>>>
>>> On 03/06/2013 11:37 PM, Daniel Vetter wrote:
>>>>
>>>> On Wed, Mar 6, 2013 at 7:39 PM, Hans de Bruin <jmdebruin@xmsnet.nl>
>>>> wrote:
>>>>>
>>>>> On 03/06/2013 03:00 PM, Daniel Vetter wrote:
>>>>>>
>>>>>>
>>>>>> Hi Hans,
>>>>>>
>>>>>> Can you please test with 3.9-rc1? That contains an additional patch
>>>>>> which might prevent the regression. Specifically
>>>>>>
>>>>>> commit 9d6d9f19e8146fa24903cb561e204a22232740e3
>>>>>> Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>>>>>> Date:   Fri Feb 8 16:35:38 2013 +0200
>>>>>>
>>>>>>       drm/i915: clean up panel fitter handling in lvds
>>>>>
>>>>>
>>>>>
>>>>> Today's kernel still contains the bug.
>>>>
>>>>
>>>> Hm, I've just retested latest drm-intel-nightly which should have the
>>>> same set of relevant patches, and I couldn't reproduce your issue.
>>>> Low-res modes on the lvds panel seem to correctly scale up here on my
>>>> 945gm.
>>>>
>>>> Can you pls retest with latest -nightly from
>>>> http://cgit.freedesktop.org/~danvet/drm-intel ?
>>>>
>>>> Also please attach the output of xrandr --verbose when running with a
>>>> reduced mode.
>>>>
>>>
>>> tested:
>>> http://cgit.freedesktop.org/~danvet/drm-intel
>>> commit d08a6eb2690b1ac6f0582feb41c2ccbea945285f
>>> Date:   Thu Mar 7 22:54:25 2013 +0100
>>>
>>> The problem is still there
>>>
>>>
>>> my previous post contained  the  xrandr output whiteout the verbose.
>>> Doe you want my to repost with the verbose option?
>>
>>
>> Sorry for the long delay in taking again a look at this. I've tried to
>> reproduce this on my various machines similar to yours, but totally
>> failed. Also, a bunch of people with matching machines to yours actually
>> claim that the 2 commits which regress for you actually fix up lvds panel
>> fiting for them. So I'm a bit lost as to what's going on here.
>>
>> Can you please try the below debug patch on top of latest 3.9-rc kernels?
>>
>> Please boot that kernel with drm.debug=0xe added to your kernel cmdline,
>> reproduce the issue (preferrably with xrandr --output LVDS --mode ...) and
>> then attach the complete dmesg. This will enable lots of debugging, so
>> please make sure you grab everything starting from when i915.ko loads.
>>
>
> ok, here is de dmesg.
>
> --
> Hans
>
>
>



--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

Comments

Hans de Bruin April 9, 2013, 5:42 p.m. UTC | #1
On 04/09/2013 06:40 PM, Daniel Vetter wrote:
> Can you please quickly test whether the below patch changes anything
> in the behaviour?
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index 8809813..974ae32 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4715,7 +4715,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
>
>          i9xx_set_pipeconf(intel_crtc);
>
> -       intel_enable_pipe(dev_priv, pipe, false);
> +       //intel_enable_pipe(dev_priv, pipe, false);
>
>          intel_wait_for_vblank(dev, pipe);
>
>
>


for some reason the diff did not work. Here a snippet of my modified 
intel_display.c:


...
         /* pipesrc and dspsize control the size that is scaled from,
          * which should always be the user's requested size.
          */
         I915_WRITE(DSPSIZE(plane),
                    ((mode->vdisplay - 1) << 16) |
                    (mode->hdisplay - 1));
         I915_WRITE(DSPPOS(plane), 0);

         I915_WRITE(PIPECONF(pipe), pipeconf);
         POSTING_READ(PIPECONF(pipe));
         //intel_enable_pipe(dev_priv, pipe, false);

         intel_wait_for_vblank(dev, pipe);

         I915_WRITE(DSPCNTR(plane), dspcntr);
         POSTING_READ(DSPCNTR(plane));
...

The screen still does not scale.


By the way, I have had this problem before: 
https://bugzilla.kernel.org/show_bug.cgi?id=43071
Hans de Bruin April 9, 2013, 5:51 p.m. UTC | #2
On 04/09/2013 07:42 PM, Hans de Bruin wrote:
> On 04/09/2013 06:40 PM, Daniel Vetter wrote:
>> Can you please quickly test whether the below patch changes anything
>> in the behaviour?
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c
>> b/drivers/gpu/drm/i915/intel_display.c
>> index 8809813..974ae32 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -4715,7 +4715,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc
>> *crtc,
>>
>>          i9xx_set_pipeconf(intel_crtc);
>>
>> -       intel_enable_pipe(dev_priv, pipe, false);
>> +       //intel_enable_pipe(dev_priv, pipe, false);
>>
>>          intel_wait_for_vblank(dev, pipe);
>>
>>
>>
>
>
> for some reason the diff did not work. Here a snippet of my modified
> intel_display.c:
>
>
> ...
>          /* pipesrc and dspsize control the size that is scaled from,
>           * which should always be the user's requested size.
>           */
>          I915_WRITE(DSPSIZE(plane),
>                     ((mode->vdisplay - 1) << 16) |
>                     (mode->hdisplay - 1));
>          I915_WRITE(DSPPOS(plane), 0);
>
>          I915_WRITE(PIPECONF(pipe), pipeconf);
>          POSTING_READ(PIPECONF(pipe));
>          //intel_enable_pipe(dev_priv, pipe, false);
>
>          intel_wait_for_vblank(dev, pipe);
>
>          I915_WRITE(DSPCNTR(plane), dspcntr);
>          POSTING_READ(DSPCNTR(plane));
> ...
>
> The screen still does not scale.
>
>
> By the way, I have had this problem before:
> https://bugzilla.kernel.org/show_bug.cgi?id=43071

sorry my mistake that one did scale, but just was not alligned properly.
Daniel Vetter April 9, 2013, 5:59 p.m. UTC | #3
On Tue, Apr 9, 2013 at 7:51 PM, Hans de Bruin <jmdebruin@xmsnet.nl> wrote:
>>          /* pipesrc and dspsize control the size that is scaled from,
>>           * which should always be the user's requested size.
>>           */
>>          I915_WRITE(DSPSIZE(plane),
>>                     ((mode->vdisplay - 1) << 16) |
>>                     (mode->hdisplay - 1));
>>          I915_WRITE(DSPPOS(plane), 0);
>>
>>          I915_WRITE(PIPECONF(pipe), pipeconf);
>>          POSTING_READ(PIPECONF(pipe));
>>          //intel_enable_pipe(dev_priv, pipe, false);
>>
>>          intel_wait_for_vblank(dev, pipe);
>>
>>          I915_WRITE(DSPCNTR(plane), dspcntr);
>>          POSTING_READ(DSPCNTR(plane));
>> ...
>>
>> The screen still does not scale.
>>
>>
>> By the way, I have had this problem before:
>> https://bugzilla.kernel.org/show_bug.cgi?id=43071
>
>
> sorry my mistake that one did scale, but just was not alligned properly.

Now I'm confused, please clarify: Did the patch help a bit? Can you
pls describe more precisely what "not aligned properly" means? Have
you checked whether changing the scaling mode xrandr property helps?
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
Daniel Vetter April 11, 2013, 2:34 p.m. UTC | #4
On Tue, Apr 9, 2013 at 7:59 PM, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Tue, Apr 9, 2013 at 7:51 PM, Hans de Bruin <jmdebruin@xmsnet.nl> wrote:
>>>          /* pipesrc and dspsize control the size that is scaled from,
>>>           * which should always be the user's requested size.
>>>           */
>>>          I915_WRITE(DSPSIZE(plane),
>>>                     ((mode->vdisplay - 1) << 16) |
>>>                     (mode->hdisplay - 1));
>>>          I915_WRITE(DSPPOS(plane), 0);
>>>
>>>          I915_WRITE(PIPECONF(pipe), pipeconf);
>>>          POSTING_READ(PIPECONF(pipe));
>>>          //intel_enable_pipe(dev_priv, pipe, false);
>>>
>>>          intel_wait_for_vblank(dev, pipe);
>>>
>>>          I915_WRITE(DSPCNTR(plane), dspcntr);
>>>          POSTING_READ(DSPCNTR(plane));
>>> ...
>>>
>>> The screen still does not scale.
>>>
>>>
>>> By the way, I have had this problem before:
>>> https://bugzilla.kernel.org/show_bug.cgi?id=43071
>>
>>
>> sorry my mistake that one did scale, but just was not alligned properly.
>
> Now I'm confused, please clarify: Did the patch help a bit? Can you
> pls describe more precisely what "not aligned properly" means? Have
> you checked whether changing the scaling mode xrandr property helps?

Ok, I guess that was just a comment to say that the current bug isn't
quite a match with the old bug. Anyway, I think I've tracked down this
regression here, but since I couldn't reproduce it, can you please
test the patch at:

https://patchwork.kernel.org/patch/2428981/

Thanks, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
Hans de Bruin April 11, 2013, 6:02 p.m. UTC | #5
On 04/11/2013 04:34 PM, Daniel Vetter wrote:
> On Tue, Apr 9, 2013 at 7:59 PM, Daniel Vetter <daniel@ffwll.ch> wrote:
...

>
> Ok, I guess that was just a comment to say that the current bug isn't
> quite a match with the old bug. Anyway, I think I've tracked down this
> regression here, but since I couldn't reproduce it, can you please
> test the patch at:
>
> https://patchwork.kernel.org/patch/2428981/
>

Your patch works. I have gone though all possible resolutions. Thanks 
for the effort.
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c
b/drivers/gpu/drm/i915/intel_display.c
index 8809813..974ae32 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4715,7 +4715,7 @@  static int i9xx_crtc_mode_set(struct drm_crtc *crtc,

        i9xx_set_pipeconf(intel_crtc);

-       intel_enable_pipe(dev_priv, pipe, false);
+       //intel_enable_pipe(dev_priv, pipe, false);

        intel_wait_for_vblank(dev, pipe);