From a6098716d34542759d4e9190c1b13dc4b915357b Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 12 Apr 2022 13:39:12 +0100 Subject: [PATCH 1/2] add win32 gpu blacklist. --- src/Windows/Avalonia.Win32/Win32GlManager.cs | 18 ++++++++++++++++-- src/Windows/Avalonia.Win32/Win32Platform.cs | 5 +++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Windows/Avalonia.Win32/Win32GlManager.cs b/src/Windows/Avalonia.Win32/Win32GlManager.cs index 0376a41f8c..2a3f4a3384 100644 --- a/src/Windows/Avalonia.Win32/Win32GlManager.cs +++ b/src/Windows/Avalonia.Win32/Win32GlManager.cs @@ -24,9 +24,23 @@ namespace Avalonia.Win32 { var egl = EglPlatformOpenGlInterface.TryCreate(() => new AngleWin32EglDisplay()); - if (egl != null && opts.UseWindowsUIComposition) + if (egl != null) { - WinUICompositorConnection.TryCreateAndRegister(egl, opts.CompositionBackdropCornerRadius); + if (opts.EglRendererBlacklist != null) + { + foreach (var item in opts.EglRendererBlacklist) + { + if (egl.PrimaryEglContext.GlInterface.Renderer.Contains(item)) + { + return null; + } + } + } + + if (opts.UseWindowsUIComposition) + { + WinUICompositorConnection.TryCreateAndRegister(egl, opts.CompositionBackdropCornerRadius); + } } return egl; diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs index 5cfbab40e4..d46f69bc61 100644 --- a/src/Windows/Avalonia.Win32/Win32Platform.cs +++ b/src/Windows/Avalonia.Win32/Win32Platform.cs @@ -56,6 +56,11 @@ namespace Avalonia /// GPU rendering will not be enabled if this is set to false. /// public bool? AllowEglInitialization { get; set; } + + public IList EglRendererBlacklist { get; set; } = new List + { + "Microsoft Basic Renderer" + }; /// /// Enables multitouch support. The default value is true. From b057a4df203c93034d7670a0cf302f03a8a1ceac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Wed, 13 Apr 2022 22:44:39 +0200 Subject: [PATCH 2/2] Fix driver name --- src/Windows/Avalonia.Win32/Win32Platform.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs index d46f69bc61..dc5e5324c4 100644 --- a/src/Windows/Avalonia.Win32/Win32Platform.cs +++ b/src/Windows/Avalonia.Win32/Win32Platform.cs @@ -59,7 +59,7 @@ namespace Avalonia public IList EglRendererBlacklist { get; set; } = new List { - "Microsoft Basic Renderer" + "Microsoft Basic Render" }; ///