forked from 1b-agent/fieldcraft-upstream
gpu: captures draw name labels; a shared capturer and a PNG with the CPU as last tier
render::draw_labels draws a scene's labels over finished pixels in the CPU rasterizer's font. capture::shared opens the process's device once by the FIELDCRAFT_GPU policy; capture::png draws on it or on the CPU and reports which (Renderer). Refs #422 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
fee978c7e4
commit
c9163e98ad
5 files changed
+134
-20
No files matched your search
@@ -29,3 +29,44 @@ pub enum GpuError {
|
||||
}
|
||||
|
||||
pub type Result<T> = std::result::Result<T, GpuError>;
|
||||
|
||||
/// The kind of device a picture was drawn on.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum Tier {
|
||||
Hardware,
|
||||
Software,
|
||||
}
|
||||
|
||||
impl Tier {
|
||||
pub fn label(self) -> &'static str {
|
||||
match self {
|
||||
Tier::Hardware => "hardware GPU",
|
||||
Tier::Software => "software GPU",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// What drew a picture.
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum Renderer {
|
||||
Gpu {
|
||||
adapter: String,
|
||||
tier: Tier,
|
||||
samples: u32,
|
||||
},
|
||||
/// The CPU rasterizer, and why when a GPU was wanted (`auto` with no usable GPU).
|
||||
Cpu {
|
||||
why: Option<String>,
|
||||
},
|
||||
}
|
||||
|
||||
impl Renderer {
|
||||
/// `"hardware"`, `"software"` or `"cpu"`.
|
||||
pub fn kind(&self) -> &'static str {
|
||||
match self {
|
||||
Renderer::Gpu { tier: Tier::Hardware, .. } => "hardware",
|
||||
Renderer::Gpu { tier: Tier::Software, .. } => "software",
|
||||
Renderer::Cpu { .. } => "cpu",
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user