SimdSkia.Avalonia.Desktop 0.1.0-preview.9

This is a prerelease version of SimdSkia.Avalonia.Desktop.
dotnet add package SimdSkia.Avalonia.Desktop --version 0.1.0-preview.9
                    
NuGet\Install-Package SimdSkia.Avalonia.Desktop -Version 0.1.0-preview.9
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SimdSkia.Avalonia.Desktop" Version="0.1.0-preview.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SimdSkia.Avalonia.Desktop" Version="0.1.0-preview.9" />
                    
Directory.Packages.props
<PackageReference Include="SimdSkia.Avalonia.Desktop" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SimdSkia.Avalonia.Desktop --version 0.1.0-preview.9
                    
#r "nuget: SimdSkia.Avalonia.Desktop, 0.1.0-preview.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SimdSkia.Avalonia.Desktop@0.1.0-preview.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SimdSkia.Avalonia.Desktop&version=0.1.0-preview.9&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SimdSkia.Avalonia.Desktop&version=0.1.0-preview.9&prerelease
                    
Install as a Cake Tool

SimdSkia.Avalonia

2026-10-27 preview.9 实测:VelaShell 整体兼容报告。已实际拉取并运行真实应用,修正字体 Try 回退和图片舍入边界;CPU、Direct2D、Vulkan 各 23 个常规场景可绘制。组合字符、资源监视滚动、部分输入行为、Skia 专属预览和整页一致性仍有缺口,尚不能宣称整体替换成功。

preview.9 新增: 已补 SKBitmap.GetPixels()、SKTypeface.FromFamilyName、GIF SKCodec、SKRoundRect、SaveLayer 和 SKRect.Inflate,新增多页栅格 PDF 导出与可选纯托管 PDF 页面阅读/窗口示例。固定 SkiaSharp 3.119.4 源码基线不变,完整 API、圆角/文字画质及通用 PDF 仍有缺口;这些功能从 preview.9 开始提供,公开状态见发布记录。代码、命令、原版对照及限制见独立兼容层与 PDF 报告。可直接运行:dotnet run -c Release --project examples/PdfViewer -- tests/Pdf/Fixtures/external.pdf。

2026-10-27 preview.8 通用 x64、Vulkan / Direct2D 实测:75 个 CPU、36 个 GPU 串行进程完成正式复测。通用 x64 AOT 的 CPU 吞吐综合耗时低于原版 4.4%,最慢场景落后 3.8%;Vulkan / Direct2D 的 JIT 离屏完成帧综合耗时低约 29.8% / 35.3%。限定本机和已测场景,不能推广到所有应用或窗口呈现。 常驻内存和原版整页画质仍有差距;本次按已知限制发布预览版,不宣称完整兼容。公开上架状态见发布记录,带图使用文章见博客园 Markdown。

2026-10-26 半透明图片兼容性修复:此前「非预乘含透明 / 预乘含透明」两类原版画质失败已修复。对齐固定 SkiaSharp 3.119.4 x64 图像合成舍入,原门槛不变,核心图片对照 24/24 组通过,最大误差降到 1、RMSE 约 0.05–0.11。468,137 项精确回归、真实控件/Direct2D/Vulkan 和两种 AOT 验证通过。完整字体/路径及整页画质缺口仍在,本轮纳入 preview.7,发布状态见 发布记录。 下文保留此前独立测量结果。

2026-10-26 核心 CPU 优化与原版对照:新增精确八像素 AVX2 双线性采样。1024×768 非预乘不透明图片 46.317→7.423 ms(原版 7.830 ms),Opaque 格式 8.815→6.415 ms(原版 7.188 ms),这两类通过既定原版画质门槛。真实 Avalonia 页面耗时中位数改善约 3%–5%;常驻托管内存基本不变,透明过滤和整页画质缺口仍保留。74,921 项逐字节/回退检查和实际通用/v3 AOT 验证通过。本轮优化纳入 preview.7;通用 AOT 仍可使用标量回退,不能假定它具有 AVX2 的测试速度。

