Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: Pass the format info to .fb_create()

Pass along the format information from the top to .fb_create()
so that we can avoid redundant (and somewhat expensive) lookups
in the drivers.

Done with cocci (with some manual fixups):
@@
identifier func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
...
(
- const struct drm_format_info *info = drm_get_format_info(...);
|
- const struct drm_format_info *info;
...
- info = drm_get_format_info(...);
)
<...
- if (!info)
- return ...;
...>
}

@@
identifier func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
...
}

@find@
identifier fb_create_func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *fb_create_func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd);

@@
identifier find.fb_create_func;
expression dev, file, mode_cmd;
@@
fb_create_func(dev, file
+ ,info
,mode_cmd)

@@
expression dev, file, mode_cmd;
@@
drm_gem_fb_create(dev, file
+ ,info
,mode_cmd)

@@
expression dev, file, mode_cmd;
@@
drm_gem_fb_create_with_dirty(dev, file
+ ,info
,mode_cmd)

@@
expression dev, file_priv, mode_cmd;
identifier info, fb;
@@
info = drm_get_format_info(...);
...
fb = dev->mode_config.funcs->fb_create(dev, file_priv
+ ,info
,mode_cmd);

@@
identifier dev, file_priv, mode_cmd;
@@
struct drm_mode_config_funcs {
...
struct drm_framebuffer *(*fb_create)(struct drm_device *dev,
struct drm_file *file_priv,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd);
...
};

v2: Fix kernel docs (Laurent)
Fix commit msg (Geert)

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <lumag@kernel.org>
Cc: Sean Paul <sean@poorly.run>
Cc: Marijn Suijten <marijn.suijten@somainline.org>
Cc: Marek Vasut <marex@denx.de>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Cc: Biju Das <biju.das.jz@bp.renesas.com>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Mikko Perttunen <mperttunen@nvidia.com>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
Cc: "Maíra Canal" <mcanal@igalia.com>
Cc: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: Gurchetan Singh <gurchetansingh@chromium.org>
Cc: Chia-I Wu <olvaffe@gmail.com>
Cc: Zack Rusin <zack.rusin@broadcom.com>
Cc: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.org
Cc: virtualization@lists.linux.dev
Cc: spice-devel@lists.freedesktop.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: linux-tegra@vger.kernel.org
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250701090722.13645-5-ville.syrjala@linux.intel.com

