VelloSharp.Uwp – Preview Notes
Preview
TheVelloSharp.Uwpbinding currently targetsnet8.0-windows10.0.19041(WinUI 3 desktop) while we finish the AppContainer (uap10.0.19041) bring-up. The public API shape matches the final control, so you can wire the preview into bridged/desktop experiences today and prepare for genuine UWP packaging once the dispatcher and asset workstreams land.
Package setup
<ItemGroup>
<ProjectReference Include="..\..\bindings\VelloSharp.Uwp\VelloSharp.Uwp.csproj" />
<ProjectReference Include="..\..\src\VelloSharp.Windows.Shared\VelloSharp.Windows.Shared.csproj" />
</ItemGroup>
With NuGet packages:
<ItemGroup>
<PackageReference Include="VelloSharp.Uwp" Version="0.5.0-alpha.*" />
</ItemGroup>
Using the VelloSwapChainPanel
<Window
x:Class="Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vello="using:VelloSharp.Uwp.Controls">
<Grid>
<vello:VelloSwapChainPanel x:Name="SwapChain"
PreferredBackend="Gpu"
RenderMode="OnDemand" />
</Grid>
</Window>
The code-behind matches the WinUI control—hook PaintSurface, fill a scene, and drive diagnostics. See samples/UwpVelloGallery for a reference implementation.
GPU backends & WARP fallback
The preview control honours the shared Windows GPU toggles so you can validate Store packaging early:
Vello:Windows:Backends/VELLO_WINDOWS_BACKENDSlets you restrict WGPU to specific backends (for exampledx12,vulkan, orauto).- Force the software adapter with
Vello:Windows:ForceWarp/VELLO_WINDOWS_FORCE_WARP, or block it entirely viaVello:Windows:DisableWarp/VELLO_WINDOWS_DISABLE_WARP. - Extract the package contents and run
scripts/verify-uwp-native-assets.ps1 -BundlePath <extracted-appx> -RuntimeIdentifier win10-x64during CI to ensure the native binaries and signatures ship with your MSIX/AppX. - Consult
runtimes/win10-*/native/vello.backends.jsoninside the package to see which backends are declared for each RID.
What’s left for true UWP support?
- Dispatcher abstraction so the shared presenter can target
CoreDispatcherinstead ofMicrosoft.UI.Dispatching.DispatcherQueue. - AppX packaging glue to copy GPU runtime assets into
Package.Current.InstalledLocation. - Capability declarations and fallbacks required for Xbox/Surface Hub (WARP, optional D3D12).
Track progress in docs/winui-uwp-vello-full-gpu-integration-plan.md. Contributions are welcome—especially around dispatcher shims and packaging validation.