最新 桌面启动、CPU/GPU 与内存报告:完成 70 次 JIT/AOT 可见启动对照。JIT 白色阶段采样中位数 CPU 114→61 ms、Direct2D 289→198 ms、Vulkan 363→266 ms,同机原版 CPU 为 49 ms;白屏缩短,尚未完全消除。新增桌面后台准备、精确几何边界复用和字形缓冲优化;系统字体控件 0.695→0.666 ms/帧,CPU 窗口每帧托管分配约减少 17%。常驻内存和持续 GPU 性能没有明显改善,完整画质/API 门槛仍未通过。 本轮及此前内存、采样改进纳入 preview.6,公开发布状态见 发布记录。实际 AOT 首帧两者约 337 ms,发布目录为 26.99 vs 原版 38.33 MiB,AOT 工作集/Private 仍较高;报告保留所有进程与画质失败项。

上一轮 采样、画刷缓存与窗口对比:系统字体控件 0.793→0.694 ms/帧;连续更新图片画刷短批次 7.553→1.681 ms/帧,该场景 GC 后 Private 58.6→27.9 MiB,原版 0.729 ms、26.5 MiB。历史轮次数据保持原样,不与本轮不同 DPI/采样间隔的结果拼接。

上一轮 启动、CPU 与内存报告:系统字体控件 1.008→0.800 ms/帧,工作集 111.9→94.8 MiB。CPU 白色阶段估计 280→218 ms,原版约 95 ms;白屏未消除。这是此前独立测量,不与最新表格拼接计算增益。

上一轮 内存与性能报告:系统字体 CPU 窗口工作集 252.6→116.0 MiB,Private 197.6→60.6 MiB;固定字体 CPU 控件耗时下降 5%–9%,每帧分配减少 66%–70%。该轮改进一并纳入 preview.6。

最新 Vulkan 专项优化与测试报告:真实控件窗口 P50 22.250→2.316 ms,约快 9.6 倍;同场景 CPU 2.067 ms、Direct2D 1.552 ms。包含 CPU、工作集、Private、分配、原版 GPU 对照及失败项。本轮优化纳入 preview.5,发布状态见下方发布记录;CPU/内存没有获得同等幅度改善,完整画质/API 验收仍未通过。 上一轮 CPU 与分配优化见 历史报告。

独立 C# 2D 引擎,内部使用 SimdSkia,源码兼容层保留 SkiaSharp.SK*。不使用 Google Skia 绘图;字体、基础排版及图片编解码均由 C# 实现。通过 SimdSkia.Avalonia 可以接入 Avalonia,无需重新编译 Avalonia。

本轮版本为 0.1.0-preview.9,固定支持 Avalonia 12.1.4。Windows、Linux X11/XWayland、macOS 已通过真实窗口验证;macOS 使用经用户确认允许的官方原生窗口宿主,绘图、字体、排版和编解码仍是 C#。默认使用 CPU,可选 Windows Direct2D 原生交换链或 Windows/Linux Vulkan 绘图。macOS GPU/Metal 尚未实现,完整兼容性和画质验收仍未全部通过。

preview.9 更新了什么

12 个包统一版本,包内提供 NuGet 发行说明、完整使用 README 和 CHANGELOG.md。公开下载状态以发布记录为准;本次不是完整兼容正式版。

  • 独立兼容层:真实像素指针 SKBitmap.GetPixels、系统字体族/样式发现、GIF SKCodec、圆角、图层整组透明度、几何与采样重载。固定基线公共条目匹配 892/3235,仍缺 2343 项,不承诺二进制兼容。
  • PDF:SKDocument.CreatePdf 多页栅格导出;新增可选包 SimdSkia.Pdf 读取已有 PDF 并绘制受支持的页面内容,普通 Avalonia 用户不引入 PDF 解析依赖。无矢量导出、可搜索文字或 PDF/A;阅读器超出支持范围明确报错。
  • 真实应用修复:修正 VelaShell 字体 Try 回退和图片布局舍入边界,9,750 项控件回归通过。常规 CPU/Direct2D/Vulkan 各 23/23;深层视图仍有失败、超时和 Skia 专属预览缺口,不能宣称整个应用已替换。
  • 性能范围:本版只新增 1080p 带 stride 像素逐行复制对照,0.5907 vs 原版 0.5921 ms/帧,视为基本持平。未重测完整 Avalonia CPU/GPU 吞吐和常驻内存;上文 preview.8 数字保留历史版本,不作为本版成绩。
  • 示例和限制:新增 Documents、PdfViewer、独立原版调用对照及 VelaShell 测试工具。圆角/文字和整页画质、组合字符、资源监视性能、部分输入及 macOS GPU 等缺口详见更新日志。

