Expand description
Native Vulkan backend for custom Damascene hosts.
Most applications should implement damascene_core::App and run it
through damascene-winit-wgpu. Use this crate directly when you are
validating backend parity or embedding Damascene into an existing Vulkan
renderer built on vulkano.
The public entry point is Runner. Its surface mirrors
damascene-wgpu::Runner where the GPU APIs allow it: the host owns the
window, device, queue, swapchain, and event loop; the runner owns
Damascene interaction state, layout/draw-op preparation, Vulkan
pipelines, text atlas images, and icon rendering.
WGSL remains the shader source language. This backend uses naga
to compile WGSL to SPIR-V when building pipelines so custom shader
fixtures can be shared with the wgpu backend.
Re-exports§
pub use naga_compile::CompileError;pub use naga_compile::wgsl_to_spirv;pub use runner::Runner;
Modules§
- naga_
compile - WGSL → SPIR-V compilation via
naga. - runner
damascene-vulkano::Runner— peer todamascene_wgpu::Runner.
Structs§
- Layout
Prepared - What [
RunnerCore::prepare_layout] returns: the resolvedDrawOplist plus the redraw deadlines split into two lanes (seePrepareResultfor the lane semantics). - Pointer
Move - Outcome of a pointer-move dispatch through
[
RunnerCore::pointer_moved] (or its backend wrappers). - Prepare
Result - Reported back from each backend’s
prepare(...)per frame. - Prepare
Timings - Per-stage CPU timing inside each backend’s
prepare. Cheap to compute (a handful ofInstant::now()calls per frame) and useful for finding the dominant cost when frame budget is tight. - Vulkano
AppTexture - Concrete vulkano-side
AppTextureBackend. Holds the image + a default-view + cached id so the runtime can downcast and bind the view directly into a descriptor set.
Functions§
- app_
texture - Wrap an app-allocated
vulkano::image::Imagefor compositing via adamascene_core::tree::surfacewidget. - required_
device_ features - Vulkan device features the runner’s stock pipelines depend on.
Hosts must merge this with their own required features when calling
Device::new(..., DeviceCreateInfo { enabled_features, .. })— otherwise pipeline construction panics with a SPIR-V validation error like “uses the SPIR-V capabilitySampleRateShading”.