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

Configure Feed

Select the types of activity you want to include in your feed.

drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()

Pass along the format info from .fb_create() to eliminate the
redundant drm_get_format_info() calls from the gem fb code.

v2: Fix kernel docs (Laurent)

Cc: Dave Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: virtualization@lists.linux.dev
Cc: spice-devel@lists.freedesktop.org
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250701090722.13645-8-ville.syrjala@linux.intel.com

+16 -16
+10 -13
drivers/gpu/drm/drm_gem_framebuffer_helper.c
··· 68 68 static int 69 69 drm_gem_fb_init(struct drm_device *dev, 70 70 struct drm_framebuffer *fb, 71 + const struct drm_format_info *info, 71 72 const struct drm_mode_fb_cmd2 *mode_cmd, 72 73 struct drm_gem_object **obj, unsigned int num_planes, 73 74 const struct drm_framebuffer_funcs *funcs) ··· 76 75 unsigned int i; 77 76 int ret; 78 77 79 - drm_helper_mode_fill_fb_struct(dev, fb, NULL, mode_cmd); 78 + drm_helper_mode_fill_fb_struct(dev, fb, info, mode_cmd); 80 79 81 80 for (i = 0; i < num_planes; i++) 82 81 fb->obj[i] = obj[i]; ··· 137 136 * @dev: DRM device 138 137 * @fb: framebuffer object 139 138 * @file: DRM file that holds the GEM handle(s) backing the framebuffer 139 + * @info: pixel format information 140 140 * @mode_cmd: Metadata from the userspace framebuffer creation request 141 141 * @funcs: vtable to be used for the new framebuffer object 142 142 * ··· 154 152 int drm_gem_fb_init_with_funcs(struct drm_device *dev, 155 153 struct drm_framebuffer *fb, 156 154 struct drm_file *file, 155 + const struct drm_format_info *info, 157 156 const struct drm_mode_fb_cmd2 *mode_cmd, 158 157 const struct drm_framebuffer_funcs *funcs) 159 158 { 160 - const struct drm_format_info *info; 161 159 struct drm_gem_object *objs[DRM_FORMAT_MAX_PLANES]; 162 160 unsigned int i; 163 161 int ret; 164 - 165 - info = drm_get_format_info(dev, mode_cmd->pixel_format, 166 - mode_cmd->modifier[0]); 167 - if (!info) { 168 - drm_dbg_kms(dev, "Failed to get FB format info\n"); 169 - return -EINVAL; 170 - } 171 162 172 163 if (drm_drv_uses_atomic_modeset(dev) && 173 164 !drm_any_plane_has_format(dev, mode_cmd->pixel_format, ··· 196 201 } 197 202 } 198 203 199 - ret = drm_gem_fb_init(dev, fb, mode_cmd, objs, i, funcs); 204 + ret = drm_gem_fb_init(dev, fb, info, mode_cmd, objs, i, funcs); 200 205 if (ret) 201 206 goto err_gem_object_put; 202 207 ··· 217 222 * callback 218 223 * @dev: DRM device 219 224 * @file: DRM file that holds the GEM handle(s) backing the framebuffer 225 + * @info: pixel format information 220 226 * @mode_cmd: Metadata from the userspace framebuffer creation request 221 227 * @funcs: vtable to be used for the new framebuffer object 222 228 * ··· 230 234 */ 231 235 struct drm_framebuffer * 232 236 drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, 237 + const struct drm_format_info *info, 233 238 const struct drm_mode_fb_cmd2 *mode_cmd, 234 239 const struct drm_framebuffer_funcs *funcs) 235 240 { ··· 241 244 if (!fb) 242 245 return ERR_PTR(-ENOMEM); 243 246 244 - ret = drm_gem_fb_init_with_funcs(dev, fb, file, mode_cmd, funcs); 247 + ret = drm_gem_fb_init_with_funcs(dev, fb, file, info, mode_cmd, funcs); 245 248 if (ret) { 246 249 kfree(fb); 247 250 return ERR_PTR(ret); ··· 284 287 const struct drm_format_info *info, 285 288 const struct drm_mode_fb_cmd2 *mode_cmd) 286 289 { 287 - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, 290 + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, 288 291 &drm_gem_fb_funcs); 289 292 } 290 293 EXPORT_SYMBOL_GPL(drm_gem_fb_create); ··· 324 327 const struct drm_format_info *info, 325 328 const struct drm_mode_fb_cmd2 *mode_cmd) 326 329 { 327 - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, 330 + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, 328 331 &drm_gem_fb_funcs_dirtyfb); 329 332 } 330 333 EXPORT_SYMBOL_GPL(drm_gem_fb_create_with_dirty);
+1 -1
drivers/gpu/drm/qxl/qxl_display.c
··· 1179 1179 const struct drm_format_info *info, 1180 1180 const struct drm_mode_fb_cmd2 *mode_cmd) 1181 1181 { 1182 - return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd, 1182 + return drm_gem_fb_create_with_funcs(dev, file_priv, info, mode_cmd, 1183 1183 &qxl_fb_funcs); 1184 1184 } 1185 1185
+2 -1
drivers/gpu/drm/rockchip/rockchip_drm_fb.c
··· 40 40 if (!afbc_fb) 41 41 return ERR_PTR(-ENOMEM); 42 42 43 - ret = drm_gem_fb_init_with_funcs(dev, &afbc_fb->base, file, mode_cmd, 43 + ret = drm_gem_fb_init_with_funcs(dev, &afbc_fb->base, 44 + file, info, mode_cmd, 44 45 &rockchip_drm_fb_funcs); 45 46 if (ret) { 46 47 kfree(afbc_fb);
+1 -1
drivers/gpu/drm/xen/xen_drm_front_kms.c
··· 62 62 struct drm_gem_object *gem_obj; 63 63 int ret; 64 64 65 - fb = drm_gem_fb_create_with_funcs(dev, filp, mode_cmd, &fb_funcs); 65 + fb = drm_gem_fb_create_with_funcs(dev, filp, info, mode_cmd, &fb_funcs); 66 66 if (IS_ERR(fb)) 67 67 return fb; 68 68
+2
include/drm/drm_gem_framebuffer_helper.h
··· 25 25 int drm_gem_fb_init_with_funcs(struct drm_device *dev, 26 26 struct drm_framebuffer *fb, 27 27 struct drm_file *file, 28 + const struct drm_format_info *info, 28 29 const struct drm_mode_fb_cmd2 *mode_cmd, 29 30 const struct drm_framebuffer_funcs *funcs); 30 31 struct drm_framebuffer * 31 32 drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, 33 + const struct drm_format_info *info, 32 34 const struct drm_mode_fb_cmd2 *mode_cmd, 33 35 const struct drm_framebuffer_funcs *funcs); 34 36 struct drm_framebuffer *