Re: [Intel-gfx] [PATCH 1/3] [v2] drm: Add new DRM_IOCTL_MODE_GETPLANE2
On Tue, Jan 24, 2017 at 09:20:49PM -0800, Ben Widawsky wrote: > Originally based off of a patch by Kristian. > > This new ioctl extends DRM_IOCTL_MODE_GETPLANE, by returning information > about the modifiers that will work with each format. > > It's modified from Kristian's patch in that the modifiers and formats > are setup by the driver, and then a callback is used to create the > format list. The LOC was enough difference that I don't think it made > sense to leave his authorship, but the new UABI was primarily his idea. > > Additionally, I hit a couple of drivers which Kristian missed updating. > > It also contains a change requested by Daniel to make the modifiers > array a sentinel based structure instead of a sized one. Upon discussion > on IRC, it was determined that having an invalid modifier might make > sense in general as well. > > v2: > - Make formats uint32_t, and use an offset, see the comment in the > patch. Add a WARN_ON and early bail for when there are more than 32 > formats. (Rob) > - Name format_modifiers annotation properly (Ville) > - Remove DRM_DEBUG_KMS (Ville) > - make flags come before count in struct (Ville) > > Cc: Rob Clark > Cc: Ville Syrjälä > Cc: Daniel Stone > Cc: "Kristian H. Kristensen" > References: https://patchwork.kernel.org/patch/9482393/ > Signed-off-by: Ben Widawsky > --- > drivers/gpu/drm/arc/arcpgu_crtc.c | 1 + > drivers/gpu/drm/arm/hdlcd_crtc.c| 1 + > drivers/gpu/drm/arm/malidp_planes.c | 2 +- > drivers/gpu/drm/armada/armada_crtc.c| 1 + > drivers/gpu/drm/armada/armada_overlay.c | 1 + > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 4 +- > drivers/gpu/drm/drm_ioctl.c | 2 +- > drivers/gpu/drm/drm_modeset_helper.c| 1 + > drivers/gpu/drm/drm_plane.c | 65 > - > drivers/gpu/drm/drm_simple_kms_helper.c | 3 ++ > drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 +- > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 2 +- > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 1 + > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +- > drivers/gpu/drm/i915/intel_display.c| 7 ++- > drivers/gpu/drm/i915/intel_sprite.c | 4 +- > drivers/gpu/drm/imx/ipuv3-plane.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_plane.c| 2 +- > drivers/gpu/drm/meson/meson_plane.c | 1 + > drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 2 +- > drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 2 +- > drivers/gpu/drm/mxsfb/mxsfb_drv.c | 2 +- > drivers/gpu/drm/nouveau/nv50_display.c | 5 +- > drivers/gpu/drm/omapdrm/omap_plane.c| 3 +- > drivers/gpu/drm/rcar-du/rcar_du_plane.c | 4 +- > drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 5 +- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 +- > drivers/gpu/drm/sti/sti_cursor.c| 1 + > drivers/gpu/drm/sti/sti_gdp.c | 2 +- > drivers/gpu/drm/sti/sti_hqvdp.c | 2 +- > drivers/gpu/drm/sun4i/sun4i_layer.c | 1 + > drivers/gpu/drm/tegra/dc.c | 12 ++--- > drivers/gpu/drm/vc4/vc4_plane.c | 2 +- > drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- > drivers/gpu/drm/zte/zx_plane.c | 2 +- > include/drm/drm_plane.h | 21 +++- > include/drm/drm_simple_kms_helper.h | 1 + > include/uapi/drm/drm.h | 1 + > include/uapi/drm/drm_fourcc.h | 11 + > include/uapi/drm/drm_mode.h | 36 ++ > 40 files changed, 189 insertions(+), 38 deletions(-) > > diff --git a/drivers/gpu/drm/arc/arcpgu_crtc.c > b/drivers/gpu/drm/arc/arcpgu_crtc.c > index ad9a95916f1f..cd8a24c7c67d 100644 > --- a/drivers/gpu/drm/arc/arcpgu_crtc.c > +++ b/drivers/gpu/drm/arc/arcpgu_crtc.c > @@ -218,6 +218,7 @@ static struct drm_plane *arc_pgu_plane_init(struct > drm_device *drm) > > ret = drm_universal_plane_init(drm, plane, 0xff, &arc_pgu_plane_funcs, > formats, ARRAY_SIZE(formats), > +NULL, > DRM_PLANE_TYPE_PRIMARY, NULL); > if (ret) > return ERR_PTR(ret); > diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c > b/drivers/gpu/drm/arm/hdlcd_crtc.c > index 20ebfb4fbdfa..89fded880807 100644 > --- a/drivers/gpu/drm/arm/hdlcd_crtc.c > +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c > @@ -283,6 +283,7 @@ static struct drm_plane *hdlcd_plane_init(struct > drm_device *drm) > > ret = drm_universal_plane_init(drm, plane, 0xff, &hdlcd_plane_funcs, > formats, ARRAY_SIZE(formats), > +NULL, > DRM_PLANE_TYPE_PRI
[Intel-gfx] [PATCH 1/3] [v2] drm: Add new DRM_IOCTL_MODE_GETPLANE2
Originally based off of a patch by Kristian. This new ioctl extends DRM_IOCTL_MODE_GETPLANE, by returning information about the modifiers that will work with each format. It's modified from Kristian's patch in that the modifiers and formats are setup by the driver, and then a callback is used to create the format list. The LOC was enough difference that I don't think it made sense to leave his authorship, but the new UABI was primarily his idea. Additionally, I hit a couple of drivers which Kristian missed updating. It also contains a change requested by Daniel to make the modifiers array a sentinel based structure instead of a sized one. Upon discussion on IRC, it was determined that having an invalid modifier might make sense in general as well. v2: - Make formats uint32_t, and use an offset, see the comment in the patch. Add a WARN_ON and early bail for when there are more than 32 formats. (Rob) - Name format_modifiers annotation properly (Ville) - Remove DRM_DEBUG_KMS (Ville) - make flags come before count in struct (Ville) Cc: Rob Clark Cc: Ville Syrjälä Cc: Daniel Stone Cc: "Kristian H. Kristensen" References: https://patchwork.kernel.org/patch/9482393/ Signed-off-by: Ben Widawsky --- drivers/gpu/drm/arc/arcpgu_crtc.c | 1 + drivers/gpu/drm/arm/hdlcd_crtc.c| 1 + drivers/gpu/drm/arm/malidp_planes.c | 2 +- drivers/gpu/drm/armada/armada_crtc.c| 1 + drivers/gpu/drm/armada/armada_overlay.c | 1 + drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 4 +- drivers/gpu/drm/drm_ioctl.c | 2 +- drivers/gpu/drm/drm_modeset_helper.c| 1 + drivers/gpu/drm/drm_plane.c | 65 - drivers/gpu/drm/drm_simple_kms_helper.c | 3 ++ drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 2 +- drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 1 + drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +- drivers/gpu/drm/i915/intel_display.c| 7 ++- drivers/gpu/drm/i915/intel_sprite.c | 4 +- drivers/gpu/drm/imx/ipuv3-plane.c | 4 +- drivers/gpu/drm/mediatek/mtk_drm_plane.c| 2 +- drivers/gpu/drm/meson/meson_plane.c | 1 + drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 2 +- drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 2 +- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 2 +- drivers/gpu/drm/nouveau/nv50_display.c | 5 +- drivers/gpu/drm/omapdrm/omap_plane.c| 3 +- drivers/gpu/drm/rcar-du/rcar_du_plane.c | 4 +- drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 5 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 +- drivers/gpu/drm/sti/sti_cursor.c| 1 + drivers/gpu/drm/sti/sti_gdp.c | 2 +- drivers/gpu/drm/sti/sti_hqvdp.c | 2 +- drivers/gpu/drm/sun4i/sun4i_layer.c | 1 + drivers/gpu/drm/tegra/dc.c | 12 ++--- drivers/gpu/drm/vc4/vc4_plane.c | 2 +- drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- drivers/gpu/drm/zte/zx_plane.c | 2 +- include/drm/drm_plane.h | 21 +++- include/drm/drm_simple_kms_helper.h | 1 + include/uapi/drm/drm.h | 1 + include/uapi/drm/drm_fourcc.h | 11 + include/uapi/drm/drm_mode.h | 36 ++ 40 files changed, 189 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/arc/arcpgu_crtc.c b/drivers/gpu/drm/arc/arcpgu_crtc.c index ad9a95916f1f..cd8a24c7c67d 100644 --- a/drivers/gpu/drm/arc/arcpgu_crtc.c +++ b/drivers/gpu/drm/arc/arcpgu_crtc.c @@ -218,6 +218,7 @@ static struct drm_plane *arc_pgu_plane_init(struct drm_device *drm) ret = drm_universal_plane_init(drm, plane, 0xff, &arc_pgu_plane_funcs, formats, ARRAY_SIZE(formats), + NULL, DRM_PLANE_TYPE_PRIMARY, NULL); if (ret) return ERR_PTR(ret); diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c index 20ebfb4fbdfa..89fded880807 100644 --- a/drivers/gpu/drm/arm/hdlcd_crtc.c +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c @@ -283,6 +283,7 @@ static struct drm_plane *hdlcd_plane_init(struct drm_device *drm) ret = drm_universal_plane_init(drm, plane, 0xff, &hdlcd_plane_funcs, formats, ARRAY_SIZE(formats), + NULL, DRM_PLANE_TYPE_PRIMARY, NULL); if (ret) { devm_kfree(drm->dev, plane); diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c index eff2fe47e26a..94dbcbc9ad8f 100644 --- a/drivers/gpu/drm/arm/malidp_planes.c