Hi Daniel, On Tue, Mar 28, 2017 at 09:49:38AM +0200, Daniel Vetter wrote: > On Mon, Mar 27, 2017 at 03:01:03PM -0700, Sinclair Yeh wrote: > > Switch over to using internal atomic API for mode set. > > > > This removes the legacy set_config API, replacing it with > > drm_atomic_helper_set_config(). The DRM helper will use various > > vmwgfx-specific atomic functions to set a mode. > > > > DRIVER_ATOMIC capability flag is not yet set, so the user mode > > will still use the legacy mode set IOCTL. > > > > v2: > > * Avoid a clash between page-flip pinning and setcrtc pinning, modify > > the page-flip code to use the page-flip helper and the atomic callbacks. > > To enable this, we will need to add a wrapper around atomic_commit. > > > > * Add vmw_kms_set_config() to work around vmwgfx xorg driver bug > > > > Signed-off-by: Sinclair Yeh <syeh@xxxxxxxxxx> > > Signed-off-by: Thomas Hellstrom <thellstrom@xxxxxxxxxx> > > Reviewed-by: Thomas Hellstrom <thellstrom@xxxxxxxxxx> > > --- > > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 20 +++ > > drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 + > > drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 325 ++++------------------------------- > > 3 files changed, 51 insertions(+), 295 deletions(-) > > > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > > index 6b593aaf..7104796 100644 > > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > > @@ -2923,3 +2923,23 @@ vmw_kms_create_implicit_placement_property(struct vmw_private *dev_priv, > > "implicit_placement", 0, 1); > > > > } > > + > > + > > +/** > > + * vmw_kms_set_config - Wrapper around drm_atomic_helper_set_config > > + * > > + * @set: The configuration to set. > > + * > > + * The vmwgfx Xorg driver doesn't assign the mode::type member, which > > + * when drm_mode_set_crtcinfo is called as part of the configuration setting > > + * causes it to return incorrect crtc dimensions causing severe problems in > > + * the vmwgfx modesetting. So explicitly clear that member before calling > > + * into drm_atomic_helper_set_config. > > + */ > > +int vmw_kms_set_config(struct drm_mode_set *set) > > +{ > > + if (set && set->mode) > > + set->mode->type = 0; > > ugh :( Looking at set_crtcinfo the only thing I can see it look at ->type > is to check for built-in modes. Not a single driver is using that afaics, > we might as well remove this and and void the vmw special case here too. Do you mean remove drm_display_mode->type field altogether or just the check in drm_mode_set_crtcinfo? _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel