Workaround to disable stroked glyphs The current pipeline only works with fills, not strokes, and unexpected behavior can occur. Strokes are simply disabled in the main encoding pipeline, but were still possible through glyphs. Also adds some asserts, which we might not keep.
diff --git a/crates/encoding/src/glyph_cache.rs b/crates/encoding/src/glyph_cache.rs index b1ff693..44b0fba 100644 --- a/crates/encoding/src/glyph_cache.rs +++ b/crates/encoding/src/glyph_cache.rs
@@ -44,7 +44,8 @@ match style { Style::Fill(Fill::NonZero) => encoding_cache.encode_linewidth(-1.0), Style::Fill(Fill::EvenOdd) => encoding_cache.encode_linewidth(-2.0), - Style::Stroke(stroke) => encoding_cache.encode_linewidth(stroke.width), + // TODO: don't commit to main, this is a hack + Style::Stroke(_stroke) => encoding_cache.encode_linewidth(-1.0), } let mut path = encoding_cache.encode_path(is_fill); scaler
diff --git a/src/cpu_shader/coarse.rs b/src/cpu_shader/coarse.rs index a346382..feb4b96 100644 --- a/src/cpu_shader/coarse.rs +++ b/src/cpu_shader/coarse.rs
@@ -246,15 +246,20 @@ // TODO: get drawinfo (linewidth for fills) match DrawTag(drawtag) { DrawTag::COLOR => { + let linewidth = f32::from_bits(info_bin_data[di as usize]); tile_state.write_path(config, bump, ptcl, tile); let rgba_color = scene[dd as usize]; tile_state.write_color(config, bump, ptcl, rgba_color); } DrawTag::IMAGE => { + let linewidth = f32::from_bits(info_bin_data[di as usize]); + assert!(linewidth < 0.0); tile_state.write_path(config, bump, ptcl, tile); tile_state.write_image(config, bump, ptcl, di + 1); } DrawTag::LINEAR_GRADIENT => { + let linewidth = f32::from_bits(info_bin_data[di as usize]); + assert!(linewidth < 0.0); tile_state.write_path(config, bump, ptcl, tile); let index = scene[dd as usize]; tile_state.write_grad( @@ -267,6 +272,8 @@ ); } DrawTag::RADIAL_GRADIENT => { + let linewidth = f32::from_bits(info_bin_data[di as usize]); + assert!(linewidth < 0.0); tile_state.write_path(config, bump, ptcl, tile); let index = scene[dd as usize]; tile_state.write_grad(
diff --git a/src/shaders.rs b/src/shaders.rs index 0d21501..95065a7 100644 --- a/src/shaders.rs +++ b/src/shaders.rs
@@ -305,7 +305,7 @@ preprocess::preprocess(shader!("path_tiling_setup"), &empty, &imports).into(), &[BindType::BufReadOnly, BindType::Buffer], )?; - engine.set_cpu_shader(path_tiling_setup, cpu_shader::path_tiling_setup); + //engine.set_cpu_shader(path_tiling_setup, cpu_shader::path_tiling_setup); let path_tiling = engine.add_shader( device, "path_tiling", @@ -319,7 +319,7 @@ BindType::Buffer, ], )?; - engine.set_cpu_shader(path_tiling, cpu_shader::path_tiling); + //engine.set_cpu_shader(path_tiling, cpu_shader::path_tiling); let fine = engine.add_shader( device, "fine",