Skip to content

Commit 3f019d7

Browse files
committed
drm/vmwgfx: 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. Cc: Zack Rusin <[email protected]> Cc: Broadcom internal kernel review list <[email protected]> Reviewed-by: Thomas Zimmermann <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent e7e9cde commit 3f019d7

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

drivers/gpu/drm/vmwgfx/vmwgfx_kms.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = {
500500
static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv,
501501
struct vmw_user_object *uo,
502502
struct vmw_framebuffer **out,
503+
const struct drm_format_info *info,
503504
const struct drm_mode_fb_cmd2
504505
*mode_cmd)
505506

@@ -548,7 +549,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv,
548549
goto out_err1;
549550
}
550551

551-
drm_helper_mode_fill_fb_struct(dev, &vfbs->base.base, NULL, mode_cmd);
552+
drm_helper_mode_fill_fb_struct(dev, &vfbs->base.base, info, mode_cmd);
552553
memcpy(&vfbs->uo, uo, sizeof(vfbs->uo));
553554
vmw_user_object_ref(&vfbs->uo);
554555

@@ -602,6 +603,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_bo_funcs = {
602603
static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv,
603604
struct vmw_bo *bo,
604605
struct vmw_framebuffer **out,
606+
const struct drm_format_info *info,
605607
const struct drm_mode_fb_cmd2
606608
*mode_cmd)
607609

@@ -634,7 +636,7 @@ static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv,
634636
}
635637

636638
vfbd->base.base.obj[0] = &bo->tbo.base;
637-
drm_helper_mode_fill_fb_struct(dev, &vfbd->base.base, NULL, mode_cmd);
639+
drm_helper_mode_fill_fb_struct(dev, &vfbd->base.base, info, mode_cmd);
638640
vfbd->base.bo = true;
639641
vfbd->buffer = vmw_bo_reference(bo);
640642
*out = &vfbd->base;
@@ -679,11 +681,13 @@ vmw_kms_srf_ok(struct vmw_private *dev_priv, uint32_t width, uint32_t height)
679681
* @dev_priv: Pointer to device private struct.
680682
* @uo: Pointer to user object to wrap the kms framebuffer around.
681683
* Either the buffer or surface inside the user object must be NULL.
684+
* @info: pixel format information.
682685
* @mode_cmd: Frame-buffer metadata.
683686
*/
684687
struct vmw_framebuffer *
685688
vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
686689
struct vmw_user_object *uo,
690+
const struct drm_format_info *info,
687691
const struct drm_mode_fb_cmd2 *mode_cmd)
688692
{
689693
struct vmw_framebuffer *vfb = NULL;
@@ -692,10 +696,10 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
692696
/* Create the new framebuffer depending one what we have */
693697
if (vmw_user_object_surface(uo)) {
694698
ret = vmw_kms_new_framebuffer_surface(dev_priv, uo, &vfb,
695-
mode_cmd);
699+
info, mode_cmd);
696700
} else if (uo->buffer) {
697701
ret = vmw_kms_new_framebuffer_bo(dev_priv, uo->buffer, &vfb,
698-
mode_cmd);
702+
info, mode_cmd);
699703
} else {
700704
BUG();
701705
}
@@ -742,7 +746,7 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
742746
}
743747

744748

745-
vfb = vmw_kms_new_framebuffer(dev_priv, &uo, mode_cmd);
749+
vfb = vmw_kms_new_framebuffer(dev_priv, &uo, info, mode_cmd);
746750
if (IS_ERR(vfb)) {
747751
ret = PTR_ERR(vfb);
748752
goto err_out;

drivers/gpu/drm/vmwgfx/vmwgfx_kms.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv,
399399
struct vmw_framebuffer *
400400
vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
401401
struct vmw_user_object *uo,
402+
const struct drm_format_info *info,
402403
const struct drm_mode_fb_cmd2 *mode_cmd);
403404
void vmw_guess_mode_timing(struct drm_display_mode *mode);
404405
void vmw_kms_update_implicit_fb(struct vmw_private *dev_priv);

0 commit comments

Comments
 (0)