Browser WebGPU renderer with Canvas2D fallback providers for MoUI
Dependencies
WebGpuWasmRenderer
-> WebGpuHostRendererPort
-> wasm-gc webgpu imports today
-> WIT/component resources latercapabilities:
webgpu_available, adapter_ready, can_render
strings:
begin_create_string, string_append_char, finish_create_string
surface:
create_surface, surface_is_valid, surface_resize, surface_dispose
renderer:
create_renderer, renderer_is_valid, renderer_resize, begin_frame,
clear, fill_rect, stroke_rect, fill_rounded_rect, stroke_rounded_rect,
draw_text, draw_image, push_clip, pop_clip, push_transform, pop_transform,
push_opacity, pop_opacity, present, renderer_disposeHostWebGpuSurface handle -> resource surface
HostWebGpuRenderer handle -> resource renderer
WebGpuHostRendererPort -> generated WIT adapter implementationfn WebGpuHostAdapterInfo::new(renderer~ : RendererBackendInfo, surface_contract~ : WgpuSurfaceContract, imports~ : WebGpuHostImportInfo, capabilities~ : WebGpuHostCapabilities, description? : String) -> WebGpuHostAdapterInfopub(all) enum WebGpuHostCall {
BeginFrame(Size)
Clear(Color)
FillRect(Rect, Color)
StrokeRect(Rect, Color, Double)
FillRoundedRect(RoundedRect, Color)
StrokeRoundedRect(RoundedRect, Color, Double)
FillRoundedRectBrush(RoundedRect, Brush)
StrokeRoundedRectBrush(RoundedRect, Brush, Double)
DrawShadow(ShadowSpec)
DrawText(TextRun)
DrawImage(ImageRun)
DrawPath(PathSpec)
PushClip(Rect)
PopClip
PushRoundedClip(RoundedRect)
PopRoundedClip
PushTransform(Transform2D)
PopTransform
PushOpacity(Double)
PopOpacity
PushLayer(LayerSpec)
PopLayer
PushFilter(FilterEffect)
PopFilter
DrawShaderEffect(ShaderEffectSpec)
Present
} derive(Eq, ToJson, Debug)fn WebGpuHostCapabilities::new(webgpu_available? : Bool, adapter_ready? : Bool, can_render? : Bool) -> WebGpuHostCapabilitiesfn WebGpuHostImportInfo::new(import_module~ : String, target~ : String, surface_resource~ : String, renderer_resource~ : String, description? : String) -> WebGpuHostImportInfopub struct WebGpuHostRendererPort {
// private fields
}fn WebGpuHostRendererPort::capabilities(self : WebGpuHostRendererPort) -> WebGpuHostCapabilities raise WebGpuHostErrorfn WebGpuHostRendererPort::create_renderer(self : WebGpuHostRendererPort, surface : WebGpuHostSurface) -> Unit raise WebGpuHostErrorfn WebGpuHostRendererPort::create_surface(self : WebGpuHostRendererPort, canvas_id : String, metrics : SurfaceMetrics) -> WebGpuHostSurface raise WebGpuHostErrorfn WebGpuHostRendererPort::image_resource(self : WebGpuHostRendererPort, source : String) -> ImageResourceRecord?fn WebGpuHostRendererPort::measure_text(self : WebGpuHostRendererPort, input : TextLayoutInput) -> TextLayoutResultfn WebGpuHostRendererPort::new(capabilities~ : () -> WebGpuHostCapabilities raise WebGpuHostError, create_surface~ : (String, SurfaceMetrics) -> WebGpuHostSurface raise WebGpuHostError, create_renderer~ : (WebGpuHostSurface) -> Unit raise WebGpuHostError, resize~ : (SurfaceMetrics) -> Unit raise WebGpuHostError, measure_text~ : (TextLayoutInput) -> TextLayoutResult, register_font_data~ : (FontFamily, Bytes) -> Unit, image_resource~ : (String) -> ImageResourceRecord?, submit~ : (Array[WebGpuHostCall]) -> Unit raise WebGpuHostError, dispose~ : () -> Unit) -> WebGpuHostRendererPortfn WebGpuHostRendererPort::register_font_data(self : WebGpuHostRendererPort, family : FontFamily, data : Bytes) -> Unitfn WebGpuHostRendererPort::resize(self : WebGpuHostRendererPort, metrics : SurfaceMetrics) -> Unit raise WebGpuHostErrorfn WebGpuHostRendererPort::submit(self : WebGpuHostRendererPort, calls : Array[WebGpuHostCall]) -> Unit raise WebGpuHostErrorpub struct WebGpuWasmRenderer {
// private fields
}fn WebGpuWasmRenderer::apply_image_resource_load_completion(self : WebGpuWasmRenderer, completion : ImageResourceLoadCompletion) -> Boolfn WebGpuWasmRenderer::render(self : WebGpuWasmRenderer, commands : Array[DrawCommand]) -> Unit raise WebGpuHostErrorfn WebGpuWasmRenderer::render_frame(self : WebGpuWasmRenderer, frame : DrawFrame) -> RenderFrameResultfn WebGpuWasmRenderer::resize(self : WebGpuWasmRenderer, metrics : SurfaceMetrics) -> Unit raise WebGpuHostErrorfn browser_canvas2d_fallback_capabilities(provider_id~ : String, backend~ : RendererBackendKind) -> Array[RendererBackendFeatureCapability]fn create_browser_canvas2d_fallback_provider(bind~ : (HostSurface) -> RendererBindResult) -> RendererProviderfn create_renderer(canvas_id~ : String, logical_size~ : Size, scale_factor? : Double, port~ : WebGpuHostRendererPort) -> WebGpuWasmRenderer raise WebGpuHostErrorfn create_surface(canvas_id~ : String, logical_size~ : Size, scale_factor? : Double, port~ : WebGpuHostRendererPort) -> WebGpuHostSurface raise WebGpuHostErrorfn create_webgpu_renderer(canvas_id~ : String, logical_size~ : Size, scale_factor? : Double) -> WebGpuWasmRenderer raise WebGpuHostErrorfn webgpu_provider_capabilities(provider_id~ : String, backend~ : RendererBackendKind) -> Array[RendererBackendFeatureCapability]Browser WebGPU renderer with Canvas2D fallback providers for MoUI
Dependencies