blob: 7539a98083a14a18cb95ef78afad5b87c33903e6 [file] [log] [blame] [edit]
// Copyright 2023 the Vello Authors
// SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
use vello_encoding::{BumpAllocators, ConfigUniform, Path, Tile};
use super::CpuBinding;
fn backdrop_main(config: &ConfigUniform, _: &BumpAllocators, paths: &[Path], tiles: &mut [Tile]) {
for drawobj_ix in 0..config.layout.n_draw_objects {
let path = paths[drawobj_ix as usize];
let width = path.bbox[2] - path.bbox[0];
let height = path.bbox[3] - path.bbox[1];
let base = path.tiles;
for y in 0..height {
let mut sum = 0;
for x in 0..width {
let tile = &mut tiles[(base + y * width + x) as usize];
sum += tile.backdrop;
tile.backdrop = sum;
}
}
}
}
pub fn backdrop(_n_wg: u32, resources: &[CpuBinding<'_>]) {
let config = resources[0].as_typed();
let bump = resources[1].as_typed();
let paths = resources[2].as_slice();
let mut tiles = resources[3].as_slice_mut();
backdrop_main(&config, &bump, &paths, &mut tiles);
}