Skip to content

Commit 9e0e926

Browse files
committed
Don't create empty border batches
1 parent 199c72d commit 9e0e926

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

webrender/src/batch.rs

+27-23
Original file line numberDiff line numberDiff line change
@@ -975,23 +975,17 @@ impl AlphaBatchBuilder {
975975
let border_cpu =
976976
&ctx.prim_store.cpu_borders[prim_metadata.cpu_prim_index.0];
977977
// 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() {
995989
let sub_index = i as i32;
996990
match *instance_kind {
997991
BorderCornerInstance::None => {}
@@ -1018,12 +1012,22 @@ impl AlphaBatchBuilder {
10181012
}
10191013
}
10201014

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+
}
10271031
}
10281032
}
10291033
}

0 commit comments

Comments
 (0)