[PATCH 00/32] drm: Deduplicate fb format information

ville.syrjala at linux.intel.com ville.syrjala at linux.intel.com
Thu Nov 17 16:13:59 UTC 2016


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

This series aims to remove the duplicated format information stored under
drm_framebuffer (depth,bits_per_pixel,pixel_format), and instead we just
use the drm_format_info structure. And we store a pointer to the approriate
drm_format_info under drm_framebuffer so that we don't have to do expensive
linear searches through the big array.

Quite of bit of this was cocci magic, and I've tried to keep the cocci
patches pure of manual tinkering in case someone needs to rerun them.
I had some issues with cocci behaving like an idiot, so I've included
a bunch of hand rolled patches up front to make life easier for it.

I've smoke tested this on i915, and compile tested on everything else
(I hope).

Entire series available here:
git://github.com/vsyrjala/linux.git fb_format_dedup

Cc: Alex Deucher <alexander.deucher at amd.com>
Cc: Alexey Brodkin <abrodkin at synopsys.com>
Cc: Ben Skeggs <bskeggs at redhat.com>
Cc: Brian Starkey <brian.starkey at arm.com>
Cc: "Christian König" <christian.koenig at amd.com>
Cc: Dave Airlie <airlied at redhat.com>
Cc: Gerd Hoffmann <kraxel at redhat.com>
Cc: intel-gfx at lists.freedesktop.org
Cc: linux-graphics-maintainer at vmware.com
Cc: Liviu Dudau <liviu.dudau at arm.com>
Cc: Mali DP Maintainers <malidp at foss.arm.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
Cc: Sinclair Yeh <syeh at vmware.com>
Cc: Thomas Hellstrom <thellstrom at vmware.com>