NuGet 包怎么选

本轮包含下列十二个包,统一版本 0.1.0-preview.9;发布状态见 预览发布。在 Visual Studio 的 NuGet 搜索中勾选“包括预发行版”。

包名 用途
SimdSkia.Avalonia.Desktop 桌面应用优先选这个:自动选择 Windows/Linux/macOS 宿主,传递引入渲染适配器
SimdSkia.Avalonia 绘图、字体和基础文字排版服务,也可配合自行配置的宿主
SimdSkia.Avalonia.Gpu 可选 Avalonia GPU 绘图、Direct2D 直接呈现和回退/缓存诊断
SimdSkia.Gpu.Direct2D Windows Direct2D/D3D11,纯 C# 系统 API 互操作,无第三方绑定包
SimdSkia 需要 SkiaSharp.SK* 源码兼容 API 时使用的依赖汇总包
SimdSkia.Compatibility SKBitmap、SKCanvas 等兼容层,也由 SimdSkia 汇总包引入
SimdSkia.Core 几何、路径和绘图状态
SimdSkia.Cpu CPU 光栅化、像素合成及 SIMD
SimdSkia.Text TrueType 字体解析和基础排版
SimdSkia.Imaging 图片编解码和颜色处理
SimdSkia.Gpu Vulkan 离屏后端,需要系统 Vulkan loader/驱动
SimdSkia.Pdf 可选纯托管 PDF 阅读/页面绘制;导出 PDF 无需安装此包

新桌面应用添加 SimdSkia.Avalonia.Desktop,其渲染服务和引擎依赖会自动还原,无需额外安装 SimdSkia 或手动复制底层 DLL:

dotnet add package SimdSkia.Avalonia.Desktop --version 0.1.0-preview.9

安装包后还必须配置启动代码。 以下是完整的新程序示例;现有项目按后面的迁移步骤调整。

从旧预览版升级时,将直接引用的所有 SimdSkia.* 包统一到 0.1.0-preview.9,Avalonia 包继续统一为 12.1.4。这次新增独立 SK* API、GIF、PDF 和真实应用接入修复,继承之前的 SIMD、半透明修复、系统字体和启动准备;无需重新编译 Avalonia。具体性能、画质限制与发布验收见 发布记录。

Avalonia 快速开始(Windows / Linux / macOS)

使用 .NET 10 SDK,在空目录创建以下两个文件。所有 Avalonia 包统一为 12.1.4,无需克隆或编译本仓库。

Demo.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="SimdSkia.Avalonia.Desktop" Version="0.1.0-preview.9" />
    <PackageReference Include="Avalonia" Version="[12.1.4]" />
    <PackageReference Include="Avalonia.Themes.Fluent" Version="[12.1.4]" />
  </ItemGroup>
</Project>

Program.cs:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Themes.Fluent;
using SimdSkia.Avalonia;

internal static class Program
{
    [STAThread]
    public static void Main(string[] args)
        => AppBuilder.Configure<App>()
            .UseSimdSkiaDesktop()
            .StartWithClassicDesktopLifetime(args);
}

