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/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 <zack.rusin@broadcom.com>
Cc: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250701090722.13645-19-ville.syrjala@linux.intel.com

+10 -5
+9 -5
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
··· 500 500 static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv, 501 501 struct vmw_user_object *uo, 502 502 struct vmw_framebuffer **out, 503 + const struct drm_format_info *info, 503 504 const struct drm_mode_fb_cmd2 504 505 *mode_cmd) 505 506 ··· 549 548 goto out_err1; 550 549 } 551 550 552 - drm_helper_mode_fill_fb_struct(dev, &vfbs->base.base, NULL, mode_cmd); 551 + drm_helper_mode_fill_fb_struct(dev, &vfbs->base.base, info, mode_cmd); 553 552 memcpy(&vfbs->uo, uo, sizeof(vfbs->uo)); 554 553 vmw_user_object_ref(&vfbs->uo); 555 554 ··· 603 602 static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv, 604 603 struct vmw_bo *bo, 605 604 struct vmw_framebuffer **out, 605 + const struct drm_format_info *info, 606 606 const struct drm_mode_fb_cmd2 607 607 *mode_cmd) 608 608 ··· 636 634 } 637 635 638 636 vfbd->base.base.obj[0] = &bo->tbo.base; 639 - drm_helper_mode_fill_fb_struct(dev, &vfbd->base.base, NULL, mode_cmd); 637 + drm_helper_mode_fill_fb_struct(dev, &vfbd->base.base, info, mode_cmd); 640 638 vfbd->base.bo = true; 641 639 vfbd->buffer = vmw_bo_reference(bo); 642 640 *out = &vfbd->base; ··· 681 679 * @dev_priv: Pointer to device private struct. 682 680 * @uo: Pointer to user object to wrap the kms framebuffer around. 683 681 * Either the buffer or surface inside the user object must be NULL. 682 + * @info: pixel format information. 684 683 * @mode_cmd: Frame-buffer metadata. 685 684 */ 686 685 struct vmw_framebuffer * 687 686 vmw_kms_new_framebuffer(struct vmw_private *dev_priv, 688 687 struct vmw_user_object *uo, 688 + const struct drm_format_info *info, 689 689 const struct drm_mode_fb_cmd2 *mode_cmd) 690 690 { 691 691 struct vmw_framebuffer *vfb = NULL; ··· 696 692 /* Create the new framebuffer depending one what we have */ 697 693 if (vmw_user_object_surface(uo)) { 698 694 ret = vmw_kms_new_framebuffer_surface(dev_priv, uo, &vfb, 699 - mode_cmd); 695 + info, mode_cmd); 700 696 } else if (uo->buffer) { 701 697 ret = vmw_kms_new_framebuffer_bo(dev_priv, uo->buffer, &vfb, 702 - mode_cmd); 698 + info, mode_cmd); 703 699 } else { 704 700 BUG(); 705 701 } ··· 746 742 } 747 743 748 744 749 - vfb = vmw_kms_new_framebuffer(dev_priv, &uo, mode_cmd); 745 + vfb = vmw_kms_new_framebuffer(dev_priv, &uo, info, mode_cmd); 750 746 if (IS_ERR(vfb)) { 751 747 ret = PTR_ERR(vfb); 752 748 goto err_out;
+1
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
··· 399 399 struct vmw_framebuffer * 400 400 vmw_kms_new_framebuffer(struct vmw_private *dev_priv, 401 401 struct vmw_user_object *uo, 402 + const struct drm_format_info *info, 402 403 const struct drm_mode_fb_cmd2 *mode_cmd); 403 404 void vmw_guess_mode_timing(struct drm_display_mode *mode); 404 405 void vmw_kms_update_implicit_fb(struct vmw_private *dev_priv);