diff --git a/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs b/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs
index 0778c64736..102f1f92aa 100644
--- a/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs
+++ b/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs
@@ -1,7 +1,6 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
-using System;
using Avalonia.Controls;
using Avalonia.Skia;
@@ -19,12 +18,11 @@ namespace Avalonia
/// Builder type.
/// Builder.
/// Configure builder.
- public static T UseSkia(this T builder, Func gpuFactory = null) where T : AppBuilderBase, new()
+ public static T UseSkia(this T builder) where T : AppBuilderBase, new()
{
- var customGpu = gpuFactory?.Invoke();
-
- builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(customGpu), "Skia");
- return builder;
+ return builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(
+ AvaloniaLocator.Current.GetService() ?? new SkiaOptions()),
+ "Skia");
}
}
}
diff --git a/src/Skia/Avalonia.Skia/SkiaOptions.cs b/src/Skia/Avalonia.Skia/SkiaOptions.cs
new file mode 100644
index 0000000000..bac1849be8
--- /dev/null
+++ b/src/Skia/Avalonia.Skia/SkiaOptions.cs
@@ -0,0 +1,19 @@
+// Copyright (c) The Avalonia Project. All rights reserved.
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
+
+using System;
+using Avalonia.Skia;
+
+namespace Avalonia
+{
+ ///
+ /// Options for Skia rendering subsystem.
+ ///
+ public class SkiaOptions
+ {
+ ///
+ /// Custom gpu factory to use. Can be used to customize behavior of Skia renderer.
+ ///
+ public Func CustomGpuFactory { get; set; }
+ }
+}
diff --git a/src/Skia/Avalonia.Skia/SkiaPlatform.cs b/src/Skia/Avalonia.Skia/SkiaPlatform.cs
index e4185c43a2..f16e967f42 100644
--- a/src/Skia/Avalonia.Skia/SkiaPlatform.cs
+++ b/src/Skia/Avalonia.Skia/SkiaPlatform.cs
@@ -13,8 +13,14 @@ namespace Avalonia.Skia
///
/// Initialize Skia platform.
///
- public static void Initialize(ICustomSkiaGpu customGpu = null)
+ public static void Initialize()
{
+ Initialize(new SkiaOptions());
+ }
+
+ public static void Initialize(SkiaOptions options)
+ {
+ var customGpu = options.CustomGpuFactory?.Invoke();
var renderInterface = new PlatformRenderInterface(customGpu);
AvaloniaLocator.CurrentMutable