public sealed class App : Application
{
    public override void Initialize() => Styles.Add(new FluentTheme());

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new Window
            {
                Title = "SimdSkia 预览",
                Width = 600,
                Height = 300,
                Content = new StackPanel
                {
                    Margin = new Thickness(24),
                    Spacing = 16,
                    Children =
                    {
                        new TextBlock { Text = "你好,SimdSkia / Hello Avalonia", FontSize = 24 },
                        new Button { Content = "普通 Avalonia 按钮" }
                    }
                }
            };
        }
        base.OnFrameworkInitializationCompleted();
    }
}

在该目录运行:

dotnet restore
dotnet run

Windows 的 WinExe 避免额外控制台窗口。三平台自动发现受支持的已安装静态 TrueType 字体,无需附带字体资源;中文需要相应字形的已安装字体。Linux 需要 X11 或 XWayland 及系统窗口库。macOS 会分发官方 MIT libAvaloniaNative.dylib,只负责窗口和系统交互。字体解析、文字栅格化及编解码均由 C# 完成。

Avalonia GPU 与 Direct2D

在上面的桌面程序中增加可选包:

dotnet add package SimdSkia.Avalonia.Gpu --version 0.1.0-preview.9

Windows 将 .UseSimdSkiaDesktop() 改为:

.UseSimdSkiaDesktop(options => options.UseGpu(SimdSkiaGpuBackend.Direct2D))

通过 C# 调用系统 Direct2D/D3D11,并使用 DXGI 原生交换链呈现;正常帧不强制回读像素,GPU 完成以事件查询确认。文字默认由 C# 生成并缓存覆盖率纹理,再交 GPU 合成;透明图层、滤镜等仍有 CPU 工作,诊断分别记录。可选择 GpuOutlines 进行轮廓 GPU 绘制,该模式当前更慢且文字覆盖率与默认模式不同。

Linux/Windows 可改用 SimdSkiaGpuBackend.Vulkan,需硬件 Vulkan 设备;当前通过完成栅栏后回读并交窗口 framebuffer 呈现。GPU 不保证快于 CPU,需按实际尺寸、DPI 和场景评估;macOS 调用 GPU 配置会明确报错。 不支持的画刷等默认报错;可显式设置 allowCpuFallback: true,并通过 SimdSkiaGpuDiagnostics 查看原因、回退数及 Vulkan 覆盖缓存和同步计数。详见 跨平台说明、最新窗口/内存报告 和 此前 Vulkan 专项报告。

现有 Avalonia 项目如何切换

  1. 将 Avalonia 系列包统一为 12.1.4,添加 SimdSkia.Avalonia.Desktop;需要 GPU 时再添加 SimdSkia.Avalonia.Gpu。
  2. 移除 Avalonia.Desktop、Avalonia.Skia、Avalonia.Fonts.Inter 等原版后端/字体引用及 .WithInterFont(),使用上述包配置;检查第三方控件是否仍间接引用 Skia/HarfBuzz/ANGLE。
  3. 添加 using SimdSkia.Avalonia;,将 .UsePlatformDetect() 或固定 .UseWin32() 链替换为 .UseSimdSkiaDesktop()。保留自己的 App、XAML、MVVM 和窗口创建代码。

.UseSimdSkia() 注册 Avalonia 的绘图、字体和基础排版服务,因此无需修改 Avalonia 源码。它不会把 SkiaSharp.dll 替换为同名程序集;直接依赖原版 SK*/GR API 或 ISkiaSharpApiLeaseFeature 的自定义控件仍需迁移。

如需显式指定受支持的 TTF/TTC,将 .UseSimdSkia() 改为:

.UseSimdSkia(options => options.FontFiles.Add(@"C:\Fonts\MyFont.ttf"))

显式列表会替代自动系统字体列表;随程序分发字体时,应设置复制到输出/发布目录并遵守字体许可证。Linux/macOS 按受支持静态字体的优先级选择默认家族,可用 SIMDSKIA_DEFAULT_FONT_FAMILY 指定已安装家族,不复刻 fontconfig/CoreText 的所有规则。更多说明见 Avalonia 包内 README。

启动准备

preview.6 默认在经典桌面 JIT 初始化时,用一次性后台线程准备常用绘图路径;无窗口应用和 Native AOT 自动跳过。需要排查启动行为时可关闭:

