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

Message ID 1432110992-24224-1-git-send-email-daniel.vetter@ffwll.ch
State New
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
Jani Nikula May 22, 2015, 5:50 a.m. UTC | #3
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

Patch
diff mbox

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) {