-
Notifications
You must be signed in to change notification settings - Fork 645
[api] Add support for the Graphite GPU backend #3962
Copy link
Copy link
Open
Labels
area/SkiaSharpIssues that relate to the C# binding of SkiaSharp.Issues that relate to the C# binding of SkiaSharp.backend/Metalbackend/Vulkancost/xlOver a month. Architectural, research-heavy, or high coordination costOver a month. Architectural, research-heavy, or high coordination costos/Androidos/Linuxos/WASMIssues running on WebAssembly (ASP.NET Blazor or Uno Platform)Issues running on WebAssembly (ASP.NET Blazor or Uno Platform)os/Windows-ClassicIssues running on Microsoft Windows using Win32 APIs (Windows.Forms or WPF)Issues running on Microsoft Windows using Win32 APIs (Windows.Forms or WPF)os/iOSos/macOSpartner/unoplatformIssues and PRs that are/should being looked at or worked on by the Uno Platform partners.Issues and PRs that are/should being looked at or worked on by the Uno Platform partners.priority/3Backlog: only if extra capacity. Won't block any release.Backlog: only if extra capacity. Won't block any release.triage/triagedtype/feature-requestupgrading/4.xIssues and discussions relating to the upgrade from 3.x to 4.xIssues and discussions relating to the upgrade from 3.x to 4.x
Milestone
Description
Metadata
Metadata
Assignees
Labels
area/SkiaSharpIssues that relate to the C# binding of SkiaSharp.Issues that relate to the C# binding of SkiaSharp.backend/Metalbackend/Vulkancost/xlOver a month. Architectural, research-heavy, or high coordination costOver a month. Architectural, research-heavy, or high coordination costos/Androidos/Linuxos/WASMIssues running on WebAssembly (ASP.NET Blazor or Uno Platform)Issues running on WebAssembly (ASP.NET Blazor or Uno Platform)os/Windows-ClassicIssues running on Microsoft Windows using Win32 APIs (Windows.Forms or WPF)Issues running on Microsoft Windows using Win32 APIs (Windows.Forms or WPF)os/iOSos/macOSpartner/unoplatformIssues and PRs that are/should being looked at or worked on by the Uno Platform partners.Issues and PRs that are/should being looked at or worked on by the Uno Platform partners.priority/3Backlog: only if extra capacity. Won't block any release.Backlog: only if extra capacity. Won't block any release.triage/triagedtype/feature-requestupgrading/4.xIssues and discussions relating to the upgrade from 3.x to 4.xIssues and discussions relating to the upgrade from 3.x to 4.x
Type
Projects
StatusShow more project fields
New
Part of #4015
Graphite: Skia's Next-Generation GPU Backend
Graphite is Skia's new GPU rendering backend, designed from the ground up for modern graphics APIs. It replaces Ganesh, which has powered Skia's GPU rendering for over a decade.
Graphite is already in production — Chrome ships it on Apple Silicon Macs with ~15% rendering performance improvement, and is expanding to other platforms.
Why Graphite?
Ganesh was built around OpenGL and incrementally adapted for Vulkan, Metal, and Direct3D. This legacy shows in its single-threaded immediate-mode design. Graphite starts fresh with:
PrecompileContexteliminates shader compilation jank by building pipelines ahead of time on background threadsHow it works
The programming model changes from Ganesh's immediate context to a record-then-submit pattern:
SkCanvas is still the drawing API. All existing drawing code (paths, images, text, shaders, effects) works identically. What changes is how you create the context and surface, and how commands get to the GPU.
Supported backends
Graphite does not support OpenGL or Direct3D directly. Dawn provides D3D12 coverage on Windows and Vulkan coverage on Linux — making it the cross-platform solution for platforms without native Metal or Vulkan.
Ganesh deprecation
Google is actively deprecating Ganesh:
What this means for SkiaSharp users
Nothing changes today — SkiaSharp v4 continues to use Ganesh for all GPU rendering. Existing code will keep working.
But if you're starting new GPU-accelerated work or evaluating rendering architecture, Graphite is where Skia's future investment is going. Benefits you'd get from Graphite adoption:
Considerations