Skip to main content

Crate damascene_vulkano

Crate damascene_vulkano 

Source
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 to damascene_wgpu::Runner.

Structs§

LayoutPrepared
What [RunnerCore::prepare_layout] returns: the resolved DrawOp list plus the redraw deadlines split into two lanes (see PrepareResult for the lane semantics).
PointerMove
Outcome of a pointer-move dispatch through [RunnerCore::pointer_moved] (or its backend wrappers).
PrepareResult
Reported back from each backend’s prepare(...) per frame.
PrepareTimings
Per-stage CPU timing inside each backend’s prepare. Cheap to compute (a handful of Instant::now() calls per frame) and useful for finding the dominant cost when frame budget is tight.
VulkanoAppTexture
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::Image for compositing via a damascene_core::tree::surface widget.
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 capability SampleRateShading”.