From 67a87e09cf617f0e8c7c4916da50c610cf3cb677 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 15:48:27 +0100 Subject: [PATCH 01/10] use directx11. --- src/Avalonia.OpenGL/AngleOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.OpenGL/AngleOptions.cs b/src/Avalonia.OpenGL/AngleOptions.cs index 4b9c04f4e6..56435d2705 100644 --- a/src/Avalonia.OpenGL/AngleOptions.cs +++ b/src/Avalonia.OpenGL/AngleOptions.cs @@ -12,7 +12,7 @@ namespace Avalonia.OpenGL public List AllowedPlatformApis = new List { - PlatformApi.DirectX9 + PlatformApi.DirectX11 }; } } From 6ed1669803d62f7a02f75d89b0e0ad66b8d5d983 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 15:49:04 +0100 Subject: [PATCH 02/10] set a sensible cache size for skia.. based on what flutter uses. --- src/Skia/Avalonia.Skia/SkiaOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/SkiaOptions.cs b/src/Skia/Avalonia.Skia/SkiaOptions.cs index cbe0b5ef42..d14120204c 100644 --- a/src/Skia/Avalonia.Skia/SkiaOptions.cs +++ b/src/Skia/Avalonia.Skia/SkiaOptions.cs @@ -16,6 +16,6 @@ namespace Avalonia /// /// The maximum number of bytes for video memory to store textures and resources. /// - public long? MaxGpuResourceSizeBytes { get; set; } + public long? MaxGpuResourceSizeBytes { get; set; } = 1024 * 600 * 4 * 12; // ~28mb 12x 1024 x 600 textures. } } From 1eda1b6c1fbee01f7a09cc47d78c30f33a259111 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 16:13:18 +0100 Subject: [PATCH 03/10] better way to set default directx apis. --- src/Avalonia.OpenGL/AngleOptions.cs | 5 +---- src/Avalonia.OpenGL/EglDisplay.cs | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Avalonia.OpenGL/AngleOptions.cs b/src/Avalonia.OpenGL/AngleOptions.cs index 56435d2705..af1d1177ed 100644 --- a/src/Avalonia.OpenGL/AngleOptions.cs +++ b/src/Avalonia.OpenGL/AngleOptions.cs @@ -10,9 +10,6 @@ namespace Avalonia.OpenGL DirectX11 } - public List AllowedPlatformApis = new List - { - PlatformApi.DirectX11 - }; + public List AllowedPlatformApis { get; set; } = null; } } diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index 0436f6ac52..cbc9bbfb85 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -36,7 +36,7 @@ namespace Avalonia.OpenGL throw new OpenGlException("eglGetPlatformDisplayEXT is not supported by libegl.dll"); var allowedApis = AvaloniaLocator.Current.GetService()?.AllowedPlatformApis - ?? new List {AngleOptions.PlatformApi.DirectX9}; + ?? new List {AngleOptions.PlatformApi.DirectX11}; foreach (var platformApi in allowedApis) { From 531b64e4665184d9df041f2b6b4e911b22151861 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 16:35:43 +0100 Subject: [PATCH 04/10] dont allocate lists for angleoptions. --- src/Avalonia.OpenGL/AngleOptions.cs | 2 +- src/Avalonia.OpenGL/EglDisplay.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.OpenGL/AngleOptions.cs b/src/Avalonia.OpenGL/AngleOptions.cs index af1d1177ed..84744288ed 100644 --- a/src/Avalonia.OpenGL/AngleOptions.cs +++ b/src/Avalonia.OpenGL/AngleOptions.cs @@ -10,6 +10,6 @@ namespace Avalonia.OpenGL DirectX11 } - public List AllowedPlatformApis { get; set; } = null; + public IList AllowedPlatformApis { get; set; } = null; } } diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index cbc9bbfb85..2c3cadd620 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -36,7 +36,7 @@ namespace Avalonia.OpenGL throw new OpenGlException("eglGetPlatformDisplayEXT is not supported by libegl.dll"); var allowedApis = AvaloniaLocator.Current.GetService()?.AllowedPlatformApis - ?? new List {AngleOptions.PlatformApi.DirectX11}; + ?? new [] {AngleOptions.PlatformApi.DirectX11}; foreach (var platformApi in allowedApis) { From a752c398bb809db466f68a5365142f20e40baa93 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 16:38:47 +0100 Subject: [PATCH 05/10] allow fallback to dx9. --- src/Avalonia.OpenGL/EglDisplay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index 2c3cadd620..89dee4fc37 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -36,7 +36,7 @@ namespace Avalonia.OpenGL throw new OpenGlException("eglGetPlatformDisplayEXT is not supported by libegl.dll"); var allowedApis = AvaloniaLocator.Current.GetService()?.AllowedPlatformApis - ?? new [] {AngleOptions.PlatformApi.DirectX11}; + ?? new [] {AngleOptions.PlatformApi.DirectX11, AngleOptions.PlatformApi.DirectX9}; foreach (var platformApi in allowedApis) { From 8614c060028ded20b6fd5e72103425f929134cb8 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 16:47:25 +0100 Subject: [PATCH 06/10] add WGL option. --- src/Avalonia.OpenGL/AngleOptions.cs | 3 ++- src/Avalonia.OpenGL/EglDisplay.cs | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.OpenGL/AngleOptions.cs b/src/Avalonia.OpenGL/AngleOptions.cs index 84744288ed..40a673b574 100644 --- a/src/Avalonia.OpenGL/AngleOptions.cs +++ b/src/Avalonia.OpenGL/AngleOptions.cs @@ -7,7 +7,8 @@ namespace Avalonia.OpenGL public enum PlatformApi { DirectX9, - DirectX11 + DirectX11, + WGL } public IList AllowedPlatformApis { get; set; } = null; diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index 89dee4fc37..c84ef4533d 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -36,7 +36,12 @@ namespace Avalonia.OpenGL throw new OpenGlException("eglGetPlatformDisplayEXT is not supported by libegl.dll"); var allowedApis = AvaloniaLocator.Current.GetService()?.AllowedPlatformApis - ?? new [] {AngleOptions.PlatformApi.DirectX11, AngleOptions.PlatformApi.DirectX9}; + ?? new [] + { + AngleOptions.PlatformApi.WGL, + AngleOptions.PlatformApi.DirectX11, + AngleOptions.PlatformApi.DirectX9 + }; foreach (var platformApi in allowedApis) { @@ -45,6 +50,8 @@ namespace Avalonia.OpenGL dapi = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; else if (platformApi == AngleOptions.PlatformApi.DirectX11) dapi = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; + else if (platformApi == AngleOptions.PlatformApi.WGL) + dapi = EGL_PLATFORM_ANGLE_TYPE_ANGLE; else continue; From fc12b9fee9ba06e48702340878ee79fe3ebb9a87 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 4 Sep 2020 16:50:41 +0100 Subject: [PATCH 07/10] define correct consts for opengl. --- src/Avalonia.OpenGL/EglConsts.cs | 3 +++ src/Avalonia.OpenGL/EglDisplay.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.OpenGL/EglConsts.cs b/src/Avalonia.OpenGL/EglConsts.cs index 62fb3faef6..5cc732ef6a 100644 --- a/src/Avalonia.OpenGL/EglConsts.cs +++ b/src/Avalonia.OpenGL/EglConsts.cs @@ -186,6 +186,9 @@ namespace Avalonia.OpenGL public const int EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE = 0x3206; public const int EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE = 0x320A; public const int EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE = 0x345E; + + public const int EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE = 0x320D; + public const int EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE = 0x320E; //EGL_ANGLE_platform_angle_d3d public const int EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE = 0x3209; diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index c84ef4533d..55d0ebb59a 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -51,7 +51,7 @@ namespace Avalonia.OpenGL else if (platformApi == AngleOptions.PlatformApi.DirectX11) dapi = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; else if (platformApi == AngleOptions.PlatformApi.WGL) - dapi = EGL_PLATFORM_ANGLE_TYPE_ANGLE; + dapi = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; else continue; From 39a82ce66e2c8e2d11226d6a0e7a2557b20380d4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Sat, 5 Sep 2020 12:21:20 +0100 Subject: [PATCH 08/10] Remove WGL option. --- src/Avalonia.OpenGL/AngleOptions.cs | 3 +-- src/Avalonia.OpenGL/EglDisplay.cs | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Avalonia.OpenGL/AngleOptions.cs b/src/Avalonia.OpenGL/AngleOptions.cs index 40a673b574..84744288ed 100644 --- a/src/Avalonia.OpenGL/AngleOptions.cs +++ b/src/Avalonia.OpenGL/AngleOptions.cs @@ -7,8 +7,7 @@ namespace Avalonia.OpenGL public enum PlatformApi { DirectX9, - DirectX11, - WGL + DirectX11 } public IList AllowedPlatformApis { get; set; } = null; diff --git a/src/Avalonia.OpenGL/EglDisplay.cs b/src/Avalonia.OpenGL/EglDisplay.cs index 55d0ebb59a..ce5fd50a07 100644 --- a/src/Avalonia.OpenGL/EglDisplay.cs +++ b/src/Avalonia.OpenGL/EglDisplay.cs @@ -38,7 +38,6 @@ namespace Avalonia.OpenGL var allowedApis = AvaloniaLocator.Current.GetService()?.AllowedPlatformApis ?? new [] { - AngleOptions.PlatformApi.WGL, AngleOptions.PlatformApi.DirectX11, AngleOptions.PlatformApi.DirectX9 }; @@ -50,8 +49,6 @@ namespace Avalonia.OpenGL dapi = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; else if (platformApi == AngleOptions.PlatformApi.DirectX11) dapi = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; - else if (platformApi == AngleOptions.PlatformApi.WGL) - dapi = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; else continue; From dd9c4666a97620571c93536e9543cd5a11aee32d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 8 Sep 2020 21:16:43 +0100 Subject: [PATCH 09/10] clarify max skia cache size property. --- src/Skia/Avalonia.Skia/SkiaOptions.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Skia/Avalonia.Skia/SkiaOptions.cs b/src/Skia/Avalonia.Skia/SkiaOptions.cs index d14120204c..afd17acf97 100644 --- a/src/Skia/Avalonia.Skia/SkiaOptions.cs +++ b/src/Skia/Avalonia.Skia/SkiaOptions.cs @@ -15,6 +15,8 @@ namespace Avalonia /// /// The maximum number of bytes for video memory to store textures and resources. + /// This is set by default to the recommended value for Avalonia. + /// Setting this to null will give you the default Skia value. /// public long? MaxGpuResourceSizeBytes { get; set; } = 1024 * 600 * 4 * 12; // ~28mb 12x 1024 x 600 textures. } From d26445fdcdbb2970e4c61ed51c7c41f7fd55fc1b Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 8 Sep 2020 21:31:47 +0100 Subject: [PATCH 10/10] use remarks tag. --- src/Skia/Avalonia.Skia/SkiaOptions.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Skia/Avalonia.Skia/SkiaOptions.cs b/src/Skia/Avalonia.Skia/SkiaOptions.cs index afd17acf97..493263677d 100644 --- a/src/Skia/Avalonia.Skia/SkiaOptions.cs +++ b/src/Skia/Avalonia.Skia/SkiaOptions.cs @@ -15,9 +15,11 @@ namespace Avalonia /// /// The maximum number of bytes for video memory to store textures and resources. + /// + /// /// This is set by default to the recommended value for Avalonia. /// Setting this to null will give you the default Skia value. - /// + /// public long? MaxGpuResourceSizeBytes { get; set; } = 1024 * 600 * 4 * 12; // ~28mb 12x 1024 x 600 textures. } }