AppBuilder.Configure<App>()
    .UseSimdSkiaDesktop(options => options.EnableStartupPreparation = false)
    .StartWithClassicDesktopLifetime(args);

准备任务不隐藏窗口、不延迟 Show、不绘制占位帧;它缩短部分首帧等待,不能保证所有系统和业务窗口完全无白屏。

Avalonia Native AOT 发布

在目标平台安装 Native AOT 工具链后执行对应命令。Windows 需要 Visual Studio C++ 和 Windows SDK,Linux 需要 clang/zlib 开发工具,macOS 需要 Xcode 命令行工具。AOT 发布必须在相应操作系统完成:

dotnet publish -c Release -r win-x64 -p:PublishAot=true -o publish/win-x64
dotnet publish -c Release -r linux-x64 -p:PublishAot=true -o publish/linux-x64
dotnet publish -c Release -r osx-arm64 -p:PublishAot=true -o publish/osx-arm64

运行目标目录中的 Demo.exe(Windows)或 Demo(Linux/macOS),无需安装 .NET 运行时。业务代码仍需满足 AOT 要求。若没有窗口,检查 desktop.MainWindow 和单实例提前退出逻辑。macOS 正式分发还需自行准备应用包、签名和公证。

上述两个文件与包内 README 保持一致。流水线、许可证、真实 nupkg 的消费验证与发布状态见 预览发布说明;本轮平台测试与性能见 交付报告,画质和 API 剩余缺口见 兼容验证。

示例、实现与测试报告

发光控件 AOT 示例:可输入的中英文文本框、焦点发光、流光进度条、悬停/按下反馈按钮,支持暂停、继续和重置。纯 SimdSkia CPU 自绘,实测 EXE 1.343 MiB;成品体积、截图与验证报告。

独立 Native AOT 窗口:不用 Avalonia,直接用 SimdSkia 绘图和 Windows 系统窗口宿主。MinimumSize 配置实测纯图形 EXE 1.172 MiB,中英文 1.311 MiB;完整部署分别 1.185 / 1.324 MiB,不附带字体或绘图 DLL。实际 EXE 通过全 RGB 像素、调整大小和点击验证。最小配置关闭地区格式化及部分诊断,仅用于简单自绘窗口,不包含 Avalonia 控件体系。体积和取舍报告。

新增 Avalonia Native AOT 双后端程序:相同控件分别使用 SimdSkia 与原版,提供 Windows x64 通用及 AVX2 版本,实际比较完整发布体积、启动/绘制速度、CPU 和内存。结果见 AOT 实测报告;既有报告是另一套 JIT/离屏基准,数据不混用。

SK* 源码兼容的固定基线是 Avalonia.Skia 12.1.4 实际解析的 SkiaSharp 3.119.4。Core/Cpu/Text/Gpu 无第三方 NuGet 依赖,Imaging/Compatibility 使用固定版本纯托管 JpegLibrary;可选 Avalonia 层另有纯托管依赖,见 许可证与依赖。

路径、抗锯齿、基本中英文 glyf TTF/TTC 字体、PNG/JPEG/部分 ICC、图像/视觉画刷、模糊/阴影、SIMD、Vulkan 离屏及窗口回读呈现、Direct2D 原生交换链均有真实实现。完整 Avalonia 替换尚未通过验收:文字/曲线及部分新功能画质仍失败,通用字体排版、Vulkan 直接交换链和 macOS GPU 等仍有缺口。

2026-10-21 历史交付:测试报告、CPU/内存/滤镜性能、原版 Vulkan GPU 对比、实现范围与缺口。报告保留未通过项,不承诺替代原版强名称程序集。

2026-10-21 的 CPU、GPU、真实 OCR、CPU 时间和内存对比见 本轮优化报告。保留优化前数据及失败的画质检查。

真实 Avalonia 接入:UseSimdSkia 已运行实际控件与 Win32 软件窗口,8109 项控件/字形/滤镜/字体集合断言通过。较早的字形/首绘优化及通用报告保留为历史数据;当前结论以本轮报告为准。

