From e735fc1b6f15c1c95b2b6dbdb03610af8547fafd Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 00:21:42 +0000
Subject: [PATCH 1/9] Fix Vulkan and Oboe support on Android
---
external/osu-framework | 1 +
oboe_patch.txt | 25 ++
osu.Android.props | 2 +-
osu.Android.slnf | 5 +-
osu.Android/OboeAudioRedirector.cs | 6 +
osu.Android/OsuGameAndroid.cs | 3 +-
osu.Game/OsuGameBase.cs | 1 +
.../Sections/Graphics/RendererSettings.cs | 3 +-
osu.Game/osu.Game.csproj | 2 +-
osu.sln | 380 ++++++++++++++++--
osu_game_patch.txt | 11 +
renderer_settings_patch.txt | 22 +
12 files changed, 429 insertions(+), 32 deletions(-)
create mode 160000 external/osu-framework
create mode 100644 oboe_patch.txt
create mode 100644 osu_game_patch.txt
create mode 100644 renderer_settings_patch.txt
diff --git a/external/osu-framework b/external/osu-framework
new file mode 160000
index 000000000000..03d869d74a95
--- /dev/null
+++ b/external/osu-framework
@@ -0,0 +1 @@
+Subproject commit 03d869d74a95ef10944785078e9e6bae17b3e995
diff --git a/oboe_patch.txt b/oboe_patch.txt
new file mode 100644
index 000000000000..6061ed24951c
--- /dev/null
+++ b/oboe_patch.txt
@@ -0,0 +1,25 @@
+<<<<<<< SEARCH
+ addRootMixer(audioManager.TrackMixer);
+ addRootMixer(audioManager.SampleMixer);
+
+ if (mixerHandles.Count == 0)
+ {
+ addMixer(audioManager.TrackMixer);
+ addMixer(audioManager.SampleMixer);
+ }
+=======
+ addRootMixer(audioManager.TrackMixer);
+ addRootMixer(audioManager.SampleMixer);
+
+ foreach (var mixer in audioManager.ActiveMixers)
+ addRootMixer(mixer);
+
+ if (mixerHandles.Count == 0)
+ {
+ addMixer(audioManager.TrackMixer);
+ addMixer(audioManager.SampleMixer);
+
+ foreach (var mixer in audioManager.ActiveMixers)
+ addMixer(mixer);
+ }
+>>>>>>> REPLACE
diff --git a/osu.Android.props b/osu.Android.props
index 9ad425da8662..a17389fad470 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -31,7 +31,7 @@
This is safe because .NET guarantees backward compatibility for loading net8.0 assemblies
in a net10.0 runtime, and Android API changes between 34→36 are additive.
TODO: Remove this comment once ppy.osu.Framework.Android ships net10.0-android assets. -->
-
+
diff --git a/osu.sln b/osu.sln
index 63da18c23ee6..05ce0c3768b3 100644
--- a/osu.sln
+++ b/osu.sln
@@ -100,164 +100,505 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CodeAnalysis", "CodeAnalysi
CodeAnalysis\osu.globalconfig = CodeAnalysis\osu.globalconfig
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "external", "external", "{A288BEE0-695A-BEEA-455C-649571D89326}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "osu-framework", "osu-framework", "{1C635F9F-56C2-E55F-1582-090CF138E5B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework", "external\osu-framework\osu.Framework\osu.Framework.csproj", "{4A7CC044-B73D-4600-82FD-B2C017543CE8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.NativeLibs", "external\osu-framework\osu.Framework.NativeLibs\osu.Framework.NativeLibs.csproj", "{7F24B1B8-95AA-4E18-998E-01CF73D33377}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.Android", "external\osu-framework\osu.Framework.Android\osu.Framework.Android.csproj", "{29193C83-54F5-449F-85A5-77A0952A4E6A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|x64.Build.0 = Debug|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Debug|x86.Build.0 = Debug|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|x64.ActiveCfg = Release|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|x64.Build.0 = Release|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|x86.ActiveCfg = Release|Any CPU
+ {2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}.Release|x86.Build.0 = Release|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|x64.Build.0 = Debug|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|x86.Build.0 = Debug|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|x64.ActiveCfg = Release|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|x64.Build.0 = Release|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|x86.ActiveCfg = Release|Any CPU
+ {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|x86.Build.0 = Release|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|x64.Build.0 = Debug|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|x86.Build.0 = Debug|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|x64.ActiveCfg = Release|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|x64.Build.0 = Release|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|x86.ActiveCfg = Release|Any CPU
+ {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|x86.Build.0 = Release|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|x64.Build.0 = Debug|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|x86.Build.0 = Debug|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|x64.ActiveCfg = Release|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|x64.Build.0 = Release|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|x86.ActiveCfg = Release|Any CPU
+ {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|x86.Build.0 = Release|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|x64.Build.0 = Debug|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|x86.Build.0 = Debug|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.Build.0 = Release|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|x64.ActiveCfg = Release|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|x64.Build.0 = Release|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|x86.ActiveCfg = Release|Any CPU
+ {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|x86.Build.0 = Release|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|x64.Build.0 = Debug|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|x86.Build.0 = Debug|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|x64.ActiveCfg = Release|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|x64.Build.0 = Release|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|x86.ActiveCfg = Release|Any CPU
+ {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|x86.Build.0 = Release|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|x64.Build.0 = Debug|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Debug|x86.Build.0 = Debug|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{419659FD-72EA-4678-9EB8-B22A746CED70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Release|x64.ActiveCfg = Release|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Release|x64.Build.0 = Release|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Release|x86.ActiveCfg = Release|Any CPU
+ {419659FD-72EA-4678-9EB8-B22A746CED70}.Release|x86.Build.0 = Release|Any CPU
{3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|x64.Build.0 = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Debug|x86.Build.0 = Debug|Any CPU
{3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|x64.ActiveCfg = Release|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|x64.Build.0 = Release|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|x86.ActiveCfg = Release|Any CPU
+ {3AD63355-D6B1-4365-8D31-5652C989BEF1}.Release|x86.Build.0 = Release|Any CPU
{7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|x64.Build.0 = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Debug|x86.Build.0 = Debug|Any CPU
{7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|x64.ActiveCfg = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|x64.Build.0 = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|x86.ActiveCfg = Release|Any CPU
+ {7E9E9C34-B204-406B-82E2-E01E900699CD}.Release|x86.Build.0 = Release|Any CPU
{B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|x64.Build.0 = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Debug|x86.Build.0 = Debug|Any CPU
{B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|x64.ActiveCfg = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|x64.Build.0 = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|x86.ActiveCfg = Release|Any CPU
+ {B698561F-FB28-46B1-857E-3CA7B92F9D70}.Release|x86.Build.0 = Release|Any CPU
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|x64.Build.0 = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Debug|x86.Build.0 = Debug|Any CPU
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|x64.ActiveCfg = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|x64.Build.0 = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|x86.ActiveCfg = Release|Any CPU
+ {6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|x86.Build.0 = Release|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|x64.Build.0 = Debug|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|x86.Build.0 = Debug|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|x64.ActiveCfg = Release|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|x64.Build.0 = Release|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|x86.ActiveCfg = Release|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|x86.Build.0 = Release|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|x64.Build.0 = Debug|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|x86.Build.0 = Debug|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|Any CPU.Build.0 = Release|Any CPU
- {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|x64.ActiveCfg = Release|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|x64.Build.0 = Release|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|x86.ActiveCfg = Release|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|x86.Build.0 = Release|Any CPU
{3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|x64.Build.0 = Debug|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|x86.Build.0 = Debug|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|x64.ActiveCfg = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|x64.Build.0 = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|x86.ActiveCfg = Release|Any CPU
+ {3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|x86.Build.0 = Release|Any CPU
{65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|x64.Build.0 = Debug|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Debug|x86.Build.0 = Debug|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|Any CPU.Build.0 = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|x64.ActiveCfg = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|x64.Build.0 = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|x86.ActiveCfg = Release|Any CPU
+ {65FF8E19-6934-469B-B690-23C6D6E56A17}.Release|x86.Build.0 = Release|Any CPU
{7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|x64.Build.0 = Debug|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Debug|x86.Build.0 = Debug|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|x64.ActiveCfg = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|x64.Build.0 = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|x86.ActiveCfg = Release|Any CPU
+ {7E408809-66AC-49D1-AF4D-98834F9B979A}.Release|x86.Build.0 = Release|Any CPU
{6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|x64.Build.0 = Debug|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Debug|x86.Build.0 = Debug|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|x64.ActiveCfg = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|x64.Build.0 = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|x86.ActiveCfg = Release|Any CPU
+ {6653CA6F-DB06-4604-A3FD-762E25C2AF96}.Release|x86.Build.0 = Release|Any CPU
{39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|x64.Build.0 = Debug|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Debug|x86.Build.0 = Debug|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|x64.ActiveCfg = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|x64.Build.0 = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|x86.ActiveCfg = Release|Any CPU
+ {39FD990E-B6CE-4B2A-999F-BC008CF2C64C}.Release|x86.Build.0 = Release|Any CPU
{4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|x64.Build.0 = Debug|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Debug|x86.Build.0 = Debug|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|x64.ActiveCfg = Release|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|x64.Build.0 = Release|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|x86.ActiveCfg = Release|Any CPU
+ {4004C7B7-1A62-43F1-9DF2-52450FA67E70}.Release|x86.Build.0 = Release|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|x64.Build.0 = Debug|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Debug|x86.Build.0 = Debug|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|Any CPU.Build.0 = Release|Any CPU
{D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|x64.ActiveCfg = Release|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|x64.Build.0 = Release|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|x86.ActiveCfg = Release|Any CPU
+ {D1D5F9A8-B40B-40E6-B02F-482D03346D3D}.Release|x86.Build.0 = Release|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|x64.Build.0 = Debug|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Debug|x86.Build.0 = Debug|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|Any CPU.Build.0 = Release|Any CPU
{C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|x64.ActiveCfg = Release|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|x64.Build.0 = Release|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|x86.ActiveCfg = Release|Any CPU
+ {C5379ECB-3A94-4D2F-AC3B-2615AC23EB0D}.Release|x86.Build.0 = Release|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|Any CPU.Build.0 = Debug|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|x64.Build.0 = Debug|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Debug|x86.Build.0 = Debug|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Release|Any CPU.Build.0 = Release|Any CPU
{531F1092-DB27-445D-AA33-2A77C7187C99}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Release|x64.ActiveCfg = Release|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Release|x64.Build.0 = Release|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Release|x86.ActiveCfg = Release|Any CPU
+ {531F1092-DB27-445D-AA33-2A77C7187C99}.Release|x86.Build.0 = Release|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|x64.Build.0 = Debug|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Debug|x86.Build.0 = Debug|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|Any CPU.Build.0 = Release|Any CPU
{90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|x64.ActiveCfg = Release|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|x64.Build.0 = Release|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|x86.ActiveCfg = Release|Any CPU
+ {90CAB706-39CB-4B93-9629-3218A6FF8E9B}.Release|x86.Build.0 = Release|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|x64.Build.0 = Debug|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Debug|x86.Build.0 = Debug|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|Any CPU.Build.0 = Release|Any CPU
{3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|x64.ActiveCfg = Release|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|x64.Build.0 = Release|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|x86.ActiveCfg = Release|Any CPU
+ {3701A0A1-8476-42C6-B5C4-D24129B4A484}.Release|x86.Build.0 = Release|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|x64.Build.0 = Debug|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Debug|x86.Build.0 = Debug|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|Any CPU.Build.0 = Release|Any CPU
{5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|x64.ActiveCfg = Release|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|x64.Build.0 = Release|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|x86.ActiveCfg = Release|Any CPU
+ {5CC222DC-5716-4499-B897-DCBDDA4A5CF9}.Release|x86.Build.0 = Release|Any CPU
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|x64.Build.0 = Debug|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Debug|x86.Build.0 = Debug|Any CPU
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.Build.0 = Release|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|x64.ActiveCfg = Release|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|x64.Build.0 = Release|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|x86.ActiveCfg = Release|Any CPU
+ {93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|x86.Build.0 = Release|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|x64.Build.0 = Debug|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|x86.Build.0 = Debug|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|x64.ActiveCfg = Release|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|x64.Build.0 = Release|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|x86.ActiveCfg = Release|Any CPU
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|x86.Build.0 = Release|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|x64.Build.0 = Debug|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|x86.Build.0 = Debug|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|x64.ActiveCfg = Release|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|x64.Build.0 = Release|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|x86.ActiveCfg = Release|Any CPU
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|x86.Build.0 = Release|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|x64.Build.0 = Debug|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|x86.Build.0 = Debug|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|x64.ActiveCfg = Release|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|x64.Build.0 = Release|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|x86.ActiveCfg = Release|Any CPU
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|x86.Build.0 = Release|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|x64.Build.0 = Debug|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|x86.Build.0 = Debug|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|x64.ActiveCfg = Release|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|x64.Build.0 = Release|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|x86.ActiveCfg = Release|Any CPU
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|x86.Build.0 = Release|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|x64.Build.0 = Debug|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|x86.Build.0 = Debug|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Release|x64.ActiveCfg = Release|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Release|x64.Build.0 = Release|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Release|x86.ActiveCfg = Release|Any CPU
+ {AD923016-F318-49B7-B08B-89DED6DC2422}.Release|x86.Build.0 = Release|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|x64.Build.0 = Debug|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|x86.Build.0 = Debug|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|x64.ActiveCfg = Release|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|x64.Build.0 = Release|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|x86.ActiveCfg = Release|Any CPU
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|x86.Build.0 = Release|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|x64.Build.0 = Debug|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|x86.Build.0 = Debug|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Release|x64.ActiveCfg = Release|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Release|x64.Build.0 = Release|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Release|x86.ActiveCfg = Release|Any CPU
+ {B9022390-8184-4548-9DB1-50EB8878D20A}.Release|x86.Build.0 = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|x64.Build.0 = Debug|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|x86.Build.0 = Debug|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x64.ActiveCfg = Release|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x64.Build.0 = Release|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x86.ActiveCfg = Release|Any CPU
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x86.Build.0 = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x64.Build.0 = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x86.Build.0 = Debug|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x64.ActiveCfg = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x64.Build.0 = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x86.ActiveCfg = Release|Any CPU
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x86.Build.0 = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x64.Build.0 = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x86.Build.0 = Debug|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x64.ActiveCfg = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x64.Build.0 = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x86.ActiveCfg = Release|Any CPU
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x86.Build.0 = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x64.Build.0 = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x86.Build.0 = Debug|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x64.ActiveCfg = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x64.Build.0 = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x86.ActiveCfg = Release|Any CPU
+ {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426} = {70CFC05F-CF79-4A7F-81EC-B32F1E564480}
+ {6E22BB20-901E-49B3-90A1-B0E6377FE568} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
+ {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
+ {5CB72FDE-BA77-47D1-A556-FEB15AAD4523} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
+ {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
+ {9014CA66-5217-49F6-8C1E-3430FD08EF61} = {6E22BB20-901E-49B3-90A1-B0E6377FE568}
+ {561DFD5E-5896-40D1-9708-4D692F5BAE66} = {6E22BB20-901E-49B3-90A1-B0E6377FE568}
+ {B325271C-85E7-4DB3-8BBB-B70F242954F8} = {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5}
+ {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738} = {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5}
+ {AD923016-F318-49B7-B08B-89DED6DC2422} = {5CB72FDE-BA77-47D1-A556-FEB15AAD4523}
+ {B9B92246-02EB-4118-9C6F-85A0D726AA70} = {5CB72FDE-BA77-47D1-A556-FEB15AAD4523}
+ {B9022390-8184-4548-9DB1-50EB8878D20A} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
+ {1743BF7C-E6AE-4A06-BAD9-166D62894303} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
+ {1C635F9F-56C2-E55F-1582-090CF138E5B8} = {A288BEE0-695A-BEEA-455C-649571D89326}
+ {4A7CC044-B73D-4600-82FD-B2C017543CE8} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
+ {7F24B1B8-95AA-4E18-998E-01CF73D33377} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
+ {29193C83-54F5-449F-85A5-77A0952A4E6A} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {671B0BEC-2403-45B0-9357-2C97CC517668}
EndGlobalSection
@@ -290,19 +631,4 @@ Global
$2.inheritsScope = text/x-csharp
$2.scope = text/x-csharp
EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426} = {70CFC05F-CF79-4A7F-81EC-B32F1E564480}
- {6E22BB20-901E-49B3-90A1-B0E6377FE568} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
- {9014CA66-5217-49F6-8C1E-3430FD08EF61} = {6E22BB20-901E-49B3-90A1-B0E6377FE568}
- {561DFD5E-5896-40D1-9708-4D692F5BAE66} = {6E22BB20-901E-49B3-90A1-B0E6377FE568}
- {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
- {B325271C-85E7-4DB3-8BBB-B70F242954F8} = {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5}
- {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738} = {7DBBBA73-6D84-4EBA-8711-EBC2939B04B5}
- {5CB72FDE-BA77-47D1-A556-FEB15AAD4523} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
- {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3} = {CA1DD4A8-FA22-48E0-860F-D57A7ED7D426}
- {AD923016-F318-49B7-B08B-89DED6DC2422} = {5CB72FDE-BA77-47D1-A556-FEB15AAD4523}
- {B9B92246-02EB-4118-9C6F-85A0D726AA70} = {5CB72FDE-BA77-47D1-A556-FEB15AAD4523}
- {B9022390-8184-4548-9DB1-50EB8878D20A} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
- {1743BF7C-E6AE-4A06-BAD9-166D62894303} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
- EndGlobalSection
EndGlobal
diff --git a/osu_game_patch.txt b/osu_game_patch.txt
new file mode 100644
index 000000000000..ef1e044dfd12
--- /dev/null
+++ b/osu_game_patch.txt
@@ -0,0 +1,11 @@
+<<<<<<< SEARCH
+ public virtual bool IsDeployedBuild => false;
+
+ public virtual IReadOnlyList InitialMods => Array.Empty();
+=======
+ public virtual bool IsDeployedBuild => false;
+
+ public virtual bool IsVulkanRecommended => false;
+
+ public virtual IReadOnlyList InitialMods => Array.Empty();
+>>>>>>> REPLACE
diff --git a/renderer_settings_patch.txt b/renderer_settings_patch.txt
new file mode 100644
index 000000000000..7012eeeb4fee
--- /dev/null
+++ b/renderer_settings_patch.txt
@@ -0,0 +1,22 @@
+<<<<<<< SEARCH
+ new SettingsItemV2(new RendererDropdown
+ {
+ Caption = GraphicsSettingsStrings.Renderer,
+ Current = renderer,
+ Items = host.GetPreferredRenderersForCurrentPlatform().Order()
+#pragma warning disable CS0612, CS0618
+ .Where(t => t != RendererType.OpenGLLegacy),
+#pragma warning restore CS0612, CS0618
+ })
+=======
+ new SettingsItemV2(new RendererDropdown
+ {
+ Caption = GraphicsSettingsStrings.Renderer,
+ Current = renderer,
+ Items = host.GetPreferredRenderersForCurrentPlatform().Order()
+#pragma warning disable CS0612, CS0618
+ .Where(t => t != RendererType.OpenGLLegacy)
+#pragma warning restore CS0612, CS0618
+ .Where(t => t != RendererType.Vulkan || (game?.IsVulkanRecommended ?? false)),
+ })
+>>>>>>> REPLACE
From c35d338b0693f4a42fd5e050115c79305e8c3263 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 00:30:27 +0000
Subject: [PATCH 2/9] Fix Vulkan and Oboe support on Android with local
framework submodule
---
.gitmodules | 3 +++
oboe_patch.txt | 25 -------------------------
osu.Desktop.slnf | 4 +++-
osu_game_patch.txt | 11 -----------
renderer_settings_patch.txt | 22 ----------------------
5 files changed, 6 insertions(+), 59 deletions(-)
create mode 100644 .gitmodules
delete mode 100644 oboe_patch.txt
delete mode 100644 osu_game_patch.txt
delete mode 100644 renderer_settings_patch.txt
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000000..8e225b574043
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "external/osu-framework"]
+ path = external/osu-framework
+ url = https://github.com/winnerspiros/osu-framework
diff --git a/oboe_patch.txt b/oboe_patch.txt
deleted file mode 100644
index 6061ed24951c..000000000000
--- a/oboe_patch.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-<<<<<<< SEARCH
- addRootMixer(audioManager.TrackMixer);
- addRootMixer(audioManager.SampleMixer);
-
- if (mixerHandles.Count == 0)
- {
- addMixer(audioManager.TrackMixer);
- addMixer(audioManager.SampleMixer);
- }
-=======
- addRootMixer(audioManager.TrackMixer);
- addRootMixer(audioManager.SampleMixer);
-
- foreach (var mixer in audioManager.ActiveMixers)
- addRootMixer(mixer);
-
- if (mixerHandles.Count == 0)
- {
- addMixer(audioManager.TrackMixer);
- addMixer(audioManager.SampleMixer);
-
- foreach (var mixer in audioManager.ActiveMixers)
- addMixer(mixer);
- }
->>>>>>> REPLACE
diff --git a/osu.Desktop.slnf b/osu.Desktop.slnf
index 606988ccdfde..5a5af2dc89f5 100644
--- a/osu.Desktop.slnf
+++ b/osu.Desktop.slnf
@@ -2,6 +2,8 @@
"solution": {
"path": "osu.sln",
"projects": [
+ "external\\osu-framework\\osu.Framework.NativeLibs\\osu.Framework.NativeLibs.csproj",
+ "external\\osu-framework\\osu.Framework\\osu.Framework.csproj",
"osu.Desktop\\osu.Desktop.csproj",
"osu.Game.Benchmarks\\osu.Game.Benchmarks.csproj",
"osu.Game.Rulesets.Catch.Tests\\osu.Game.Rulesets.Catch.Tests.csproj",
@@ -26,4 +28,4 @@
"Templates\\Rulesets\\ruleset-scrolling-example\\osu.Game.Rulesets.Pippidon\\osu.Game.Rulesets.Pippidon.csproj"
]
}
-}
\ No newline at end of file
+}
diff --git a/osu_game_patch.txt b/osu_game_patch.txt
deleted file mode 100644
index ef1e044dfd12..000000000000
--- a/osu_game_patch.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-<<<<<<< SEARCH
- public virtual bool IsDeployedBuild => false;
-
- public virtual IReadOnlyList InitialMods => Array.Empty();
-=======
- public virtual bool IsDeployedBuild => false;
-
- public virtual bool IsVulkanRecommended => false;
-
- public virtual IReadOnlyList InitialMods => Array.Empty();
->>>>>>> REPLACE
diff --git a/renderer_settings_patch.txt b/renderer_settings_patch.txt
deleted file mode 100644
index 7012eeeb4fee..000000000000
--- a/renderer_settings_patch.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-<<<<<<< SEARCH
- new SettingsItemV2(new RendererDropdown
- {
- Caption = GraphicsSettingsStrings.Renderer,
- Current = renderer,
- Items = host.GetPreferredRenderersForCurrentPlatform().Order()
-#pragma warning disable CS0612, CS0618
- .Where(t => t != RendererType.OpenGLLegacy),
-#pragma warning restore CS0612, CS0618
- })
-=======
- new SettingsItemV2(new RendererDropdown
- {
- Caption = GraphicsSettingsStrings.Renderer,
- Current = renderer,
- Items = host.GetPreferredRenderersForCurrentPlatform().Order()
-#pragma warning disable CS0612, CS0618
- .Where(t => t != RendererType.OpenGLLegacy)
-#pragma warning restore CS0612, CS0618
- .Where(t => t != RendererType.Vulkan || (game?.IsVulkanRecommended ?? false)),
- })
->>>>>>> REPLACE
From 6608146481bec6791d47426168140bb0300e37ba Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 00:35:53 +0000
Subject: [PATCH 3/9] Fix Vulkan and Oboe support on Android with recursive
submodule checkout
---
.github/workflows/ci.yml | 8 ++++++++
.github/workflows/release.yml | 2 ++
2 files changed, 10 insertions(+)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bc79b5aea398..ba95de2d79c4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -15,6 +15,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
+ with:
+ submodules: recursive
- name: Install .NET 10.0.x
uses: actions/setup-dotnet@v5
@@ -77,6 +79,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
+ with:
+ submodules: recursive
- name: Install .NET 10.0.x
uses: actions/setup-dotnet@v5
@@ -116,6 +120,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
+ with:
+ submodules: recursive
- name: Setup JDK 11
uses: actions/setup-java@v5
@@ -141,6 +147,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
+ with:
+ submodules: recursive
- name: Install .NET 10.0.x
uses: actions/setup-dotnet@v5
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f44107d6eb43..81c2e6ccc71d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -17,6 +17,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
+ with:
+ submodules: recursive
- name: Setup JDK 17
uses: actions/setup-java@v5
From 65ec9e7853d4cd5169836b10ea019d9e3785a9a3 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 05:39:57 +0000
Subject: [PATCH 4/9] Fix Vulkan and Oboe support on Android with AudioManager
patch
From ab91694e0a739eeaddc14859f7352554f48098cc Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 07:14:14 +0000
Subject: [PATCH 5/9] Fix Vulkan and Oboe support on Android using surgical
reflection-based fixes
- Reverted local framework link to restore CI stability across all platforms.
- Implemented manual injection of the Vulkan renderer option in RendererSettings on Android, conditioned on hardware recommendation.
- Updated Oboe redirection logic to use reflection for accessing internal framework mixers, maintaining compatibility with official NuGet packages.
- Added dynamic binding to mixer collection changes via reflection to ensure robust audio hijacking.
- Fixed JNI global reference handling in OsuGameActivity for .NET 10.
---
.gitmodules | 3 -
external/osu-framework | 1 -
osu.Android.props | 2 +-
osu.Android.slnf | 3 -
osu.Android/OboeAudioRedirector.cs | 27 ++++++--
osu.Android/OsuGameActivity.cs | 14 ++--
osu.Android/OsuGameAndroid.cs | 68 ++++++++++++-------
osu.Desktop.slnf | 2 -
.../Sections/Graphics/RendererSettings.cs | 20 ++++--
osu.Game/osu.Game.csproj | 2 +-
osu.sln | 50 --------------
11 files changed, 88 insertions(+), 104 deletions(-)
delete mode 160000 external/osu-framework
diff --git a/.gitmodules b/.gitmodules
index 8e225b574043..e69de29bb2d1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +0,0 @@
-[submodule "external/osu-framework"]
- path = external/osu-framework
- url = https://github.com/winnerspiros/osu-framework
diff --git a/external/osu-framework b/external/osu-framework
deleted file mode 160000
index 03d869d74a95..000000000000
--- a/external/osu-framework
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 03d869d74a95ef10944785078e9e6bae17b3e995
diff --git a/osu.Android.props b/osu.Android.props
index a17389fad470..9ad425da8662 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -31,7 +31,7 @@
This is safe because .NET guarantees backward compatibility for loading net8.0 assemblies
in a net10.0 runtime, and Android API changes between 34→36 are additive.
TODO: Remove this comment once ppy.osu.Framework.Android ships net10.0-android assets. -->
-
+
diff --git a/osu.sln b/osu.sln
index 05ce0c3768b3..9184f95bfaeb 100644
--- a/osu.sln
+++ b/osu.sln
@@ -100,16 +100,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CodeAnalysis", "CodeAnalysi
CodeAnalysis\osu.globalconfig = CodeAnalysis\osu.globalconfig
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "external", "external", "{A288BEE0-695A-BEEA-455C-649571D89326}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "osu-framework", "osu-framework", "{1C635F9F-56C2-E55F-1582-090CF138E5B8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework", "external\osu-framework\osu.Framework\osu.Framework.csproj", "{4A7CC044-B73D-4600-82FD-B2C017543CE8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.NativeLibs", "external\osu-framework\osu.Framework.NativeLibs\osu.Framework.NativeLibs.csproj", "{7F24B1B8-95AA-4E18-998E-01CF73D33377}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.Android", "external\osu-framework\osu.Framework.Android\osu.Framework.Android.csproj", "{29193C83-54F5-449F-85A5-77A0952A4E6A}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -540,42 +530,6 @@ Global
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x64.Build.0 = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x86.ActiveCfg = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|x86.Build.0 = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x64.Build.0 = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x86.ActiveCfg = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Debug|x86.Build.0 = Debug|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|Any CPU.Build.0 = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x64.ActiveCfg = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x64.Build.0 = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x86.ActiveCfg = Release|Any CPU
- {4A7CC044-B73D-4600-82FD-B2C017543CE8}.Release|x86.Build.0 = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x64.Build.0 = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x86.ActiveCfg = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Debug|x86.Build.0 = Debug|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|Any CPU.Build.0 = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x64.ActiveCfg = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x64.Build.0 = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x86.ActiveCfg = Release|Any CPU
- {7F24B1B8-95AA-4E18-998E-01CF73D33377}.Release|x86.Build.0 = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x64.Build.0 = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Debug|x86.Build.0 = Debug|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|Any CPU.Build.0 = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x64.ActiveCfg = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x64.Build.0 = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x86.ActiveCfg = Release|Any CPU
- {29193C83-54F5-449F-85A5-77A0952A4E6A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -594,10 +548,6 @@ Global
{B9B92246-02EB-4118-9C6F-85A0D726AA70} = {5CB72FDE-BA77-47D1-A556-FEB15AAD4523}
{B9022390-8184-4548-9DB1-50EB8878D20A} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
{1743BF7C-E6AE-4A06-BAD9-166D62894303} = {0E0EDD4C-1E45-4E03-BC08-0102C98D34B3}
- {1C635F9F-56C2-E55F-1582-090CF138E5B8} = {A288BEE0-695A-BEEA-455C-649571D89326}
- {4A7CC044-B73D-4600-82FD-B2C017543CE8} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
- {7F24B1B8-95AA-4E18-998E-01CF73D33377} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
- {29193C83-54F5-449F-85A5-77A0952A4E6A} = {1C635F9F-56C2-E55F-1582-090CF138E5B8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {671B0BEC-2403-45B0-9357-2C97CC517668}
From 7aafd254835d94e8009d8e679912e24b151419a2 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 13:03:31 +0000
Subject: [PATCH 6/9] Fix Oboe and Vulkan support on Android via reflection
---
osu.Android/AndroidNativeBridgeManager.cs | 2 ++
osu.Android/OsuGameActivity.cs | 6 ++---
osu.Android/OsuGameAndroid.cs | 24 +++++++++++++++++--
osu.Game/OsuGameBase.cs | 2 ++
.../Sections/Graphics/RendererSettings.cs | 5 +++-
5 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/osu.Android/AndroidNativeBridgeManager.cs b/osu.Android/AndroidNativeBridgeManager.cs
index 4ce4f4b79884..8825851b4f7c 100644
--- a/osu.Android/AndroidNativeBridgeManager.cs
+++ b/osu.Android/AndroidNativeBridgeManager.cs
@@ -117,6 +117,8 @@ public void StartVulkanProbe()
[MethodImpl(MethodImplOptions.NoInlining)]
public bool IsVulkanRecommended() => (vulkanProbe as VulkanProbe)?.IsRecommended ?? false;
+
+ public bool IsVulkanAvailable() => (vulkanProbe as VulkanProbe)?.IsAvailable ?? false;
public void StopVulkanProbe()
{
(vulkanProbe as VulkanProbe)?.Dispose();
diff --git a/osu.Android/OsuGameActivity.cs b/osu.Android/OsuGameActivity.cs
index 5be35e5e06bc..d9ca6060c626 100644
--- a/osu.Android/OsuGameActivity.cs
+++ b/osu.Android/OsuGameActivity.cs
@@ -180,10 +180,10 @@ public IntPtr GetSurfaceGlobalRef()
public void SurfaceCreated(ISurfaceHolder holder)
{
var surface = holder.Surface;
- if (surface != null)
+ if (surface != null && surface.IsValid)
{
- var handle = surface.Handle;
- if (handle != IntPtr.Zero)
+ IntPtr handle = surface.Handle;
+ if (handle == IntPtr.Zero) return;
{
surfaceGlobalRef = global::Android.Runtime.JNIEnv.NewGlobalRef(handle);
surfaceEvent.Set();
diff --git a/osu.Android/OsuGameAndroid.cs b/osu.Android/OsuGameAndroid.cs
index eed086d5a724..f27c2ae0373c 100644
--- a/osu.Android/OsuGameAndroid.cs
+++ b/osu.Android/OsuGameAndroid.cs
@@ -1,3 +1,4 @@
+using System.Collections.Specialized;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -73,6 +74,8 @@ public partial class OsuGameAndroid : OsuGame
private readonly IHighPerformanceSessionManager highPerformanceSessionManager = new AndroidHighPerformanceSessionManager();
private OboeAudioRedirector? audioRedirector;
+ private Delegate? activeMixersHandler;
+ private object? activeMixersList;
private IntPtr updateAdpfSession;
private IntPtr renderAdpfSession;
@@ -140,14 +143,15 @@ private void load()
FieldInfo? field = typeof(AudioManager).GetField("activeMixers", BindingFlags.Instance | BindingFlags.NonPublic);
if (field != null)
{
+ activeMixersList = field.GetValue(Audio);
object? val = field.GetValue(Audio);
if (val != null)
{
MethodInfo? bindMethod = val.GetType().GetMethod("BindCollectionChanged", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (bindMethod != null)
{
- Action