Bug 1695016 - Go back to 32 bits rendder task ids. r=gw

This is to work around fuzzers repeatedly finding test cases with 2^16 clip masks or other type of render tasks. Not something we would see in real pages nor something that we would handle well at all even with 32 bits ids but at least it won't get in the way of fuzzing.

Differential Revision: https://phabricator.services.mozilla.com/D116214
This commit is contained in:
Nicolas Silva 2021-05-31 08:38:27 +00:00
parent a5819a3e64
commit e5e52ca247
4 changed files with 11 additions and 11 deletions

View file

@ -383,6 +383,6 @@ fn test_struct_sizes() {
assert_eq!(mem::size_of::<NormalBorderTemplate>(), 216, "NormalBorderTemplate size changed");
assert_eq!(mem::size_of::<NormalBorderKey>(), 104, "NormalBorderKey size changed");
assert_eq!(mem::size_of::<ImageBorder>(), 84, "ImageBorder size changed");
assert_eq!(mem::size_of::<ImageBorderTemplate>(), 96, "ImageBorderTemplate size changed");
assert_eq!(mem::size_of::<ImageBorderTemplate>(), 104, "ImageBorderTemplate size changed");
assert_eq!(mem::size_of::<ImageBorderKey>(), 104, "ImageBorderKey size changed");
}

View file

@ -375,14 +375,14 @@ fn test_struct_sizes() {
// (b) You made a structure larger. This is not necessarily a problem, but should only
// be done with care, and after checking if talos performance regresses badly.
assert_eq!(mem::size_of::<LinearGradient>(), 72, "LinearGradient size changed");
assert_eq!(mem::size_of::<LinearGradientTemplate>(), 144, "LinearGradientTemplate size changed");
assert_eq!(mem::size_of::<LinearGradientTemplate>(), 152, "LinearGradientTemplate size changed");
assert_eq!(mem::size_of::<LinearGradientKey>(), 88, "LinearGradientKey size changed");
assert_eq!(mem::size_of::<RadialGradient>(), 72, "RadialGradient size changed");
assert_eq!(mem::size_of::<RadialGradientTemplate>(), 144, "RadialGradientTemplate size changed");
assert_eq!(mem::size_of::<RadialGradientTemplate>(), 152, "RadialGradientTemplate size changed");
assert_eq!(mem::size_of::<RadialGradientKey>(), 96, "RadialGradientKey size changed");
assert_eq!(mem::size_of::<ConicGradient>(), 72, "ConicGradient size changed");
assert_eq!(mem::size_of::<ConicGradientTemplate>(), 144, "ConicGradientTemplate size changed");
assert_eq!(mem::size_of::<ConicGradientTemplate>(), 152, "ConicGradientTemplate size changed");
assert_eq!(mem::size_of::<ConicGradientKey>(), 96, "ConicGradientKey size changed");
}

View file

@ -676,6 +676,6 @@ fn test_struct_sizes() {
assert_eq!(mem::size_of::<ImageTemplate>(), 72, "ImageTemplate size changed");
assert_eq!(mem::size_of::<ImageKey>(), 52, "ImageKey size changed");
assert_eq!(mem::size_of::<YuvImage>(), 32, "YuvImage size changed");
assert_eq!(mem::size_of::<YuvImageTemplate>(), 72, "YuvImageTemplate size changed");
assert_eq!(mem::size_of::<YuvImageTemplate>(), 84, "YuvImageTemplate size changed");
assert_eq!(mem::size_of::<YuvImageKey>(), 52, "YuvImageKey size changed");
}

View file

@ -51,7 +51,7 @@ impl<'l> RenderTaskAllocation<'l> {
#[inline(always)]
pub fn init(self, value: RenderTask) -> RenderTaskId {
RenderTaskId {
index: self.alloc.init(value) as u16,
index: self.alloc.init(value) as u32,
}
}
}
@ -61,12 +61,12 @@ impl<'l> RenderTaskAllocation<'l> {
#[cfg_attr(feature = "capture", derive(Serialize))]
#[cfg_attr(feature = "replay", derive(Deserialize))]
pub struct RenderTaskId {
pub index: u16,
pub index: u32,
}
impl RenderTaskId {
pub const INVALID: RenderTaskId = RenderTaskId {
index: u16::MAX,
index: u32::MAX,
};
}
@ -264,7 +264,7 @@ impl RenderTaskGraphBuilder {
pub fn add(&mut self) -> RenderTaskAllocation {
// Assume every task is a root to start with
self.roots.insert(
RenderTaskId { index: self.tasks.len() as u16 }
RenderTaskId { index: self.tasks.len() as u32 }
);
RenderTaskAllocation {
@ -385,7 +385,7 @@ impl RenderTaskGraphBuilder {
// Determine which pass each task can be freed on, which depends on which is
// the last task that has this as an input.
for i in 0 .. graph.tasks.len() {
let task_id = RenderTaskId { index: i as u16 };
let task_id = RenderTaskId { index: i as u32 };
assign_free_pass(
task_id,
&mut self.child_task_buffer,
@ -405,7 +405,7 @@ impl RenderTaskGraphBuilder {
// Assign tasks to each pass based on their `render_on` attribute
for (index, task) in graph.tasks.iter().enumerate() {
if task.kind.is_a_rendering_operation() {
let id = RenderTaskId { index: index as u16 };
let id = RenderTaskId { index: index as u32 };
graph.passes[task.render_on.0].task_ids.push(id);
}
}