dotnet build SimdSkia.sln -c Release
powershell -NoProfile -File tools/fetch-avalonia-font.ps1
dotnet run --project examples/AvaloniaControls -c Release
# Windows 交互窗口
dotnet run --project examples/AvaloniaControls -c Release -- --window

SimdSkia 实际 Avalonia 控件

构建和运行

需要 .NET 10 SDK 和 .NET 8 runtime。

dotnet build SimdSkia.sln -c Release
dotnet run --project tests/SimdSkia.Tests -c Release
dotnet run --project tests/Features -c Release
dotnet run --project tests/Avalonia -c Release
dotnet run --project examples/AvaloniaText -c Release
dotnet run --project tests/Gpu -c Release
dotnet run --project examples/Features -c Release
dotnet run --project examples/Features -c Release -- --gpu

组合示例绘制渐变、曲线、孔洞、描边、中英文和经过 PNG 编解码的图片,输出 artifacts/features-cpu.png / features-vulkan.png。GPU 实际执行覆盖率与合成,等待 fence 完成后读取像素,没有 CPU fallback 冒充 GPU。

字体须是真实 glyf TrueType 文件。Windows 示例默认使用系统 SimHei,其他环境传入字体路径:

powershell -NoProfile -File tools/fetch-test-font.ps1
dotnet run --project tests/Features -c Release -- baseline/fonts/ZenOldMincho-Regular.ttf
dotnet run --project examples/Features -c Release -- baseline/fonts/ZenOldMincho-Regular.ttf --gpu

固定 OFL 测试字体含 CJK/拉丁字形;区域字形风格应使用应用自己的中文字体。没有字体时明确失败或标记字体测试未执行,不生成假字形。独立 Vulkan 后端需要系统 loader/驱动:Windows vulkan-1.dll,Linux libvulkan.so.1;main 源码支持 64 位小端 RGBA/BGRA 预乘或 Opaque 存储目标,窗口直接输出 BGRA 并通过回读呈现,不提供 Vulkan swapchain 或 Skia GR 句柄替换。Windows Direct2D 另有原生 DXGI 交换链。

实际验收

  • Release 构建 0 警告、0 错误,原有 36 项测试通过。
  • 扩展功能测试带原版 PNG 夹具时 14 项通过,包含真实中文字体、换行/折行、独立面积、三类 DEFLATE 块和 SIMD 等价性。
  • 150 个格式/Alpha/stride/尾部组合一致,另实际禁用硬件指令验证标量回退。
  • GTX 1050 Ti 上,GPU/CPU 的矩形、AA 路径、中文、渐变、描边、图片/裁剪和批次边界逐像素一致;验证了缓存内容变化、淘汰、线程约束和 Dispose。
  • 原版 120 个 CPU 像素场景中 108 达到预设阈值,12 个曲线 AA/文字场景未通过;25 个行为和字体度量探针一致。失败未隐藏或放宽阈值。
  • 425/3235 条公共元数据匹配,仍有 2810 条缺口;Avalonia 引用的成员中 120/346 个存在签名,尚未完整接入,未承诺二进制兼容。Linux 尚未实机运行。

复现验证

powershell -NoProfile -File tools/verify.ps1 -Gpu
powershell -NoProfile -File tools/check-production-dependencies.ps1
powershell -NoProfile -File tools/fetch-baseline.ps1 -IncludeWindowsReferenceRuntime
powershell -NoProfile -File tools/verify.ps1 -Reference
dotnet run --project tests/Features -c Release -- --reference-pngs
dotnet run --project tools/CpuBench -c Release
dotnet run --project tests/ReferenceRenderer -c Release -- --benchmark

-Reference 当前因上述 12 个像素差异非零退出,查看 artifacts/diff/results.json 和差异图。原版只在隔离对照进程。测试使用可执行断言程序,不应将 dotnet test 的无测试输出当作通过。

