@@ -1041,7 +1041,6 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane,
1041
1041
struct vmw_plane_state * vps = vmw_plane_state_to_vps (new_state );
1042
1042
enum stdu_content_type new_content_type ;
1043
1043
struct vmw_framebuffer_surface * new_vfbs ;
1044
- struct drm_crtc * crtc = new_state -> crtc ;
1045
1044
uint32_t hdisplay = new_state -> crtc_w , vdisplay = new_state -> crtc_h ;
1046
1045
int ret ;
1047
1046
@@ -1068,12 +1067,11 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane,
1068
1067
new_content_type = SEPARATE_SURFACE ;
1069
1068
1070
1069
if (new_content_type != SAME_AS_DISPLAY ) {
1071
- struct vmw_surface content_srf ;
1072
- struct drm_vmw_size display_base_size = {0 };
1070
+ struct vmw_surface_metadata metadata = {0 };
1073
1071
1074
- display_base_size . width = hdisplay ;
1075
- display_base_size .height = vdisplay ;
1076
- display_base_size . depth = 1 ;
1072
+ metadata . base_size . width = hdisplay ;
1073
+ metadata . base_size .height = vdisplay ;
1074
+ metadata . base_size . depth = 1 ;
1077
1075
1078
1076
/*
1079
1077
* If content buffer is a buffer object, then we have to
@@ -1083,62 +1081,45 @@ vmw_stdu_primary_plane_prepare_fb(struct drm_plane *plane,
1083
1081
1084
1082
switch (new_fb -> format -> cpp [0 ]* 8 ) {
1085
1083
case 32 :
1086
- content_srf . metadata .format = SVGA3D_X8R8G8B8 ;
1084
+ metadata .format = SVGA3D_X8R8G8B8 ;
1087
1085
break ;
1088
1086
1089
1087
case 16 :
1090
- content_srf . metadata .format = SVGA3D_R5G6B5 ;
1088
+ metadata .format = SVGA3D_R5G6B5 ;
1091
1089
break ;
1092
1090
1093
1091
case 8 :
1094
- content_srf . metadata .format = SVGA3D_P8 ;
1092
+ metadata .format = SVGA3D_P8 ;
1095
1093
break ;
1096
1094
1097
1095
default :
1098
1096
DRM_ERROR ("Invalid format\n" );
1099
1097
return - EINVAL ;
1100
1098
}
1101
1099
1102
- content_srf .metadata .flags = 0 ;
1103
- content_srf .metadata .mip_levels [0 ] = 1 ;
1104
- content_srf .metadata .multisample_count = 0 ;
1105
- content_srf .metadata .multisample_pattern =
1106
- SVGA3D_MS_PATTERN_NONE ;
1107
- content_srf .metadata .quality_level =
1108
- SVGA3D_MS_QUALITY_NONE ;
1100
+ metadata .mip_levels [0 ] = 1 ;
1101
+ metadata .num_sizes = 1 ;
1102
+ metadata .scanout = true;
1109
1103
} else {
1110
- content_srf = * new_vfbs -> surface ;
1104
+ metadata = new_vfbs -> surface -> metadata ;
1111
1105
}
1112
1106
1113
1107
if (vps -> surf ) {
1114
1108
struct drm_vmw_size cur_base_size =
1115
1109
vps -> surf -> metadata .base_size ;
1116
1110
1117
- if (cur_base_size .width != display_base_size .width ||
1118
- cur_base_size .height != display_base_size .height ||
1119
- vps -> surf -> metadata .format !=
1120
- content_srf .metadata .format ) {
1111
+ if (cur_base_size .width != metadata .base_size .width ||
1112
+ cur_base_size .height != metadata .base_size .height ||
1113
+ vps -> surf -> metadata .format != metadata .format ) {
1121
1114
WARN_ON (vps -> pinned != 0 );
1122
1115
vmw_surface_unreference (& vps -> surf );
1123
1116
}
1124
1117
1125
1118
}
1126
1119
1127
1120
if (!vps -> surf ) {
1128
- ret = vmw_surface_gb_priv_define
1129
- (crtc -> dev ,
1130
- /* Kernel visible only */
1131
- 0 ,
1132
- content_srf .metadata .flags ,
1133
- content_srf .metadata .format ,
1134
- true, /* a scanout buffer */
1135
- content_srf .metadata .mip_levels [0 ],
1136
- content_srf .metadata .multisample_count ,
1137
- 0 ,
1138
- display_base_size ,
1139
- content_srf .metadata .multisample_pattern ,
1140
- content_srf .metadata .quality_level ,
1141
- & vps -> surf );
1121
+ ret = vmw_gb_surface_define (dev_priv , 0 , & metadata ,
1122
+ & vps -> surf );
1142
1123
if (ret != 0 ) {
1143
1124
DRM_ERROR ("Couldn't allocate STDU surface.\n" );
1144
1125
return ret ;
0 commit comments