@@ -32,14 +32,29 @@ static const struct drm_connector_helper_funcs vkms_conn_helper_funcs = {
32
32
.get_modes = vkms_conn_get_modes ,
33
33
};
34
34
35
+ static int vkms_add_overlay_plane (struct vkms_device * vkmsdev , int index ,
36
+ struct drm_crtc * crtc )
37
+ {
38
+ struct vkms_plane * overlay ;
39
+
40
+ overlay = vkms_plane_init (vkmsdev , DRM_PLANE_TYPE_OVERLAY , index );
41
+ if (IS_ERR (overlay ))
42
+ return PTR_ERR (overlay );
43
+
44
+ if (!overlay -> base .possible_crtcs )
45
+ overlay -> base .possible_crtcs = drm_crtc_mask (crtc );
46
+
47
+ return 0 ;
48
+ }
49
+
35
50
int vkms_output_init (struct vkms_device * vkmsdev , int index )
36
51
{
37
52
struct vkms_output * output = & vkmsdev -> output ;
38
53
struct drm_device * dev = & vkmsdev -> drm ;
39
54
struct drm_connector * connector = & output -> connector ;
40
55
struct drm_encoder * encoder = & output -> encoder ;
41
56
struct drm_crtc * crtc = & output -> crtc ;
42
- struct vkms_plane * primary , * cursor = NULL , * overlay = NULL ;
57
+ struct vkms_plane * primary , * cursor = NULL ;
43
58
int ret ;
44
59
int writeback ;
45
60
@@ -48,12 +63,9 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
48
63
return PTR_ERR (primary );
49
64
50
65
if (vkmsdev -> config -> overlay ) {
51
- overlay = vkms_plane_init (vkmsdev , DRM_PLANE_TYPE_OVERLAY , index );
52
- if (IS_ERR (overlay ))
53
- return PTR_ERR (overlay );
54
-
55
- if (!overlay -> base .possible_crtcs )
56
- overlay -> base .possible_crtcs = drm_crtc_mask (crtc );
66
+ ret = vkms_add_overlay_plane (vkmsdev , index , crtc );
67
+ if (ret )
68
+ return ret ;
57
69
}
58
70
59
71
if (vkmsdev -> config -> cursor ) {
0 commit comments