Skip to content

Commit 5fd9457

Browse files
committed
Removed the concept of a dummy mask task in favor of the VS-resolved task index sentinel
1 parent 4b7cb7b commit 5fd9457

File tree

2 files changed

+19
-32
lines changed

2 files changed

+19
-32
lines changed

webrender/res/prim_shared.glsl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,16 @@ struct ClipArea {
160160
};
161161

162162
ClipArea fetch_clip_area(int index) {
163-
RenderTaskData task = fetch_render_task(index);
164-
165163
ClipArea area;
166-
area.task_bounds = task.data0;
167-
area.screen_origin_target_index = task.data1;
164+
165+
if (index == 0x7FFFFFFF) { //special sentinel task index
166+
area.task_bounds = vec4(0.0, 0.0, 0.0, 0.0);
167+
area.screen_origin_target_index = vec4(0.0, 0.0, 0.0, 0.0);
168+
} else {
169+
RenderTaskData task = fetch_render_task(index);
170+
area.task_bounds = task.data0;
171+
area.screen_origin_target_index = task.data1;
172+
}
168173

169174
return area;
170175
}

webrender/src/tiling.rs

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use renderer::BlendMode;
2727
use resource_cache::ResourceCache;
2828
use std::cmp;
2929
use std::collections::{HashMap};
30-
use std::f32;
30+
use std::{i32, f32};
3131
use std::mem;
3232
use std::hash::{BuildHasherDefault};
3333
use std::sync::atomic::{AtomicUsize, Ordering};
@@ -186,14 +186,13 @@ impl AlphaBatchHelpers for PrimitiveStore {
186186
let layer_index = layer_index.0 as i32;
187187
let global_prim_id = prim_index.0 as i32;
188188
let prim_address = metadata.gpu_prim_index;
189-
let clip_task_index = {
190-
let mask_key = match metadata.clip_cache_info {
191-
Some(ref clip_info) => clip_info.key,
192-
None => MaskCacheKey::empty(StackingContextIndex(0)),
193-
};
194-
let cache_task_id = RenderTaskId::Dynamic(RenderTaskKey::CacheMask(mask_key));
195-
let cache_task_index = render_tasks.get_task_index(&cache_task_id, child_pass_index);
196-
cache_task_index.0 as i32
189+
let clip_task_index = match metadata.clip_cache_info {
190+
Some(ref clip_info) => {
191+
let cache_task_id = RenderTaskId::Dynamic(RenderTaskKey::CacheMask(clip_info.key));
192+
let cache_task_index = render_tasks.get_task_index(&cache_task_id, child_pass_index);
193+
cache_task_index.0 as i32
194+
},
195+
None => i32::MAX, //sentinel value for the dummy mask
197196
};
198197

199198
match &mut batch.data {
@@ -946,8 +945,8 @@ impl RenderTask {
946945
}
947946

948947
pub fn new_prim_cache(key: PrimitiveCacheKey,
949-
size: DeviceSize,
950-
prim_index: PrimitiveIndex) -> RenderTask {
948+
size: DeviceSize,
949+
prim_index: PrimitiveIndex) -> RenderTask {
951950
RenderTask {
952951
id: RenderTaskId::Dynamic(RenderTaskKey::CachePrimitive(key)),
953952
children: Vec::new(),
@@ -1660,19 +1659,6 @@ impl ScreenTile {
16601659
let mut sc_stack = Vec::new();
16611660
let mut current_task = RenderTask::new_alpha_batch(self.rect, ctx);
16621661
let mut alpha_task_stack = Vec::new();
1663-
let mut empty_mask_task = Some(RenderTask {
1664-
id: RenderTaskId::Dynamic(RenderTaskKey::CacheMask(
1665-
MaskCacheKey::empty(StackingContextIndex(0)) //CLIP TODO
1666-
)),
1667-
children: Vec::new(),
1668-
location: RenderTaskLocation::Dynamic(None,
1669-
DeviceSize::new(0, 0)),
1670-
kind: RenderTaskKind::CacheMask(CacheMaskTask {
1671-
actual_rect: DeviceRect::new(DevicePoint::new(0, 0),
1672-
DeviceSize::new(0, 0)),
1673-
image: None,
1674-
})
1675-
});
16761662

16771663
for cmd in self.cmds {
16781664
match cmd {
@@ -1750,10 +1736,6 @@ impl ScreenTile {
17501736
// meaning, no pixels will be visible, we can skip it entirely
17511737
continue;
17521738
}
1753-
} else {
1754-
if let Some(mask_task) = empty_mask_task.take() {
1755-
current_task.children.push(mask_task);
1756-
}
17571739
}
17581740

17591741
// Add any dynamic render tasks needed to render this primitive

0 commit comments

Comments
 (0)