Skip to content

Commit 800df9e

Browse files
committed
drm/i915: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup. For the fbdev case a manual drm_get_format_info() lookup is needed. Reviewed-by: Thomas Zimmermann <[email protected]> Acked-by: Rodrigo Vivi <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 4a792c5 commit 800df9e

File tree

6 files changed

+20
-7
lines changed

6 files changed

+20
-7
lines changed

drivers/gpu/drm/i915/display/intel_fb.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2207,6 +2207,7 @@ static const struct drm_framebuffer_funcs intel_fb_funcs = {
22072207

22082208
int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
22092209
struct drm_gem_object *obj,
2210+
const struct drm_format_info *info,
22102211
struct drm_mode_fb_cmd2 *mode_cmd)
22112212
{
22122213
struct intel_display *display = to_intel_display(obj->dev);
@@ -2254,7 +2255,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
22542255
goto err_frontbuffer_put;
22552256
}
22562257

2257-
drm_helper_mode_fill_fb_struct(display->drm, fb, NULL, mode_cmd);
2258+
drm_helper_mode_fill_fb_struct(display->drm, fb, info, mode_cmd);
22582259

22592260
for (i = 0; i < fb->format->num_planes; i++) {
22602261
unsigned int stride_alignment;
@@ -2335,14 +2336,15 @@ intel_user_framebuffer_create(struct drm_device *dev,
23352336
if (IS_ERR(obj))
23362337
return ERR_CAST(obj);
23372338

2338-
fb = intel_framebuffer_create(obj, &mode_cmd);
2339+
fb = intel_framebuffer_create(obj, info, &mode_cmd);
23392340
drm_gem_object_put(obj);
23402341

23412342
return fb;
23422343
}
23432344

23442345
struct drm_framebuffer *
23452346
intel_framebuffer_create(struct drm_gem_object *obj,
2347+
const struct drm_format_info *info,
23462348
struct drm_mode_fb_cmd2 *mode_cmd)
23472349
{
23482350
struct intel_framebuffer *intel_fb;
@@ -2352,7 +2354,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,
23522354
if (!intel_fb)
23532355
return ERR_PTR(-ENOMEM);
23542356

2355-
ret = intel_framebuffer_init(intel_fb, obj, mode_cmd);
2357+
ret = intel_framebuffer_init(intel_fb, obj, info, mode_cmd);
23562358
if (ret)
23572359
goto err;
23582360

drivers/gpu/drm/i915/display/intel_fb.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,11 @@ void intel_add_fb_offsets(int *x, int *y,
102102

103103
int intel_framebuffer_init(struct intel_framebuffer *ifb,
104104
struct drm_gem_object *obj,
105+
const struct drm_format_info *info,
105106
struct drm_mode_fb_cmd2 *mode_cmd);
106107
struct drm_framebuffer *
107108
intel_framebuffer_create(struct drm_gem_object *obj,
109+
const struct drm_format_info *info,
108110
struct drm_mode_fb_cmd2 *mode_cmd);
109111
struct drm_framebuffer *
110112
intel_user_framebuffer_create(struct drm_device *dev,

drivers/gpu/drm/i915/display/intel_fbdev_fb.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper,
6262
return ERR_PTR(-ENOMEM);
6363
}
6464

65-
fb = intel_framebuffer_create(intel_bo_to_drm_bo(obj), &mode_cmd);
65+
fb = intel_framebuffer_create(intel_bo_to_drm_bo(obj),
66+
drm_get_format_info(display->drm,
67+
mode_cmd.pixel_format,
68+
mode_cmd.modifier[0]),
69+
&mode_cmd);
6670
i915_gem_object_put(obj);
6771

6872
return to_intel_framebuffer(fb);

drivers/gpu/drm/i915/display/intel_plane_initial.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,8 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
289289
mode_cmd.flags = DRM_MODE_FB_MODIFIERS;
290290

291291
if (intel_framebuffer_init(to_intel_framebuffer(fb),
292-
intel_bo_to_drm_bo(vma->obj), &mode_cmd)) {
292+
intel_bo_to_drm_bo(vma->obj),
293+
fb->format, &mode_cmd)) {
293294
drm_dbg_kms(display->drm, "intel fb init failed\n");
294295
goto err_vma;
295296
}

drivers/gpu/drm/xe/display/intel_fbdev_fb.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper,
6666
goto err;
6767
}
6868

69-
fb = intel_framebuffer_create(&obj->ttm.base, &mode_cmd);
69+
fb = intel_framebuffer_create(&obj->ttm.base,
70+
drm_get_format_info(dev,
71+
mode_cmd.pixel_format,
72+
mode_cmd.modifier[0]),
73+
&mode_cmd);
7074
if (IS_ERR(fb)) {
7175
xe_bo_unpin_map_no_vm(obj);
7276
goto err;

drivers/gpu/drm/xe/display/xe_plane_initial.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
184184
return false;
185185

186186
if (intel_framebuffer_init(to_intel_framebuffer(fb),
187-
&bo->ttm.base, &mode_cmd)) {
187+
&bo->ttm.base, fb->format, &mode_cmd)) {
188188
drm_dbg_kms(&xe->drm, "intel fb init failed\n");
189189
goto err_bo;
190190
}

0 commit comments

Comments
 (0)