@@ -975,23 +975,17 @@ impl AlphaBatchBuilder {
975
975
let border_cpu =
976
976
& ctx. prim_store . cpu_borders [ prim_metadata. cpu_prim_index . 0 ] ;
977
977
// TODO(gw): Select correct blend mode for edges and corners!!
978
- let corner_kind = BatchKind :: Transformable (
979
- transform_kind,
980
- TransformBatchKind :: BorderCorner ,
981
- ) ;
982
- let corner_key = BatchKey :: new ( corner_kind, non_segmented_blend_mode, no_textures) ;
983
- let edge_kind = BatchKind :: Transformable (
984
- transform_kind,
985
- TransformBatchKind :: BorderEdge ,
986
- ) ;
987
- let edge_key = BatchKey :: new ( edge_kind, non_segmented_blend_mode, no_textures) ;
988
-
989
- // Work around borrow ck on borrowing batch_list twice.
990
- {
991
- let batch =
992
- self . batch_list . get_suitable_batch ( corner_key, & task_relative_bounding_rect) ;
993
- for ( i, instance_kind) in border_cpu. corner_instances . iter ( ) . enumerate ( )
994
- {
978
+
979
+ if border_cpu. corner_instances . iter ( ) . any ( |& kind| kind != BorderCornerInstance :: None ) {
980
+ let corner_kind = BatchKind :: Transformable (
981
+ transform_kind,
982
+ TransformBatchKind :: BorderCorner ,
983
+ ) ;
984
+ let corner_key = BatchKey :: new ( corner_kind, non_segmented_blend_mode, no_textures) ;
985
+ let batch = self . batch_list
986
+ . get_suitable_batch ( corner_key, & task_relative_bounding_rect) ;
987
+
988
+ for ( i, instance_kind) in border_cpu. corner_instances . iter ( ) . enumerate ( ) {
995
989
let sub_index = i as i32 ;
996
990
match * instance_kind {
997
991
BorderCornerInstance :: None => { }
@@ -1018,12 +1012,22 @@ impl AlphaBatchBuilder {
1018
1012
}
1019
1013
}
1020
1014
1021
- let batch = self . batch_list . get_suitable_batch ( edge_key, & task_relative_bounding_rect) ;
1022
- for ( border_segment, instance_kind) in border_cpu. edges . iter ( ) . enumerate ( ) {
1023
- match * instance_kind {
1024
- BorderEdgeKind :: None => { } ,
1025
- _ => {
1026
- batch. push ( base_instance. build ( border_segment as i32 , 0 , 0 ) ) ;
1015
+ if border_cpu. edges . iter ( ) . any ( |& kind| kind != BorderEdgeKind :: None ) {
1016
+ let edge_kind = BatchKind :: Transformable (
1017
+ transform_kind,
1018
+ TransformBatchKind :: BorderEdge ,
1019
+ ) ;
1020
+ let edge_key = BatchKey :: new ( edge_kind, non_segmented_blend_mode, no_textures) ;
1021
+ let batch = self . batch_list
1022
+ . get_suitable_batch ( edge_key, & task_relative_bounding_rect) ;
1023
+
1024
+ for ( border_segment, instance_kind) in border_cpu. edges . iter ( ) . enumerate ( ) {
1025
+ match * instance_kind {
1026
+ BorderEdgeKind :: None => { } ,
1027
+ BorderEdgeKind :: Solid |
1028
+ BorderEdgeKind :: Clip => {
1029
+ batch. push ( base_instance. build ( border_segment as i32 , 0 , 0 ) ) ;
1030
+ }
1027
1031
}
1028
1032
}
1029
1033
}
0 commit comments