From 7bc4971cf948b506f125ae29fd581795ccb3a10d Mon Sep 17 00:00:00 2001
From: Mary <mary@mary.zone>
Date: Sun, 15 May 2022 16:02:15 +0200
Subject: [PATCH] misc: Clean up of CS project after Avalonia merge (#3340)

This reformat Avalonia csproj file, remove unused deps and reajust
Ryujinx csproj a bit after some other changes

Also updated OpenTK.Graphics
---
 .../Ryujinx.Audio.Backends.OpenAL.csproj      |   2 +-
 Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs   |   8 +-
 Ryujinx.Ava/Ryujinx.Ava.csproj                | 281 +++++++++---------
 .../Applet/AvaloniaDynamicTextInputHandler.cs |  15 +-
 Ryujinx.Graphics.OpenGL/Pipeline.cs           |   2 +-
 .../Ryujinx.Graphics.OpenGL.csproj            |   2 +-
 Ryujinx/Ryujinx.csproj                        |  31 +-
 7 files changed, 172 insertions(+), 169 deletions(-)

diff --git a/Ryujinx.Audio.Backends.OpenAL/Ryujinx.Audio.Backends.OpenAL.csproj b/Ryujinx.Audio.Backends.OpenAL/Ryujinx.Audio.Backends.OpenAL.csproj
index fd648715ac..f1e783e6e6 100644
--- a/Ryujinx.Audio.Backends.OpenAL/Ryujinx.Audio.Backends.OpenAL.csproj
+++ b/Ryujinx.Audio.Backends.OpenAL/Ryujinx.Audio.Backends.OpenAL.csproj
@@ -5,7 +5,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="OpenTK.OpenAL" Version="4.5.0" />
+    <PackageReference Include="OpenTK.OpenAL" Version="4.7.2" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs b/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
index 3babfe9df1..1177e67a15 100644
--- a/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
+++ b/Ryujinx.Ava/Input/AvaloniaKeyboardDriver.cs
@@ -4,11 +4,9 @@ using Ryujinx.Ava.Common.Locale;
 using Ryujinx.Input;
 using System;
 using System.Collections.Generic;
-using System.Linq;
 
 using AvaKey = Avalonia.Input.Key;
 using Key = Ryujinx.Input.Key;
-using TextInputEventArgs = OpenTK.Windowing.Common.TextInputEventArgs;
 
 namespace Ryujinx.Ava.Input
 {
@@ -20,7 +18,7 @@ namespace Ryujinx.Ava.Input
 
         public event EventHandler<KeyEventArgs> KeyPressed;
         public event EventHandler<KeyEventArgs> KeyRelease;
-        public event EventHandler<TextInputEventArgs> TextInput;
+        public event EventHandler<string> TextInput;
 
         public string DriverName => "Avalonia";
 
@@ -36,9 +34,9 @@ namespace Ryujinx.Ava.Input
             _control.TextInput += Control_TextInput;
         }
 
-        private void Control_TextInput(object sender, Avalonia.Input.TextInputEventArgs e)
+        private void Control_TextInput(object sender, TextInputEventArgs e)
         {
-            TextInput?.Invoke(this, new TextInputEventArgs(e.Text.First()));
+            TextInput?.Invoke(this, e.Text);
         }
 
         public event Action<string> OnGamepadConnected
diff --git a/Ryujinx.Ava/Ryujinx.Ava.csproj b/Ryujinx.Ava/Ryujinx.Ava.csproj
index f966f646ec..e5b7904d7c 100644
--- a/Ryujinx.Ava/Ryujinx.Ava.csproj
+++ b/Ryujinx.Ava/Ryujinx.Ava.csproj
@@ -1,141 +1,144 @@
 <Project Sdk="Microsoft.NET.Sdk">
-    <PropertyGroup>
-        <TargetFramework>net6.0</TargetFramework>
-        <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
-        <OutputType>Exe</OutputType>
-        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>1.0.0-dirty</Version>
-        <RootNamespace>Ryujinx.Ava</RootNamespace>
-        <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
-    </PropertyGroup>
-	<PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
-		<PublishSingleFile>true</PublishSingleFile>
-		<PublishTrimmed>true</PublishTrimmed>
-	</PropertyGroup>
-    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
-        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
-        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    </PropertyGroup>
-	<ItemGroup>
-		<ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>alsoft.ini</TargetPath>
-		</ContentWithTargetPath>
-		<ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>THIRDPARTY.md</TargetPath>
-		</ContentWithTargetPath>
-		<ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
-		</ContentWithTargetPath>
-	</ItemGroup>
-    <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
-        <PublishSingleFile>true</PublishSingleFile>
-        <PublishTrimmed>true</PublishTrimmed>
-    </PropertyGroup>
-    <ItemGroup>
-        <AvaloniaResource Include="Ui\**\*.xaml">
-            <SubType>Designer</SubType>
-        </AvaloniaResource>
-        <None Remove="Assets\Locales\el_GR.json" />
-        <None Remove="Assets\Locales\ru_RU.json" />
-        <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
-    </ItemGroup>
-    <ItemGroup>
-        <None Remove="Assets\Styles\BaseDark.xaml" />
-        <None Remove="Assets\Styles\BaseLight.xaml" />
-    </ItemGroup>
-    <ItemGroup>
-        <AvaloniaResource Include="Assets\Styles\BaseLight.xaml">
-            <Generator>MSBuild:Compile</Generator>
-        </AvaloniaResource>
-        <AvaloniaResource Include="Assets\Styles\BaseDark.xaml">
-            <Generator>MSBuild:Compile</Generator>
-        </AvaloniaResource>
-        <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
-    </ItemGroup>
-    <ItemGroup>
-        <PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.14" />
-        <PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="0.10.14" />
-        <PackageReference Include="Avalonia.Svg" Version="0.10.13" />
-        <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.13" />
-        <PackageReference Include="DynamicData" Version="7.7.1" />
-        <PackageReference Include="FluentAvaloniaUI" Version="1.3.4" />
-        <PackageReference Include="Crc32.NET" Version="1.2.0" />
-        <PackageReference Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
-        <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
-        <PackageReference Include="OpenTK" Version="4.6.3" />
-        <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
-        <PackageReference Include="SharpZipLib" Version="1.3.3" />
-        <PackageReference Include="Avalonia" Version="0.10.14" />
-        <PackageReference Include="Avalonia.Desktop" Version="0.10.14" />
-        <PackageReference Include="Avalonia.Diagnostics" Version="0.10.14" />
-        <PackageReference Include="Silk.NET.Vulkan" Version="2.2.0" />
-        <PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" Version="2.2.0" />
-        <PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" Version="2.2.0" />
-        <PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
-        <PackageReference Include="SPB" Version="0.0.4-build17" />
-    </ItemGroup>
-    <ItemGroup>
-        <EmbeddedResource Include="Assets\Locales\el_GR.json" />
-        <EmbeddedResource Include="Assets\Locales\en_US.json" />
-        <EmbeddedResource Include="Assets\Locales\es_ES.json" />
-        <EmbeddedResource Include="Assets\Locales\fr_FR.json" />
-        <EmbeddedResource Include="Assets\Locales\de_DE.json" />
-        <EmbeddedResource Include="Assets\Locales\it_IT.json" />
-        <EmbeddedResource Include="Assets\Locales\ko_KR.json" />
-        <EmbeddedResource Include="Assets\Locales\pt_BR.json" />
-        <EmbeddedResource Include="Assets\Locales\ru_RU.json" />
-	    <EmbeddedResource Include="Assets\Locales\tr_TR.json" />    
-        <EmbeddedResource Include="Assets\Styles\Styles.xaml" />
-    </ItemGroup>
-    <ItemGroup>
-        <ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
-        <ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
-        <ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
-        <ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
-        <ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" />
-        <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
-        <ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
-        <ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" />
-        <ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
-        <ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
-        <ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" />
-    </ItemGroup>
-    <ItemGroup>
-        <Compile Update="App.axaml.cs">
-            <DependentUpon>App.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Windows\MainWindow.axaml.cs">
-            <DependentUpon>MainWindow.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Windows\AboutWindow.axaml.cs">
-            <DependentUpon>AboutWindow.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Applet\ErrorAppletWindow.axaml.cs">
-            <DependentUpon>ProfileWindow.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Applet\SwkbdAppletWindow.axaml.cs">
-            <DependentUpon>ProfileWindow.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Controls\InputDialog.axaml.cs">
-            <DependentUpon>InputDialog.axaml</DependentUpon>
-            <SubType>Code</SubType>
-        </Compile>
-        <Compile Update="Ui\Windows\ContentDialogOverlay.xaml.cs">
-            <DependentUpon>ContentDialogOverlay.xaml</DependentUpon>
-        </Compile>
-        <Compile Update="Ui\Controls\GameListView.axaml.cs">
-          <DependentUpon>GameListView.axaml</DependentUpon>
-          <SubType>Code</SubType>
-        </Compile>
-    </ItemGroup>
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
+    <OutputType>Exe</OutputType>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Version>1.0.0-dirty</Version>
+    <TieredCompilation>false</TieredCompilation>
+    <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
+    <DefineConstants Condition=" '$(ExtraDefineConstants)' != '' ">$(DefineConstants);$(ExtraDefineConstants)</DefineConstants>
+    <RootNamespace>Ryujinx.Ava</RootNamespace>
+    <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
+    <PublishSingleFile>true</PublishSingleFile>
+    <PublishTrimmed>true</PublishTrimmed>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Avalonia" Version="0.10.14" />
+    <PackageReference Include="Avalonia.Desktop" Version="0.10.14" />
+    <PackageReference Include="Avalonia.Diagnostics" Version="0.10.14" />
+    <PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.14" />
+    <PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="0.10.14" />
+    <PackageReference Include="Avalonia.Svg" Version="0.10.13" />
+    <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.13" />
+    <PackageReference Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
+    <PackageReference Include="DynamicData" Version="7.7.14" />
+    <PackageReference Include="FluentAvaloniaUI" Version="1.3.4" />
+
+    <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
+    <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
+    <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
+    <PackageReference Include="SPB" Version="0.0.4-build17" />
+    <PackageReference Include="SharpZipLib" Version="1.3.3" />
+    <PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
+    <ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
+    <ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
+    <ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
+    <ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" />
+    <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
+    <ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
+    <ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" />
+    <ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
+    <ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
+    <ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>alsoft.ini</TargetPath>
+    </ContentWithTargetPath>
+    <ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>THIRDPARTY.md</TargetPath>
+    </ContentWithTargetPath>
+    <ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
+    </ContentWithTargetPath>
+  </ItemGroup>
+
+  <ItemGroup>
+    <AvaloniaResource Include="Ui\**\*.xaml">
+      <SubType>Designer</SubType>
+    </AvaloniaResource>
+    <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
+    <AvaloniaResource Include="Assets\Styles\BaseLight.xaml">
+      <Generator>MSBuild:Compile</Generator>
+    </AvaloniaResource>
+    <AvaloniaResource Include="Assets\Styles\BaseDark.xaml">
+      <Generator>MSBuild:Compile</Generator>
+    </AvaloniaResource>
+    <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
+
+    <Compile Update="App.axaml.cs">
+      <DependentUpon>App.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Windows\MainWindow.axaml.cs">
+      <DependentUpon>MainWindow.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Windows\AboutWindow.axaml.cs">
+      <DependentUpon>AboutWindow.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Applet\ErrorAppletWindow.axaml.cs">
+      <DependentUpon>ProfileWindow.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Applet\SwkbdAppletWindow.axaml.cs">
+      <DependentUpon>ProfileWindow.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Controls\InputDialog.axaml.cs">
+      <DependentUpon>InputDialog.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Update="Ui\Windows\ContentDialogOverlay.xaml.cs">
+      <DependentUpon>ContentDialogOverlay.xaml</DependentUpon>
+    </Compile>
+    <Compile Update="Ui\Controls\GameListView.axaml.cs">
+      <DependentUpon>GameListView.axaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Remove="Assets\Locales\el_GR.json" />
+    <None Remove="Assets\Locales\en_US.json" />
+    <None Remove="Assets\Locales\es_ES.json" />
+    <None Remove="Assets\Locales\fr_FR.json" />
+    <None Remove="Assets\Locales\de_DE.json" />
+    <None Remove="Assets\Locales\it_IT.json" />
+    <None Remove="Assets\Locales\ko_KR.json" />
+    <None Remove="Assets\Locales\pt_BR.json" />
+    <None Remove="Assets\Locales\ru_RU.json" />
+    <None Remove="Assets\Locales\tr_TR.json" />
+    <None Remove="Assets\Styles\Styles.xaml" />
+    <None Remove="Assets\Styles\BaseDark.xaml" />
+    <None Remove="Assets\Styles\BaseLight.xaml" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Include="Assets\Locales\el_GR.json" />
+    <EmbeddedResource Include="Assets\Locales\en_US.json" />
+    <EmbeddedResource Include="Assets\Locales\es_ES.json" />
+    <EmbeddedResource Include="Assets\Locales\fr_FR.json" />
+    <EmbeddedResource Include="Assets\Locales\de_DE.json" />
+    <EmbeddedResource Include="Assets\Locales\it_IT.json" />
+    <EmbeddedResource Include="Assets\Locales\ko_KR.json" />
+    <EmbeddedResource Include="Assets\Locales\pt_BR.json" />
+    <EmbeddedResource Include="Assets\Locales\ru_RU.json" />
+    <EmbeddedResource Include="Assets\Locales\tr_TR.json" />
+    <EmbeddedResource Include="Assets\Styles\Styles.xaml" />
+  </ItemGroup>
 </Project>
diff --git a/Ryujinx.Ava/Ui/Applet/AvaloniaDynamicTextInputHandler.cs b/Ryujinx.Ava/Ui/Applet/AvaloniaDynamicTextInputHandler.cs
index 714b636076..294e896546 100644
--- a/Ryujinx.Ava/Ui/Applet/AvaloniaDynamicTextInputHandler.cs
+++ b/Ryujinx.Ava/Ui/Applet/AvaloniaDynamicTextInputHandler.cs
@@ -1,15 +1,16 @@
 using Avalonia;
 using Avalonia.Controls;
+using Avalonia.Input;
 using Avalonia.Threading;
-using OpenTK.Windowing.Common;
 using Ryujinx.Ava.Input;
 using Ryujinx.Ava.Ui.Controls;
 using Ryujinx.Ava.Ui.Windows;
-using Ryujinx.Common.Configuration.Hid;
 using Ryujinx.HLE.Ui;
 using System;
 using System.Threading;
 
+using HidKey = Ryujinx.Common.Configuration.Hid.Key;
+
 namespace Ryujinx.Ava.Ui.Applet
 {
     class AvaloniaDynamicTextInputHandler : IDynamicTextInputHandler
@@ -54,20 +55,20 @@ namespace Ryujinx.Ava.Ui.Applet
             TextChangedEvent?.Invoke(_hiddenTextBox.Text ?? string.Empty, _hiddenTextBox.SelectionStart, _hiddenTextBox.SelectionEnd, true);
         }
 
-        private void AvaloniaDynamicTextInputHandler_TextInput(object sender, TextInputEventArgs e)
+        private void AvaloniaDynamicTextInputHandler_TextInput(object sender, string text)
         {
             Dispatcher.UIThread.InvokeAsync(() =>
             {
                 if (_canProcessInput)
                 {
-                    _hiddenTextBox.SendText(e.AsString);
+                    _hiddenTextBox.SendText(text);
                 }
             });
         }
 
         private void AvaloniaDynamicTextInputHandler_KeyRelease(object sender, Avalonia.Input.KeyEventArgs e)
         {
-            var key = (Key)AvaloniaMappingHelper.ToInputKey(e.Key);
+            var key = (HidKey)AvaloniaMappingHelper.ToInputKey(e.Key);
 
             if (!(KeyReleasedEvent?.Invoke(key)).GetValueOrDefault(true))
             {
@@ -85,9 +86,9 @@ namespace Ryujinx.Ava.Ui.Applet
             });
         }
 
