@@ -500,6 +500,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = {
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
@@ -548,7 +549,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv,
548
549
goto out_err1 ;
549
550
}
550
551
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 );
552
553
memcpy (& vfbs -> uo , uo , sizeof (vfbs -> uo ));
553
554
vmw_user_object_ref (& vfbs -> uo );
554
555
@@ -602,6 +603,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_bo_funcs = {
602
603
static int vmw_kms_new_framebuffer_bo (struct vmw_private * dev_priv ,
603
604
struct vmw_bo * bo ,
604
605
struct vmw_framebuffer * * out ,
606
+ const struct drm_format_info * info ,
605
607
const struct drm_mode_fb_cmd2
606
608
* mode_cmd )
607
609
@@ -634,7 +636,7 @@ static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv,
634
636
}
635
637
636
638
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 );
638
640
vfbd -> base .bo = true;
639
641
vfbd -> buffer = vmw_bo_reference (bo );
640
642
* out = & vfbd -> base ;
@@ -679,11 +681,13 @@ vmw_kms_srf_ok(struct vmw_private *dev_priv, uint32_t width, uint32_t height)
679
681
* @dev_priv: Pointer to device private struct.
680
682
* @uo: Pointer to user object to wrap the kms framebuffer around.
681
683
* Either the buffer or surface inside the user object must be NULL.
684
+ * @info: pixel format information.
682
685
* @mode_cmd: Frame-buffer metadata.
683
686
*/
684
687
struct vmw_framebuffer *
685
688
vmw_kms_new_framebuffer (struct vmw_private * dev_priv ,
686
689
struct vmw_user_object * uo ,
690
+ const struct drm_format_info * info ,
687
691
const struct drm_mode_fb_cmd2 * mode_cmd )
688
692
{
689
693
struct vmw_framebuffer * vfb = NULL ;
@@ -692,10 +696,10 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
692
696
/* Create the new framebuffer depending one what we have */
693
697
if (vmw_user_object_surface (uo )) {
694
698
ret = vmw_kms_new_framebuffer_surface (dev_priv , uo , & vfb ,
695
- mode_cmd );
699
+ info , mode_cmd );
696
700
} else if (uo -> buffer ) {
697
701
ret = vmw_kms_new_framebuffer_bo (dev_priv , uo -> buffer , & vfb ,
698
- mode_cmd );
702
+ info , mode_cmd );
699
703
} else {
700
704
BUG ();
701
705
}
@@ -742,7 +746,7 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
742
746
}
743
747
744
748
745
- vfb = vmw_kms_new_framebuffer (dev_priv , & uo , mode_cmd );
749
+ vfb = vmw_kms_new_framebuffer (dev_priv , & uo , info , mode_cmd );
746
750
if (IS_ERR (vfb )) {
747
751
ret = PTR_ERR (vfb );
748
752
goto err_out ;
0 commit comments