aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs')
-rw-r--r--Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs26
1 files changed, 26 insertions, 0 deletions
diff --git a/Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs b/Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs
new file mode 100644
index 00000000..335bc905
--- /dev/null
+++ b/Ryujinx.Ava/Ui/Backend/SkiaGpuFactory.cs
@@ -0,0 +1,26 @@
+using Avalonia;
+using Avalonia.Skia;
+using Ryujinx.Ava.Ui.Vulkan;
+using Ryujinx.Ava.Ui.Backend.Vulkan;
+
+namespace Ryujinx.Ava.Ui.Backend
+{
+ public static class SkiaGpuFactory
+ {
+ public static ISkiaGpu CreateVulkanGpu()
+ {
+ var skiaOptions = AvaloniaLocator.Current.GetService<SkiaOptions>() ?? new SkiaOptions();
+ var platformInterface = AvaloniaLocator.Current.GetService<VulkanPlatformInterface>();
+
+ if (platformInterface == null)
+ {
+ VulkanPlatformInterface.TryInitialize();
+ }
+
+ var gpu = new VulkanSkiaGpu(skiaOptions.MaxGpuResourceSizeBytes);
+ AvaloniaLocator.CurrentMutable.Bind<VulkanSkiaGpu>().ToConstant(gpu);
+
+ return gpu;
+ }
+ }
+} \ No newline at end of file