Ville Syrjälä (32):
  drm/i915: Add local 'fb' variables
  drm/radeon: Add local 'fb' variables
  drm/radeon: Use DIV_ROUND_UP()
  drm/mgag200: Add local 'fb' variable
  drm/ast: Add local 'fb' variables
  drm/gma500: Add some local 'fb' variables
  drm/cirrus: Add some local 'fb' variables
  drm/arcpgu: Add local 'fb' variables
  drm/arm: Add local 'fb' variables
  drm/nouveau: Fix crtc->primary->fb vs. drm_fb fail
  drm/nouveau: Add local 'fb' variables
  drm/vmwgfx: Populate fb->dev before drm_framebuffer_init()
  drm: Pass 'dev' to drm_helper_mode_fill_fb_struct()
  drm/vmwgfx: Populate fb->pixel_format
  drm/qxl: Call drm_helper_mode_fill_fb_struct() before
    drm_framebuffer_init()
  drm/virtio: Call drm_helper_mode_fill_fb_struct() before
    drm_framebuffer_init()
  drm/i915: Set fb->dev early on for inherited fbs
  drm: Populate fb->dev from drm_helper_mode_fill_fb_struct()
  drm: Store a pointer to drm_format_info under drm_framebuffer
  drm/vmwgfx: Populate fb->format correctly
  drm/i915: Populate fb->format early for inherited fbs
  drm/atomic: Replace drm_format_num_planes() with
    fb->format->num_planes
  drm/fb_cma_helper: Replace drm_format_info() with fb->format
  drm/nouveau: Use fb->format rather than drm_format_info()
  drm/i915: Store a pointer to the pixel format info for fbc
  drm/i915: Replace drm_format_plane_cpp() with fb->format->cpp[]
  drm/i915: Replace drm_format_num_planes() with fb->format->num_planes
  drm: Add drm_framebuffer_plane_{width,height}()
  drm/i915: Use drm_framebuffer_plane_{width,height}() where possible
  drm: Nuke fb->depth
  drm: Nuke fb->bits_per_pixel
  drm: Nuke fb->pixel_format

 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c     |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c          |  4 +-
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c          |  6 +-
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c          |  6 +-
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c           |  6 +-
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c           |  6 +-
 drivers/gpu/drm/arc/arcpgu_crtc.c               |  3 +-
 drivers/gpu/drm/arm/hdlcd_crtc.c                | 18 +++---
 drivers/gpu/drm/arm/malidp_planes.c             | 10 ++--
 drivers/gpu/drm/armada/armada_crtc.c            |  6 +-
 drivers/gpu/drm/armada/armada_fb.c              |  2 +-
 drivers/gpu/drm/armada/armada_fbdev.c           |  5 +-
 drivers/gpu/drm/armada/armada_overlay.c         |  2 +-
 drivers/gpu/drm/ast/ast_fb.c                    |  4 +-
 drivers/gpu/drm/ast/ast_main.c                  |  2 +-
 drivers/gpu/drm/ast/ast_mode.c                  | 16 +++--
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c |  2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 22 +++----
 drivers/gpu/drm/bochs/bochs_fbdev.c             |  2 +-
 drivers/gpu/drm/bochs/bochs_mm.c                |  2 +-
 drivers/gpu/drm/cirrus/cirrus_fbdev.c           |  6 +-
 drivers/gpu/drm/cirrus/cirrus_main.c            |  2 +-
 drivers/gpu/drm/cirrus/cirrus_mode.c            |  9 +--
 drivers/gpu/drm/drm_atomic.c                    |  8 +--
 drivers/gpu/drm/drm_crtc.c                      |  4 +-
 drivers/gpu/drm/drm_crtc_helper.c               |  4 +-
 drivers/gpu/drm/drm_fb_cma_helper.c             | 11 ++--
 drivers/gpu/drm/drm_fb_helper.c                 | 10 ++--
 drivers/gpu/drm/drm_framebuffer.c               | 53 ++++++++++++++++-
 drivers/gpu/drm/drm_modeset_helper.c            | 11 ++--
 drivers/gpu/drm/drm_plane.c                     |  6 +-
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c   |  6 +-
 drivers/gpu/drm/exynos/exynos7_drm_decon.c      |  8 +--
 drivers/gpu/drm/exynos/exynos_drm_fb.c          |  2 +-
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c       |  6 +-
 drivers/gpu/drm/exynos/exynos_drm_fimd.c        |  4 +-
 drivers/gpu/drm/exynos/exynos_mixer.c           | 12 ++--
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c     |  4 +-
 drivers/gpu/drm/gma500/accel_2d.c               |  2 +-
 drivers/gpu/drm/gma500/framebuffer.c            |  6 +-
 drivers/gpu/drm/gma500/gma_display.c            | 13 +++--
 drivers/gpu/drm/gma500/mdfld_intel_display.c    | 17 +++---
 drivers/gpu/drm/gma500/oaktrail_crtc.c          | 13 +++--
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c |  6 +-
 drivers/gpu/drm/i915/i915_debugfs.c             | 11 ++--
 drivers/gpu/drm/i915/i915_drv.h                 |  4 +-
 drivers/gpu/drm/i915/intel_atomic_plane.c       |  4 +-
 drivers/gpu/drm/i915/intel_display.c            | 78 +++++++++++++------------
 drivers/gpu/drm/i915/intel_fbc.c                | 14 ++---
 drivers/gpu/drm/i915/intel_fbdev.c              | 10 ++--
 drivers/gpu/drm/i915/intel_overlay.c            | 26 ++++-----
 drivers/gpu/drm/i915/intel_pm.c                 | 52 ++++++++---------
 drivers/gpu/drm/i915/intel_sprite.c             | 14 ++---
 drivers/gpu/drm/imx/ipuv3-plane.c               | 40 ++++++-------
 drivers/gpu/drm/mediatek/mtk_drm_fb.c           |  2 +-
 drivers/gpu/drm/mediatek/mtk_drm_plane.c        |  2 +-
 drivers/gpu/drm/mgag200/mgag200_fb.c            |  4 +-
 drivers/gpu/drm/mgag200/mgag200_main.c          |  2 +-
 drivers/gpu/drm/mgag200/mgag200_mode.c          | 23 ++++----
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c       |  2 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c       |  4 +-
 drivers/gpu/drm/msm/msm_fb.c                    | 12 ++--
 drivers/gpu/drm/msm/msm_fbdev.c                 |  2 +-
 drivers/gpu/drm/nouveau/dispnv04/crtc.c         | 17 +++---
 drivers/gpu/drm/nouveau/dispnv04/dfp.c          |  3 +-
 drivers/gpu/drm/nouveau/dispnv04/overlay.c      |  8 +--
 drivers/gpu/drm/nouveau/nouveau_display.c       |  4 +-
 drivers/gpu/drm/nouveau/nouveau_fbcon.c         |  3 +-
 drivers/gpu/drm/nouveau/nv50_display.c          | 14 ++---
 drivers/gpu/drm/omapdrm/omap_fb.c               | 12 ++--
 drivers/gpu/drm/omapdrm/omap_fbdev.c            |  2 +-
 drivers/gpu/drm/qxl/qxl_display.c               |  2 +-
 drivers/gpu/drm/qxl/qxl_draw.c                  |  2 +-
 drivers/gpu/drm/qxl/qxl_fb.c                    |  5 +-
 drivers/gpu/drm/radeon/atombios_crtc.c          | 19 +++---
 drivers/gpu/drm/radeon/r100.c                   | 10 +++-
 drivers/gpu/drm/radeon/radeon_display.c         |  8 +--
 drivers/gpu/drm/radeon/radeon_fb.c              |  4 +-
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c     | 16 ++---
 drivers/gpu/drm/rcar-du/rcar_du_plane.c         |  4 +-
 drivers/gpu/drm/rcar-du/rcar_du_vsp.c           |  4 +-
 drivers/gpu/drm/rockchip/rockchip_drm_fb.c      |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c   |  5 +-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c     | 22 +++----
 drivers/gpu/drm/shmobile/shmob_drm_crtc.c       |  6 +-
 drivers/gpu/drm/shmobile/shmob_drm_plane.c      |  4 +-
 drivers/gpu/drm/sti/sti_gdp.c                   | 10 ++--
 drivers/gpu/drm/sti/sti_hqvdp.c                 |  2 +-
 drivers/gpu/drm/sun4i/sun4i_backend.c           |  5 +-
 drivers/gpu/drm/tegra/dc.c                      |  8 +--
 drivers/gpu/drm/tegra/drm.c                     |  5 +-
 drivers/gpu/drm/tegra/fb.c                      |  6 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c            |  4 +-
 drivers/gpu/drm/tilcdc/tilcdc_plane.c           |  4 +-
 drivers/gpu/drm/udl/udl_fb.c                    |  6 +-
 drivers/gpu/drm/vc4/vc4_plane.c                 |  6 +-
 drivers/gpu/drm/virtio/virtgpu_display.c        |  3 +-
 drivers/gpu/drm/virtio/virtgpu_fb.c             |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_fb.c              | 13 +++--
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c             | 29 +++++++--
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c             |  5 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c            |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c            |  2 +-
 drivers/gpu/drm/zte/zx_plane.c                  |  2 +-
 include/drm/drm_framebuffer.h                   | 27 ++++-----
 include/drm/drm_modeset_helper.h                |  3 +-
 106 files changed, 532 insertions(+), 447 deletions(-)

-- 
2.7.4



More information about the dri-devel mailing list