项目附 GLSL 和 SPIR-V,普通构建不需要 shader 编译器。更改 shader 后使用 tools/build-shader.ps1 -Compiler <glslang路径>;编译器仅供开发。

Git 仓库保留源码、测试夹具和文档。baseline/、artifacts/、results/、构建缓存及 OCR 本机配置不上传;报告中的这些路径指本机原始证据,可按所列命令重新生成。项目采用 MIT 许可证,第三方依赖保留各自许可证,详见下方文档。

进度 · 兼容报告 · 验证与性能 · 架构 · 依赖与许可证

原版性能对比

多场景性能报告 已实测原版/标量/SIMD:12 场景、两尺寸、每实现 3 个独立进程及每场景 7 批采样,包含逐帧 P95、托管分配、GC、进程内存、CPU 使用率、PNG 大小和像素 gate。画质未通过的场景只作诊断。随后实际优化引擎并复测,见 优化前后实测;旧结果、失败门槛和像素证据保留。

GPU(Vulkan)对比 用同一台 GTX 1050 Ti 实测原版 SkiaSharp Vulkan 光栅后端与 SimdSkia compute 管线:每帧完整 round-trip(绘制+提交+等待+回读)计时,含托管分配、进程内存和 CPU 使用率;未过像素 gate 的场景只作诊断。

复现时指定新的输出目录,以保留旧数据:

powershell -NoProfile -File tools/run-benchmarks.ps1 -Output artifacts/performance/my-run
powershell -NoProfile -File tools/run-gpu-benchmarks.ps1 -Output artifacts/performance-gpu/my-run

CPU 光栅结果见 PERFORMANCE.md;GPU(Vulkan) round-trip 对照见 PERFORMANCE-GPU.md,二者不混用。原版依赖仍仅在 benchmarks/Reference 与 benchmarks/GpuReference,benchmark 项目不属于生产引用图。

CPU 优化包括连续像素 SIMD 合成、AA 矩形覆盖、路径活动边与区间计数、有界布局/描边/覆盖率缓存、图片分段及托管 PNG/DEFLATE。GPU 优化包括包围盒限定 dispatch、FillPath 边缓存、持久化 arena 与预分配描述符、源图身份+快照缓存;两者细节与实测见 优化前后实测。额外 变化场景基准 每帧移动并超过缓存容量,用于查看未命中成本。

当前修复版本的 CPU/GPU、内存与继续投入评估 已重新实测,包含相对原版和上轮的变化、每帧 CPU 成本与进程内存。独立 HOST_CACHED 实验验证了 GPU 回读优化空间;复杂 GPU 文字仍需要改变算法。

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview.9 0 10/27/2026
0.1.0-preview.8 41 10/27/2026
0.1.0-preview.7 47 10/26/2026
0.1.0-preview.6 57 10/22/2026
0.1.0-preview.5 58 10/22/2026
0.1.0-preview.4 53 10/21/2026
0.1.0-preview.3 56 10/21/2026
0.1.0-preview.2 55 10/21/2026

Preview 9 / 预览版 9:补齐 SKBitmap.GetPixels 真实像素指针、系统字体 FromFamilyName、GIF SKCodec、SKRoundRect/SaveLayer/Inflate 与采样重载;新增多页栅格 PDF 导出及可选纯托管 SimdSkia.Pdf 阅读模块。修复 VelaShell 字体 Try 回退和图片布局舍入边界,CPU/Direct2D/Vulkan 各 23 个常规场景通过,控件回归 9,750 项通过。仍有组合字符异常、复杂页面耗时、输入/Skia 专属预览及原版画质差距;PDF 仅支持明确子集。没有重测完整 CPU/GPU 性能,不沿用旧成绩宣称新版全面追平。12 个包统一版本,Avalonia 12.1.4、SkiaSharp 源码基线 3.119.4;不承诺二进制或全面兼容。完整更新、测试和限制见包内 CHANGELOG.md、README.md 和 https://github.com/donet-org-cn/SimdSkia/blob/main/docs/RELEASE-NOTES.md