@@ -847,58 +847,6 @@ static void vmw_framebuffer_surface_destroy(struct drm_framebuffer *framebuffer)
847
847
kfree (vfbs );
848
848
}
849
849
850
- static int vmw_framebuffer_surface_dirty (struct drm_framebuffer * framebuffer ,
851
- struct drm_file * file_priv ,
852
- unsigned flags , unsigned color ,
853
- struct drm_clip_rect * clips ,
854
- unsigned num_clips )
855
- {
856
- struct vmw_private * dev_priv = vmw_priv (framebuffer -> dev );
857
- struct vmw_framebuffer_surface * vfbs =
858
- vmw_framebuffer_to_vfbs (framebuffer );
859
- struct drm_clip_rect norect ;
860
- int ret , inc = 1 ;
861
-
862
- /* Legacy Display Unit does not support 3D */
863
- if (dev_priv -> active_display_unit == vmw_du_legacy )
864
- return - EINVAL ;
865
-
866
- drm_modeset_lock_all (dev_priv -> dev );
867
-
868
- ret = ttm_read_lock (& dev_priv -> reservation_sem , true);
869
- if (unlikely (ret != 0 )) {
870
- drm_modeset_unlock_all (dev_priv -> dev );
871
- return ret ;
872
- }
873
-
874
- if (!num_clips ) {
875
- num_clips = 1 ;
876
- clips = & norect ;
877
- norect .x1 = norect .y1 = 0 ;
878
- norect .x2 = framebuffer -> width ;
879
- norect .y2 = framebuffer -> height ;
880
- } else if (flags & DRM_MODE_FB_DIRTY_ANNOTATE_COPY ) {
881
- num_clips /= 2 ;
882
- inc = 2 ; /* skip source rects */
883
- }
884
-
885
- if (dev_priv -> active_display_unit == vmw_du_screen_object )
886
- ret = vmw_kms_sou_do_surface_dirty (dev_priv , & vfbs -> base ,
887
- clips , NULL , NULL , 0 , 0 ,
888
- num_clips , inc , NULL , NULL );
889
- else
890
- ret = vmw_kms_stdu_surface_dirty (dev_priv , & vfbs -> base ,
891
- clips , NULL , NULL , 0 , 0 ,
892
- num_clips , inc , NULL , NULL );
893
-
894
- vmw_fifo_flush (dev_priv , false);
895
- ttm_read_unlock (& dev_priv -> reservation_sem );
896
-
897
- drm_modeset_unlock_all (dev_priv -> dev );
898
-
899
- return 0 ;
900
- }
901
-
902
850
/**
903
851
* vmw_kms_readback - Perform a readback from the screen system to
904
852
* a buffer-object backed framebuffer.
@@ -942,7 +890,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv,
942
890
943
891
static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = {
944
892
.destroy = vmw_framebuffer_surface_destroy ,
945
- .dirty = vmw_framebuffer_surface_dirty ,
893
+ .dirty = drm_atomic_helper_dirtyfb ,
946
894
};
947
895
948
896
static int vmw_kms_new_framebuffer_surface (struct vmw_private * dev_priv ,
@@ -1085,16 +1033,6 @@ static int vmw_framebuffer_bo_dirty(struct drm_framebuffer *framebuffer,
1085
1033
}
1086
1034
1087
1035
switch (dev_priv -> active_display_unit ) {
1088
- case vmw_du_screen_target :
1089
- ret = vmw_kms_stdu_dma (dev_priv , NULL , & vfbd -> base , NULL ,
1090
- clips , NULL , num_clips , increment ,
1091
- true, true, NULL );
1092
- break ;
1093
- case vmw_du_screen_object :
1094
- ret = vmw_kms_sou_do_bo_dirty (dev_priv , & vfbd -> base ,
1095
- clips , NULL , num_clips ,
1096
- increment , true, NULL , NULL );
1097
- break ;
1098
1036
case vmw_du_legacy :
1099
1037
ret = vmw_kms_ldu_do_bo_dirty (dev_priv , & vfbd -> base , 0 , 0 ,
1100
1038
clips , num_clips , increment );
@@ -1113,9 +1051,25 @@ static int vmw_framebuffer_bo_dirty(struct drm_framebuffer *framebuffer,
1113
1051
return ret ;
1114
1052
}
1115
1053
1054
+ static int vmw_framebuffer_bo_dirty_ext (struct drm_framebuffer * framebuffer ,
1055
+ struct drm_file * file_priv ,
1056
+ unsigned int flags , unsigned int color ,
1057
+ struct drm_clip_rect * clips ,
1058
+ unsigned int num_clips )
1059
+ {
1060
+ struct vmw_private * dev_priv = vmw_priv (framebuffer -> dev );
1061
+
1062
+ if (dev_priv -> active_display_unit == vmw_du_legacy )
1063
+ return vmw_framebuffer_bo_dirty (framebuffer , file_priv , flags ,
1064
+ color , clips , num_clips );
1065
+
1066
+ return drm_atomic_helper_dirtyfb (framebuffer , file_priv , flags , color ,
1067
+ clips , num_clips );
1068
+ }
1069
+
1116
1070
static const struct drm_framebuffer_funcs vmw_framebuffer_bo_funcs = {
1117
1071
.destroy = vmw_framebuffer_bo_destroy ,
1118
- .dirty = vmw_framebuffer_bo_dirty ,
1072
+ .dirty = vmw_framebuffer_bo_dirty_ext ,
1119
1073
};
1120
1074
1121
1075
/**
0 commit comments