@@ -500,6 +500,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = {
500500static 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 = {
602603static 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 */
684687struct vmw_framebuffer *
685688vmw_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 ;
0 commit comments