[PATCH 6/7] drm/vmwgfx: Stop using plane->fb in atomic_enable()

Deepak Singh Rawat drawat at vmware.com
Fri Apr 6 18:56:45 UTC 2018


> 
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Instead of looking at the (soon to be deprecated) plane->fb we'll
> examing plane->state->fb instead. We can do this because
> vmw_du_crtc_atomic_check() prevents us from enabling a crtc
> without the primary plane also being enabled.
> 
> Due to that same reason, I'm actually not sure what the checks here are
> for NULL fb. If we can't enable the crtc without an enabled plane
> we should always have an fb. But I'll leave that for someone else
> to figure out.

Hi Ville,

AFAIK the NULL check is set or clear the implicit framebuffer property
which is specific to vmwgfx and for current hardware version is disabled.
I have this future TODO work item to get rid of implicit placement property
or at least make it read only.

I still don’t have complete understanding of atomic state but this patch looks
good to me.

Reviewed-by: Deepak Rawat <drawat at vmware.com>

> 
> Cc: Thomas Hellstrom <thellstrom at vmware.com>
> Cc: Sinclair Yeh <syeh at vmware.com>
> Cc: VMware Graphics <linux-graphics-maintainer at vmware.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> index 90445bc590cb..152e96cb1c01 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> @@ -414,6 +414,7 @@ static void vmw_stdu_crtc_helper_prepare(struct
> drm_crtc *crtc)
>  static void vmw_stdu_crtc_atomic_enable(struct drm_crtc *crtc,
>  					struct drm_crtc_state *old_state)
>  {
> +	struct drm_plane_state *plane_state = crtc->primary->state;
>  	struct vmw_private *dev_priv;
>  	struct vmw_screen_target_display_unit *stdu;
>  	struct vmw_framebuffer *vfb;
> @@ -422,7 +423,7 @@ static void vmw_stdu_crtc_atomic_enable(struct
> drm_crtc *crtc,
> 
>  	stdu     = vmw_crtc_to_stdu(crtc);
>  	dev_priv = vmw_priv(crtc->dev);
> -	fb       = crtc->primary->fb;
> +	fb       = plane_state->fb;
> 
>  	vfb = (fb) ? vmw_framebuffer_to_vfb(fb) : NULL;
> 
> --
> 2.16.1
> 


More information about the dri-devel mailing list