diff mbox

drm/plane-helper: Adapt cursor hack to transitional helpers

Message ID 1432110992-24224-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter May 20, 2015, 8:36 a.m. UTC
In

commit f02ad907cd9e7fe3a6405d2d005840912f1ed258
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Thu Jan 22 16:36:23 2015 +0100

    drm/atomic-helpers: Recover full cursor plane behaviour

we've added a hack to atomic helpers to never to vblank waits for
cursor updates through the legacy apis since that's what X expects.
Unfortunately we've (again) forgotten to adjust the transitional
helpers. Do this now.

This fixes regressions for drivers only partially converted over to
atomic (like i915).

Reported-by: Pekka Paalanen <ppaalanen@gmail.com>
Cc: Pekka Paalanen <ppaalanen@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/drm_plane_helper.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Pekka Paalanen May 20, 2015, 8:43 a.m. UTC | #1
On Wed, 20 May 2015 10:36:32 +0200
Daniel Vetter <daniel.vetter@ffwll.ch> wrote:

> In
> 
> commit f02ad907cd9e7fe3a6405d2d005840912f1ed258
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date:   Thu Jan 22 16:36:23 2015 +0100
> 
>     drm/atomic-helpers: Recover full cursor plane behaviour
> 
> we've added a hack to atomic helpers to never to vblank waits for
> cursor updates through the legacy apis since that's what X expects.
> Unfortunately we've (again) forgotten to adjust the transitional
> helpers. Do this now.
> 
> This fixes regressions for drivers only partially converted over to
> atomic (like i915).
> 
> Reported-by: Pekka Paalanen <ppaalanen@gmail.com>
> Cc: Pekka Paalanen <ppaalanen@gmail.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/drm_plane_helper.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
> index 40c1db9ad7c3..2f0ed11024eb 100644
> --- a/drivers/gpu/drm/drm_plane_helper.c
> +++ b/drivers/gpu/drm/drm_plane_helper.c
> @@ -465,6 +465,9 @@ int drm_plane_helper_commit(struct drm_plane *plane,
>  		if (!crtc[i])
>  			continue;
>  
> +		if (crtc[i]->cursor == plane)
> +			continue;
> +
>  		/* There's no other way to figure out whether the crtc is running. */
>  		ret = drm_crtc_vblank_get(crtc[i]);
>  		if (ret == 0) {

Hi,

just adding more people to CC who might want to test this.

When you test this, please make sure your Weston does *NOT* have this
patch:
http://cgit.freedesktop.org/wayland/weston/commit/?id=6858383d51b12632481370fdc7d886a1e6bb4ebd

That is, use Weston 1.7.92 or earlier.


Thanks,
pq
Mario Kleiner May 21, 2015, 2:17 p.m. UTC | #2
On 05/20/2015 10:36 AM, Daniel Vetter wrote:
> In
>
> commit f02ad907cd9e7fe3a6405d2d005840912f1ed258
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date:   Thu Jan 22 16:36:23 2015 +0100
>
>      drm/atomic-helpers: Recover full cursor plane behaviour
>
> we've added a hack to atomic helpers to never to vblank waits for
> cursor updates through the legacy apis since that's what X expects.
> Unfortunately we've (again) forgotten to adjust the transitional
> helpers. Do this now.
>
> This fixes regressions for drivers only partially converted over to
> atomic (like i915).
>
> Reported-by: Pekka Paalanen <ppaalanen@gmail.com>
> Cc: Pekka Paalanen <ppaalanen@gmail.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>   drivers/gpu/drm/drm_plane_helper.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
> index 40c1db9ad7c3..2f0ed11024eb 100644
> --- a/drivers/gpu/drm/drm_plane_helper.c
> +++ b/drivers/gpu/drm/drm_plane_helper.c
> @@ -465,6 +465,9 @@ int drm_plane_helper_commit(struct drm_plane *plane,
>   		if (!crtc[i])
>   			continue;
>
> +		if (crtc[i]->cursor == plane)
> +			continue;
> +
>   		/* There's no other way to figure out whether the crtc is running. */
>   		ret = drm_crtc_vblank_get(crtc[i]);
>   		if (ret == 0) {
>

This one is

Reviewed-and-tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>

I was looking into Weston performance and the cursor problem, so had 
necessary tracing in place to test this. I can confirm that cursor 
related blocking in Westons drm-backend execution are gone with this 
patch applied, whereas they are still present when using hardware 
overlays on Intel, as expected.

So hardware cursors should be fine again, once the patch also ends in 
stable kernels.

thanks,
-mario
Shuang He May 21, 2015, 2:24 p.m. UTC | #3
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6437
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
PNV                                  234/234              234/234
ILK                                  262/262              262/262
SNB                 -1              282/282              281/282
IVB                                  300/300              300/300
BYT                                  254/254              254/254
BDW                                  275/275              275/275
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
 SNB  igt@pm_rpm@dpms-mode-unset-non-lpsp      DMESG_WARN(15)PASS(1)      DMESG_WARN(1)
(dmesg patch applied)WARNING:at_drivers/gpu/drm/i915/intel_uncore.c:#assert_device_not_suspended[i915]()@WARNING:.* at .* assert_device_not_suspended+0x
Note: You need to pay more attention to line start with '*'
Jani Nikula May 22, 2015, 5:50 a.m. UTC | #4
On Thu, 21 May 2015, Mario Kleiner <mario.kleiner.de@gmail.com> wrote:
> On 05/20/2015 10:36 AM, Daniel Vetter wrote:
>> In
>>
>> commit f02ad907cd9e7fe3a6405d2d005840912f1ed258
>> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
>> Date:   Thu Jan 22 16:36:23 2015 +0100
>>
>>      drm/atomic-helpers: Recover full cursor plane behaviour
>>
>> we've added a hack to atomic helpers to never to vblank waits for
>> cursor updates through the legacy apis since that's what X expects.
>> Unfortunately we've (again) forgotten to adjust the transitional
>> helpers. Do this now.
>>
>> This fixes regressions for drivers only partially converted over to
>> atomic (like i915).
>>
>> Reported-by: Pekka Paalanen <ppaalanen@gmail.com>
>> Cc: Pekka Paalanen <ppaalanen@gmail.com>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>> ---
>>   drivers/gpu/drm/drm_plane_helper.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
>> index 40c1db9ad7c3..2f0ed11024eb 100644
>> --- a/drivers/gpu/drm/drm_plane_helper.c
>> +++ b/drivers/gpu/drm/drm_plane_helper.c
>> @@ -465,6 +465,9 @@ int drm_plane_helper_commit(struct drm_plane *plane,
>>   		if (!crtc[i])
>>   			continue;
>>
>> +		if (crtc[i]->cursor == plane)
>> +			continue;
>> +
>>   		/* There's no other way to figure out whether the crtc is running. */
>>   		ret = drm_crtc_vblank_get(crtc[i]);
>>   		if (ret == 0) {
>>
>
> This one is
>
> Reviewed-and-tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
>
> I was looking into Weston performance and the cursor problem, so had 
> necessary tracing in place to test this. I can confirm that cursor 
> related blocking in Westons drm-backend execution are gone with this 
> patch applied, whereas they are still present when using hardware 
> overlays on Intel, as expected.
>
> So hardware cursors should be fine again, once the patch also ends in 
> stable kernels.

Pushed to our topic/drm-fixes, thanks for the patch and review.

BR,
Jani.


>
> thanks,
> -mario
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
index 40c1db9ad7c3..2f0ed11024eb 100644
--- a/drivers/gpu/drm/drm_plane_helper.c
+++ b/drivers/gpu/drm/drm_plane_helper.c
@@ -465,6 +465,9 @@  int drm_plane_helper_commit(struct drm_plane *plane,
 		if (!crtc[i])
 			continue;
 
+		if (crtc[i]->cursor == plane)
+			continue;
+
 		/* There's no other way to figure out whether the crtc is running. */
 		ret = drm_crtc_vblank_get(crtc[i]);
 		if (ret == 0) {