+59 -49
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
··· 1297 1297 struct drm_framebuffer * 1298 1298 amdgpu_display_user_framebuffer_create(struct drm_device *dev, 1299 1299 struct drm_file *file_priv, 1300 + const struct drm_format_info *info, 1300 1301 const struct drm_mode_fb_cmd2 *mode_cmd) 1301 1302 { 1302 1303 struct amdgpu_framebuffer *amdgpu_fb;
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_display.h
··· 44 44 struct drm_framebuffer * 45 45 amdgpu_display_user_framebuffer_create(struct drm_device *dev, 46 46 struct drm_file *file_priv, 47 + const struct drm_format_info *info, 47 48 const struct drm_mode_fb_cmd2 *mode_cmd); 48 49 const struct drm_format_info * 49 50 amdgpu_lookup_format_info(u32 format, uint64_t modifier);
+1
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
··· 157 157 158 158 struct drm_framebuffer * 159 159 komeda_fb_create(struct drm_device *dev, struct drm_file *file, 160 + const struct drm_format_info *info, 160 161 const struct drm_mode_fb_cmd2 *mode_cmd) 161 162 { 162 163 struct komeda_dev *mdev = dev->dev_private;
+1
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.h
··· 37 37 38 38 struct drm_framebuffer * 39 39 komeda_fb_create(struct drm_device *dev, struct drm_file *file, 40 + const struct drm_format_info *info, 40 41 const struct drm_mode_fb_cmd2 *mode_cmd); 41 42 int komeda_fb_check_src_coords(const struct komeda_fb *kfb, 42 43 u32 src_x, u32 src_y, u32 src_w, u32 src_h);
+2 -1
drivers/gpu/drm/arm/malidp_drv.c
··· 377 377 378 378 static struct drm_framebuffer * 379 379 malidp_fb_create(struct drm_device *dev, struct drm_file *file, 380 + const struct drm_format_info *info, 380 381 const struct drm_mode_fb_cmd2 *mode_cmd) 381 382 { 382 383 if (mode_cmd->modifier[0]) { ··· 385 384 return ERR_PTR(-EINVAL); 386 385 } 387 386 388 - return drm_gem_fb_create(dev, file, mode_cmd); 387 + return drm_gem_fb_create(dev, file, info, mode_cmd); 389 388 } 390 389 391 390 static const struct drm_mode_config_funcs malidp_mode_config_funcs = {
+2 -4
drivers/gpu/drm/armada/armada_fb.c
··· 84 84 } 85 85 86 86 struct drm_framebuffer *armada_fb_create(struct drm_device *dev, 87 - struct drm_file *dfile, const struct drm_mode_fb_cmd2 *mode) 87 + struct drm_file *dfile, const struct drm_format_info *info, 88 + const struct drm_mode_fb_cmd2 *mode) 88 89 { 89 - const struct drm_format_info *info = drm_get_format_info(dev, 90 - mode->pixel_format, 91 - mode->modifier[0]); 92 90 struct armada_gem_object *obj; 93 91 struct armada_framebuffer *dfb; 94 92 int ret;
+2 -1
drivers/gpu/drm/armada/armada_fb.h
··· 19 19 struct armada_framebuffer *armada_framebuffer_create(struct drm_device *, 20 20 const struct drm_mode_fb_cmd2 *, struct armada_gem_object *); 21 21 struct drm_framebuffer *armada_fb_create(struct drm_device *dev, 22 - struct drm_file *dfile, const struct drm_mode_fb_cmd2 *mode); 22 + struct drm_file *dfile, const struct drm_format_info *info, 23 + const struct drm_mode_fb_cmd2 *mode); 23 24 #endif
+1 -1
drivers/gpu/drm/drm_framebuffer.c
··· 302 302 if (ret) 303 303 return ERR_PTR(ret); 304 304 305 - fb = dev->mode_config.funcs->fb_create(dev, file_priv, r); 305 + fb = dev->mode_config.funcs->fb_create(dev, file_priv, info, r); 306 306 if (IS_ERR(fb)) { 307 307 drm_dbg_kms(dev, "could not create framebuffer\n"); 308 308 return fb;
+4
drivers/gpu/drm/drm_gem_framebuffer_helper.c
··· 264 264 * &drm_mode_config_funcs.fb_create callback 265 265 * @dev: DRM device 266 266 * @file: DRM file that holds the GEM handle(s) backing the framebuffer 267 + * @info: pixel format information 267 268 * @mode_cmd: Metadata from the userspace framebuffer creation request 268 269 * 269 270 * This function creates a new framebuffer object described by ··· 284 283 */ 285 284 struct drm_framebuffer * 286 285 drm_gem_fb_create(struct drm_device *dev, struct drm_file *file, 286 + const struct drm_format_info *info, 287 287 const struct drm_mode_fb_cmd2 *mode_cmd) 288 288 { 289 289 return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, ··· 303 301 * &drm_mode_config_funcs.fb_create callback 304 302 * @dev: DRM device 305 303 * @file: DRM file that holds the GEM handle(s) backing the framebuffer 304 + * @info: pixel format information 306 305 * @mode_cmd: Metadata from the userspace framebuffer creation request 307 306 * 308 307 * This function creates a new framebuffer object described by ··· 324 321 */ 325 322 struct drm_framebuffer * 326 323 drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, 324 + const struct drm_format_info *info, 327 325 const struct drm_mode_fb_cmd2 *mode_cmd) 328 326 { 329 327 return drm_gem_fb_create_with_funcs(dev, file, mode_cmd,
+1 -3
drivers/gpu/drm/exynos/exynos_drm_fb.c
··· 94 94 95 95 static struct drm_framebuffer * 96 96 exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, 97 + const struct drm_format_info *info, 97 98 const struct drm_mode_fb_cmd2 *mode_cmd) 98 99 { 99 - const struct drm_format_info *info = drm_get_format_info(dev, 100 - mode_cmd->pixel_format, 101 - mode_cmd->modifier[0]); 102 100 struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER]; 103 101 struct drm_framebuffer *fb; 104 102 int i;
+1
drivers/gpu/drm/gma500/framebuffer.c
··· 97 97 */ 98 98 static struct drm_framebuffer *psb_user_framebuffer_create 99 99 (struct drm_device *dev, struct drm_file *filp, 100 + const struct drm_format_info *info, 100 101 const struct drm_mode_fb_cmd2 *cmd) 101 102 { 102 103 struct drm_gem_object *obj;
+1
drivers/gpu/drm/i915/display/intel_fb.c
··· 2324 2324 struct drm_framebuffer * 2325 2325 intel_user_framebuffer_create(struct drm_device *dev, 2326 2326 struct drm_file *filp, 2327 + const struct drm_format_info *info, 2327 2328 const struct drm_mode_fb_cmd2 *user_mode_cmd) 2328 2329 { 2329 2330 struct drm_framebuffer *fb;
+1
drivers/gpu/drm/i915/display/intel_fb.h
··· 109 109 struct drm_framebuffer * 110 110 intel_user_framebuffer_create(struct drm_device *dev, 111 111 struct drm_file *filp, 112 + const struct drm_format_info *info, 112 113 const struct drm_mode_fb_cmd2 *user_mode_cmd); 113 114 114 115 bool intel_fb_modifier_uses_dpt(struct intel_display *display, u64 modifier);
+3 -2
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
··· 901 901 902 902 static struct drm_framebuffer * 903 903 ingenic_drm_gem_fb_create(struct drm_device *drm, struct drm_file *file, 904 + const struct drm_format_info *info, 904 905 const struct drm_mode_fb_cmd2 *mode_cmd) 905 906 { 906 907 struct ingenic_drm *priv = drm_device_get_priv(drm); 907 908 908 909 if (priv->soc_info->map_noncoherent) 909 - return drm_gem_fb_create_with_dirty(drm, file, mode_cmd); 910 + return drm_gem_fb_create_with_dirty(drm, file, info, mode_cmd); 910 911 911 - return drm_gem_fb_create(drm, file, mode_cmd); 912 + return drm_gem_fb_create(drm, file, info, mode_cmd); 912 913 } 913 914 914 915 static struct drm_gem_object *
+2 -5
drivers/gpu/drm/mediatek/mtk_drm_drv.c
··· 43 43 static struct drm_framebuffer * 44 44 mtk_drm_mode_fb_create(struct drm_device *dev, 45 45 struct drm_file *file, 46 + const struct drm_format_info *info, 46 47 const struct drm_mode_fb_cmd2 *cmd) 47 48 { 48 - const struct drm_format_info *info = drm_get_format_info(dev, 49 - cmd->pixel_format, 50 - cmd->modifier[0]); 51 - 52 49 if (info->num_planes != 1) 53 50 return ERR_PTR(-EINVAL); 54 51 55 - return drm_gem_fb_create(dev, file, cmd); 52 + return drm_gem_fb_create(dev, file, info, cmd); 56 53 } 57 54 58 55 static const struct drm_mode_config_funcs mtk_drm_mode_config_funcs = {
+2 -1
drivers/gpu/drm/msm/msm_drv.h
··· 260 260 struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); 261 261 const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); 262 262 struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, 263 - struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd); 263 + struct drm_file *file, const struct drm_format_info *info, 264 + const struct drm_mode_fb_cmd2 *mode_cmd); 264 265 struct drm_framebuffer * msm_alloc_stolen_fb(struct drm_device *dev, 265 266 int w, int h, int p, uint32_t format); 266 267
+2 -4
drivers/gpu/drm/msm/msm_fb.c
··· 139 139 } 140 140 141 141 struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, 142 - struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) 142 + struct drm_file *file, const struct drm_format_info *info, 143 + const struct drm_mode_fb_cmd2 *mode_cmd) 143 144 { 144 - const struct drm_format_info *info = drm_get_format_info(dev, 145 - mode_cmd->pixel_format, 146 - mode_cmd->modifier[0]); 147 145 struct drm_gem_object *bos[4] = {0}; 148 146 struct drm_framebuffer *fb; 149 147 int ret, i, n = info->num_planes;
+2 -8
drivers/gpu/drm/mxsfb/mxsfb_drv.c
··· 91 91 92 92 static struct drm_framebuffer * 93 93 mxsfb_fb_create(struct drm_device *dev, struct drm_file *file_priv, 94 + const struct drm_format_info *info, 94 95 const struct drm_mode_fb_cmd2 *mode_cmd) 95 96 { 96 - const struct drm_format_info *info; 97 - 98 - info = drm_get_format_info(dev, mode_cmd->pixel_format, 99 - mode_cmd->modifier[0]); 100 - if (!info) 101 - return ERR_PTR(-EINVAL); 102 - 103 97 if (mode_cmd->width * info->cpp[0] != mode_cmd->pitches[0]) { 104 98 dev_dbg(dev->dev, "Invalid pitch: fb width must match pitch\n"); 105 99 return ERR_PTR(-EINVAL); 106 100 } 107 101 108 - return drm_gem_fb_create(dev, file_priv, mode_cmd); 102 + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); 109 103 } 110 104 111 105 static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = {
+1
drivers/gpu/drm/nouveau/nouveau_display.c
··· 333 333 struct drm_framebuffer * 334 334 nouveau_user_framebuffer_create(struct drm_device *dev, 335 335 struct drm_file *file_priv, 336 + const struct drm_format_info *info, 336 337 const struct drm_mode_fb_cmd2 *mode_cmd) 337 338 { 338 339 struct drm_framebuffer *fb;
+1
drivers/gpu/drm/nouveau/nouveau_display.h
··· 67 67 68 68 struct drm_framebuffer * 69 69 nouveau_user_framebuffer_create(struct drm_device *, struct drm_file *, 70 + const struct drm_format_info *, 70 71 const struct drm_mode_fb_cmd2 *); 71 72 #endif
+2 -4
drivers/gpu/drm/omapdrm/omap_fb.c
··· 335 335 #endif 336 336 337 337 struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, 338 - struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) 338 + struct drm_file *file, const struct drm_format_info *info, 339 + const struct drm_mode_fb_cmd2 *mode_cmd) 339 340 { 340 - const struct drm_format_info *info = drm_get_format_info(dev, 341 - mode_cmd->pixel_format, 342 - mode_cmd->modifier[0]); 343 341 unsigned int num_planes = info->num_planes; 344 342 struct drm_gem_object *bos[4]; 345 343 struct drm_framebuffer *fb;
+2 -1
drivers/gpu/drm/omapdrm/omap_fb.h
··· 20 20 struct seq_file; 21 21 22 22 struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, 23 - struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd); 23 + struct drm_file *file, const struct drm_format_info *info, 24 + const struct drm_mode_fb_cmd2 *mode_cmd); 24 25 struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, 25 26 const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos); 26 27 int omap_framebuffer_pin(struct drm_framebuffer *fb);
+1
drivers/gpu/drm/qxl/qxl_display.c
··· 1176 1176 static struct drm_framebuffer * 1177 1177 qxl_user_framebuffer_create(struct drm_device *dev, 1178 1178 struct drm_file *file_priv, 1179 + const struct drm_format_info *info, 1179 1180 const struct drm_mode_fb_cmd2 *mode_cmd) 1180 1181 { 1181 1182 return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd,
+1
drivers/gpu/drm/radeon/radeon_display.c
··· 1314 1314 static struct drm_framebuffer * 1315 1315 radeon_user_framebuffer_create(struct drm_device *dev, 1316 1316 struct drm_file *file_priv, 1317 + const struct drm_format_info *info, 1317 1318 const struct drm_mode_fb_cmd2 *mode_cmd) 1318 1319 { 1319 1320 struct drm_gem_object *obj;
+2 -1
drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c
··· 426 426 427 427 static struct drm_framebuffer * 428 428 rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, 429 + const struct drm_format_info *info, 429 430 const struct drm_mode_fb_cmd2 *mode_cmd) 430 431 { 431 432 struct rcar_du_device *rcdu = to_rcar_du_device(dev); ··· 491 490 } 492 491 } 493 492 494 - return drm_gem_fb_create(dev, file_priv, mode_cmd); 493 + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); 495 494 } 496 495 497 496 /* -----------------------------------------------------------------------------
+2 -1
drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c
··· 191 191 192 192 static struct drm_framebuffer * 193 193 rzg2l_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, 194 + const struct drm_format_info *info, 194 195 const struct drm_mode_fb_cmd2 *mode_cmd) 195 196 { 196 197 const struct rzg2l_du_format_info *format; ··· 215 214 return ERR_PTR(-EINVAL); 216 215 } 217 216 218 - return drm_gem_fb_create(dev, file_priv, mode_cmd); 217 + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); 219 218 } 220 219 221 220 /* -----------------------------------------------------------------------------
+2 -1
drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c
··· 117 117 118 118 static struct drm_framebuffer * 119 119 shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv, 120 + const struct drm_format_info *info, 120 121 const struct drm_mode_fb_cmd2 *mode_cmd) 121 122 { 122 123 const struct shmob_drm_format_info *format; ··· 145 144 } 146 145 } 147 146 148 - return drm_gem_fb_create(dev, file_priv, mode_cmd); 147 + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); 149 148 } 150 149 151 150 static const struct drm_mode_config_funcs shmob_drm_mode_config_funcs = {
+1 -6
drivers/gpu/drm/rockchip/rockchip_drm_fb.c
··· 30 30 31 31 static struct drm_framebuffer * 32 32 rockchip_fb_create(struct drm_device *dev, struct drm_file *file, 33 + const struct drm_format_info *info, 33 34 const struct drm_mode_fb_cmd2 *mode_cmd) 34 35 { 35 36 struct drm_afbc_framebuffer *afbc_fb; 36 - const struct drm_format_info *info; 37 37 int ret; 38 - 39 - info = drm_get_format_info(dev, mode_cmd->pixel_format, 40 - mode_cmd->modifier[0]); 41 - if (!info) 42 - return ERR_PTR(-ENOMEM); 43 38 44 39 afbc_fb = kzalloc(sizeof(*afbc_fb), GFP_KERNEL); 45 40 if (!afbc_fb)
+1
drivers/gpu/drm/tegra/drm.h
··· 190 190 unsigned int num_planes); 191 191 struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, 192 192 struct drm_file *file, 193 + const struct drm_format_info *info, 193 194 const struct drm_mode_fb_cmd2 *cmd); 194 195 195 196 #ifdef CONFIG_DRM_FBDEV_EMULATION
+1 -3
drivers/gpu/drm/tegra/fb.c
··· 132 132 133 133 struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, 134 134 struct drm_file *file, 135 + const struct drm_format_info *info, 135 136 const struct drm_mode_fb_cmd2 *cmd) 136 137 { 137 - const struct drm_format_info *info = drm_get_format_info(drm, 138 - cmd->pixel_format, 139 - cmd->modifier[0]); 140 138 struct tegra_bo *planes[4]; 141 139 struct drm_gem_object *gem; 142 140 struct drm_framebuffer *fb;
+1
drivers/gpu/drm/tests/drm_framebuffer_test.c
··· 363 363 364 364 static struct drm_framebuffer *fb_create_mock(struct drm_device *dev, 365 365 struct drm_file *file_priv, 366 + const struct drm_format_info *info, 366 367 const struct drm_mode_fb_cmd2 *mode_cmd) 367 368 { 368 369 struct drm_framebuffer_test_priv *priv = container_of(dev, typeof(*priv), dev);
+2 -1
drivers/gpu/drm/vc4/vc4_kms.c
··· 530 530 531 531 static struct drm_framebuffer *vc4_fb_create(struct drm_device *dev, 532 532 struct drm_file *file_priv, 533 + const struct drm_format_info *info, 533 534 const struct drm_mode_fb_cmd2 *mode_cmd) 534 535 { 535 536 struct vc4_dev *vc4 = to_vc4_dev(dev); ··· 569 568 mode_cmd = &mode_cmd_local; 570 569 } 571 570 572 - return drm_gem_fb_create(dev, file_priv, mode_cmd); 571 + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); 573 572 } 574 573 575 574 /* Our CTM has some peculiar limitations: we can only enable it for one CRTC
+1
drivers/gpu/drm/virtio/virtgpu_display.c
··· 293 293 static struct drm_framebuffer * 294 294 virtio_gpu_user_framebuffer_create(struct drm_device *dev, 295 295 struct drm_file *file_priv, 296 + const struct drm_format_info *info, 296 297 const struct drm_mode_fb_cmd2 *mode_cmd) 297 298 { 298 299 struct drm_gem_object *obj = NULL;
+1
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
··· 712 712 713 713 static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, 714 714 struct drm_file *file_priv, 715 + const struct drm_format_info *info, 715 716 const struct drm_mode_fb_cmd2 *mode_cmd) 716 717 { 717 718 struct vmw_private *dev_priv = vmw_priv(dev);
+1
drivers/gpu/drm/xen/xen_drm_front_kms.c
··· 54 54 55 55 static struct drm_framebuffer * 56 56 fb_create(struct drm_device *dev, struct drm_file *filp, 57 + const struct drm_format_info *info, 57 58 const struct drm_mode_fb_cmd2 *mode_cmd) 58 59 { 59 60 struct xen_drm_front_drm_info *drm_info = dev->dev_private;
+2 -1
drivers/gpu/drm/xlnx/zynqmp_kms.c
··· 373 373 374 374 static struct drm_framebuffer * 375 375 zynqmp_dpsub_fb_create(struct drm_device *drm, struct drm_file *file_priv, 376 + const struct drm_format_info *info, 376 377 const struct drm_mode_fb_cmd2 *mode_cmd) 377 378 { 378 379 struct zynqmp_dpsub *dpsub = to_zynqmp_dpsub(drm); ··· 384 383 for (i = 0; i < ARRAY_SIZE(cmd.pitches); ++i) 385 384 cmd.pitches[i] = ALIGN(cmd.pitches[i], dpsub->dma_align); 386 385 387 - return drm_gem_fb_create(drm, file_priv, &cmd); 386 + return drm_gem_fb_create(drm, file_priv, info, &cmd); 388 387 } 389 388 390 389 static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
+3
include/drm/drm_gem_framebuffer_helper.h
··· 8 8 struct drm_device; 9 9 struct drm_fb_helper_surface_size; 10 10 struct drm_file; 11 + struct drm_format_info; 11 12 struct drm_framebuffer; 12 13 struct drm_framebuffer_funcs; 13 14 struct drm_gem_object; ··· 33 32 const struct drm_framebuffer_funcs *funcs); 34 33 struct drm_framebuffer * 35 34 drm_gem_fb_create(struct drm_device *dev, struct drm_file *file, 35 + const struct drm_format_info *info, 36 36 const struct drm_mode_fb_cmd2 *mode_cmd); 37 37 struct drm_framebuffer * 38 38 drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, 39 + const struct drm_format_info *info, 39 40 const struct drm_mode_fb_cmd2 *mode_cmd); 40 41 41 42 int drm_gem_fb_vmap(struct drm_framebuffer *fb, struct iosys_map *map,
+1
include/drm/drm_mode_config.h
··· 82 82 */ 83 83 struct drm_framebuffer *(*fb_create)(struct drm_device *dev, 84 84 struct drm_file *file_priv, 85 + const struct drm_format_info *info, 85 86 const struct drm_mode_fb_cmd2 *mode_cmd); 86 87 87 88 /**