drm/virtio: Enable fb damage clips property for the primary plane

Message ID 20230310125943.912514-1-javierm@redhat.com
State New
Headers
Series drm/virtio: Enable fb damage clips property for the primary plane |

Commit Message

Javier Martinez Canillas March 10, 2023, 12:59 p.m. UTC
  Christian Hergert reports that the driver doesn't enable the property and
that leads to always doing a full plane update, even when the driver does
support damage clipping for the primary plane.

Don't enable it for the cursor plane, because its .atomic_update callback
doesn't handle damage clips.

Reported-by: Christian Hergert <chergert@redhat.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---

 drivers/gpu/drm/virtio/virtgpu_plane.c | 4 ++++
 1 file changed, 4 insertions(+)


base-commit: 3e853b9f89e4bcc8aa342fa350d83ff0df67d7e9
  

Comments

Thomas Zimmermann March 10, 2023, 1:20 p.m. UTC | #1
Hi Javier

Am 10.03.23 um 13:59 schrieb Javier Martinez Canillas:
> Christian Hergert reports that the driver doesn't enable the property and
> that leads to always doing a full plane update, even when the driver does
> support damage clipping for the primary plane.
> 
> Don't enable it for the cursor plane, because its .atomic_update callback
> doesn't handle damage clips.
> 
> Reported-by: Christian Hergert <chergert@redhat.com>
> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
> ---
> 
>   drivers/gpu/drm/virtio/virtgpu_plane.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
> index 4c09e313bebc..a2e045f3a000 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
> @@ -390,5 +390,9 @@ struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev,

virtio_gpu_plane_init() should really be two separate functions. But 
withing the constrains of the current code

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

Best regards
Thomas

>   		return plane;
>   
>   	drm_plane_helper_add(plane, funcs);
> +
> +	if (type == DRM_PLANE_TYPE_PRIMARY)
> +		drm_plane_enable_fb_damage_clips(plane);
> +
>   	return plane;
>   }
> 
> base-commit: 3e853b9f89e4bcc8aa342fa350d83ff0df67d7e9

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
  
Javier Martinez Canillas March 10, 2023, 1:27 p.m. UTC | #2
Thomas Zimmermann <tzimmermann@suse.de> writes:

Hello Thomas,

> Hi Javier
>
> Am 10.03.23 um 13:59 schrieb Javier Martinez Canillas:
>> Christian Hergert reports that the driver doesn't enable the property and
>> that leads to always doing a full plane update, even when the driver does
>> support damage clipping for the primary plane.
>> 
>> Don't enable it for the cursor plane, because its .atomic_update callback
>> doesn't handle damage clips.
>> 
>> Reported-by: Christian Hergert <chergert@redhat.com>
>> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
>> ---
>> 
>>   drivers/gpu/drm/virtio/virtgpu_plane.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>> 
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
>> index 4c09e313bebc..a2e045f3a000 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
>> @@ -390,5 +390,9 @@ struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev,
>
> virtio_gpu_plane_init() should really be two separate functions. But 
> withing the constrains of the current code
>

Agreed, I thought the same. I may post a follow-up patch once this lands.

> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
>

Thanks!
  
Gerd Hoffmann March 13, 2023, 8:52 a.m. UTC | #3
On Fri, Mar 10, 2023 at 01:59:42PM +0100, Javier Martinez Canillas wrote:
> Christian Hergert reports that the driver doesn't enable the property and
> that leads to always doing a full plane update, even when the driver does
> support damage clipping for the primary plane.
> 
> Don't enable it for the cursor plane, because its .atomic_update callback
> doesn't handle damage clips.
> 
> Reported-by: Christian Hergert <chergert@redhat.com>
> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>

Acked-by: Gerd Hoffmann <kraxel@redhat.com>
  
Javier Martinez Canillas March 13, 2023, 5:28 p.m. UTC | #4
Javier Martinez Canillas <javierm@redhat.com> writes:

> Christian Hergert reports that the driver doesn't enable the property and
> that leads to always doing a full plane update, even when the driver does
> support damage clipping for the primary plane.
>
> Don't enable it for the cursor plane, because its .atomic_update callback
> doesn't handle damage clips.
>
> Reported-by: Christian Hergert <chergert@redhat.com>
> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
> ---

Pushed to drm-misc (drm-misc-next). Thanks!
  

Patch

diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
index 4c09e313bebc..a2e045f3a000 100644
--- a/drivers/gpu/drm/virtio/virtgpu_plane.c
+++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
@@ -390,5 +390,9 @@  struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev,
 		return plane;
 
 	drm_plane_helper_add(plane, funcs);
+
+	if (type == DRM_PLANE_TYPE_PRIMARY)
+		drm_plane_enable_fb_damage_clips(plane);
+
 	return plane;
 }