Previous series revisions & explanation at [1], [2], and [3]
This version of the patch series focuses on isolating the DRM core changes from individual driver changes to (hopefully) make this a bit easier to merge. New plane and crtc initialization functions have been added to allow drivers to migrate to the new infrastructure at their own pace; existing drivers that do not update should continue to function as expected. The one remaining painful patch here is patch #12, which replaces crtc->fb with crtc->primary->fb. That patch is now auto-generated via a Coccinelle semantic patch with the rules described in the commit message; hopefully that will make life slightly easier for tree maintainers who want to pull it in.
Daniel mentioned that we should try to merge the underlying infrastructure here without the actual userspace-facing capability bit to make sure things continue to run as expected without breaking; I've dropped the capability bit patch for now, but the previous version from [4] should work on top of this patch set. I've also dropped the i915 cursor support for the moment to keep the patch set simple.
I believe the only userspace-visible changes in this series are the plane type property (which will always return "overlay" since there's no switch to turn on the other plane types) and max width/height plane properties. I figured properties were a little bit cleaner than extending GetPlane() to return additional information, although I can change that if people feel differently. Presumably we're still going to need a lot more properties that describe the limits and capabilities of planes as we go forward (stride, scaling, tiling, etc.)
[1] http://lists.freedesktop.org/archives/dri-devel/2014-March/055855.html [2] http://lists.freedesktop.org/archives/dri-devel/2014-March/055222.html [3] http://lists.freedesktop.org/archives/dri-devel/2014-February/054719.html [4] http://lists.freedesktop.org/archives/dri-devel/2014-March/055216.html
Matt Roper (13): drm: Add support for multiple plane types (v2) drm/exynos: Restrict plane loops to only operate on overlay planes (v2) drm/i915: Restrict plane loops to only operate on overlay planes (v2) drm/shmobile: Restrict plane loops to only operate on legacy planes drm: Make drm_crtc_check_viewport non-static drm: Add primary plane helpers (v2) drm: Add drm_universal_plane_init() drm: Add plane type property (v2) drm: Add plane max width/height properties drm: Add drm_crtc_init_with_planes() drm/msm: Switch to universal plane API's drm: Replace crtc fb with primary plane fb (v3) drm: Remove unused drm_crtc->fb
drivers/gpu/drm/Makefile | 3 +- drivers/gpu/drm/armada/armada_crtc.c | 23 +- drivers/gpu/drm/ast/ast_mode.c | 12 +- drivers/gpu/drm/bochs/bochs_kms.c | 4 +- drivers/gpu/drm/cirrus/cirrus_mode.c | 10 +- drivers/gpu/drm/drm_crtc.c | 228 ++++++++++++++++---- drivers/gpu/drm/drm_crtc_helper.c | 20 +- drivers/gpu/drm/drm_fb_helper.c | 9 +- drivers/gpu/drm/drm_plane_helper.c | 312 +++++++++++++++++++++++++++ drivers/gpu/drm/exynos/exynos_drm_crtc.c | 22 +- drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +- drivers/gpu/drm/gma500/cdv_intel_display.c | 2 +- drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 +- drivers/gpu/drm/gma500/cdv_intel_hdmi.c | 2 +- drivers/gpu/drm/gma500/cdv_intel_lvds.c | 2 +- drivers/gpu/drm/gma500/gma_display.c | 16 +- drivers/gpu/drm/gma500/mdfld_dsi_output.c | 2 +- drivers/gpu/drm/gma500/mdfld_intel_display.c | 16 +- drivers/gpu/drm/gma500/oaktrail_crtc.c | 12 +- drivers/gpu/drm/gma500/psb_intel_display.c | 2 +- drivers/gpu/drm/gma500/psb_intel_lvds.c | 2 +- drivers/gpu/drm/gma500/psb_intel_sdvo.c | 2 +- drivers/gpu/drm/i915/i915_debugfs.c | 4 +- drivers/gpu/drm/i915/i915_irq.c | 4 +- drivers/gpu/drm/i915/intel_display.c | 148 +++++++------ drivers/gpu/drm/i915/intel_dp.c | 4 +- drivers/gpu/drm/i915/intel_fbdev.c | 6 +- drivers/gpu/drm/i915/intel_overlay.c | 4 +- drivers/gpu/drm/i915/intel_pm.c | 38 ++-- drivers/gpu/drm/mgag200/mgag200_mode.c | 26 +-- drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 33 +-- drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 8 +- drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 27 +-- drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 8 +- drivers/gpu/drm/nouveau/dispnv04/crtc.c | 20 +- drivers/gpu/drm/nouveau/dispnv04/dfp.c | 2 +- drivers/gpu/drm/nouveau/nouveau_display.c | 8 +- drivers/gpu/drm/nouveau/nv50_display.c | 17 +- drivers/gpu/drm/omapdrm/omap_crtc.c | 10 +- drivers/gpu/drm/omapdrm/omap_fb.c | 2 +- drivers/gpu/drm/qxl/qxl_display.c | 10 +- drivers/gpu/drm/radeon/atombios_crtc.c | 20 +- drivers/gpu/drm/radeon/r100.c | 4 +- drivers/gpu/drm/radeon/radeon_connectors.c | 2 +- drivers/gpu/drm/radeon/radeon_device.c | 2 +- drivers/gpu/drm/radeon/radeon_display.c | 4 +- drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 16 +- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 10 +- drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 16 +- drivers/gpu/drm/tegra/dc.c | 16 +- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 8 +- drivers/gpu/drm/udl/udl_modeset.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 14 +- drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 8 +- drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 8 +- drivers/staging/imx-drm/ipuv3-crtc.c | 6 +- include/drm/drm_crtc.h | 52 ++++- include/drm/drm_plane_helper.h | 49 +++++ 58 files changed, 940 insertions(+), 381 deletions(-) create mode 100644 drivers/gpu/drm/drm_plane_helper.c create mode 100644 include/drm/drm_plane_helper.h
Cc: Intel Graphics Development intel-gfx@lists.freedesktop.org