mirror of
https://github.com/italicsjenga/vello.git
synced 2025-01-10 20:51:29 +11:00
6f707c4c62
WIP. Most of the GPU-side work should be done (though it's not tested end-to-end and it's certainly possible I missed something), but still needs work on encoding side.
52 lines
1.2 KiB
Rust
52 lines
1.2 KiB
Rust
use piet_gpu_derive::piet_gpu;
|
|
|
|
piet_gpu! {
|
|
#[gpu_write]
|
|
mod ptcl {
|
|
struct CmdStroke {
|
|
// This is really a Ref<Tile>, but we don't have cross-module
|
|
// references.
|
|
tile_ref: u32,
|
|
half_width: f32,
|
|
}
|
|
struct CmdFill {
|
|
// As above, really Ref<Tile>
|
|
tile_ref: u32,
|
|
backdrop: i32,
|
|
}
|
|
struct CmdColor {
|
|
rgba_color: u32,
|
|
}
|
|
struct CmdLinGrad {
|
|
index: u32,
|
|
// line equation for gradient
|
|
line_x: f32,
|
|
line_y: f32,
|
|
line_c: f32,
|
|
}
|
|
struct CmdImage {
|
|
index: u32,
|
|
offset: [i16; 2],
|
|
}
|
|
struct CmdAlpha {
|
|
alpha: f32,
|
|
}
|
|
struct CmdJump {
|
|
new_ref: u32,
|
|
}
|
|
enum Cmd {
|
|
End,
|
|
Fill(CmdFill),
|
|
Stroke(CmdStroke),
|
|
Solid,
|
|
Alpha(CmdAlpha),
|
|
Color(CmdColor),
|
|
LinGrad(CmdLinGrad),
|
|
Image(CmdImage),
|
|
BeginClip,
|
|
EndClip,
|
|
Jump(CmdJump),
|
|
}
|
|
}
|
|
}
|