-        private void AvaloniaDynamicTextInputHandler_KeyPressed(object sender, Avalonia.Input.KeyEventArgs e)
+        private void AvaloniaDynamicTextInputHandler_KeyPressed(object sender, KeyEventArgs e)
         {
-            var key = (Key)AvaloniaMappingHelper.ToInputKey(e.Key);
+            var key = (HidKey)AvaloniaMappingHelper.ToInputKey(e.Key);
 
             if (!(KeyPressedEvent?.Invoke(key)).GetValueOrDefault(true))
             {
diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs
index 0326f9809b..ced41d48f7 100644
--- a/Ryujinx.Graphics.OpenGL/Pipeline.cs
+++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs
@@ -677,7 +677,7 @@ namespace Ryujinx.Graphics.OpenGL
 
             GL.MultiDrawElementsIndirectCount(
                 _primitiveType,
-                (Version46)_elementsType,
+                (All)_elementsType,
                 (IntPtr)indirectBuffer.Offset,
                 (IntPtr)parameterBuffer.Offset,
                 maxDrawCount,
diff --git a/Ryujinx.Graphics.OpenGL/Ryujinx.Graphics.OpenGL.csproj b/Ryujinx.Graphics.OpenGL/Ryujinx.Graphics.OpenGL.csproj
index 3f4bcdee48..d84ab23687 100644
--- a/Ryujinx.Graphics.OpenGL/Ryujinx.Graphics.OpenGL.csproj
+++ b/Ryujinx.Graphics.OpenGL/Ryujinx.Graphics.OpenGL.csproj
@@ -6,7 +6,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="OpenTK.Graphics" Version="4.5.0" />
+    <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj
index 7bbc1ca963..31da7d20af 100644
--- a/Ryujinx/Ryujinx.csproj
+++ b/Ryujinx/Ryujinx.csproj
@@ -23,9 +23,10 @@
     <PackageReference Include="GtkSharp.Dependencies" Version="1.1.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
     <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
     <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
-    <PackageReference Include="OpenTK.Graphics" Version="4.5.0" />
+    <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
     <PackageReference Include="SPB" Version="0.0.4-build17" />
     <PackageReference Include="SharpZipLib" Version="1.3.3" />
+    <PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
   </ItemGroup>
 
   <ItemGroup>
@@ -42,20 +43,20 @@
     <ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" />
   </ItemGroup>
 
-	<ItemGroup>
-		<ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>alsoft.ini</TargetPath>
-		</ContentWithTargetPath>
-		<ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>THIRDPARTY.md</TargetPath>
-		</ContentWithTargetPath>
-		<ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
-			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
-			<TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
-		</ContentWithTargetPath>
-	</ItemGroup>
+  <ItemGroup>
+    <ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>alsoft.ini</TargetPath>
+    </ContentWithTargetPath>
+    <ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>THIRDPARTY.md</TargetPath>
+    </ContentWithTargetPath>
+    <ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
+    </ContentWithTargetPath>
+  </ItemGroup>
 
   <!-- Due to .net core 3.1 embedded resource loading -->
   <PropertyGroup>