Skip to content

Commit e5c16ce

Browse files
authored
Merge pull request #297 from winnerspiros/copilot/fix-vulkan-texture-issues
fix: eliminate storyboard atlas overflow GPU stalls + bump framework to 2026.503.7
2 parents 56840ca + 2943a36 commit e5c16ce

4 files changed

Lines changed: 13 additions & 6 deletions

File tree

osu.Android.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
</PropertyGroup>
100100

101101
<ItemGroup>
102-
<PackageReference Include="ppy.osu.Framework.Android" Version="2026.503.6" />
102+
<PackageReference Include="ppy.osu.Framework.Android" Version="2026.503.7" />
103103
<!-- `ppy.osu.Framework.NativeLibs` is a transitive dependency of `ppy.osu.Framework`
104104
that ships desktop-only natives (Linux/macOS/Windows) under `runtimes/<rid>/native/`
105105
— including a bare Linux `libbass.so`/`libbass_fx.so`/`libbassmix.so` for linux-arm64.

osu.Game/Storyboards/Drawables/DrawableStoryboard.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,17 @@ private void load(IGameplayClock? clock, CancellationToken? cancellationToken, G
8585
if (clock != null)
8686
Clock = clock;
8787

88+
// Storyboard assets are per-beatmap images (backgrounds, sprites, animations) that are
89+
// typically large (e.g. 1920×1080, 2732×1572) and are loaded once per play session.
90+
// Using a regular atlased TextureStore causes a storm of atlas overflow events during
91+
// beatmap load (one new 2048×2048 GPU texture + vkQueueSubmit per overflow, 8+ times in
92+
// ~5 seconds), each stalling the render thread and dropping FPS.
93+
// LargeTextureStore skips atlasing entirely so every storyboard asset gets its own GPU
94+
// texture with no atlas packing, eliminating all overflow stalls on Android Vulkan.
8895
dependencies.CacheAs(typeof(TextureStore),
89-
new TextureStore(host.Renderer, host.CreateTextureLoaderStore(
96+
new LargeTextureStore(host.Renderer, host.CreateTextureLoaderStore(
9097
CreateResourceLookupStore()
91-
), false, scaleAdjust: 1));
98+
)));
9299

93100
foreach (var layer in Storyboard.Layers)
94101
{

osu.Game/osu.Game.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3939
</PackageReference>
4040
<PackageReference Include="Realm" Version="20.1.0" />
41-
<PackageReference Include="ppy.osu.Framework" Version="2026.503.6" />
41+
<PackageReference Include="ppy.osu.Framework" Version="2026.503.7" />
4242
<!--
4343
Explicitly pin `ppy.Veldrid.SPIRV` to the winnerspiros fork build that
44-
`ppy.osu.Framework 2026.503.6` was compiled against. This version is the only
44+
`ppy.osu.Framework 2026.503.7` was compiled against. This version is the only
4545
one whose `runtimes/android-arm64/native/libveldrid-spirv.so` is aligned to 16 KB
4646
pages (required by Android 16+). It lives only as a release asset on
4747
<https://github.com/winnerspiros/veldrid-spirv/releases/tag/1.0> and is vendored

osu.iOS.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@
3333
<SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
3434
</PropertyGroup>
3535
<ItemGroup>
36-
<PackageReference Include="ppy.osu.Framework.iOS" Version="2026.503.6" />
36+
<PackageReference Include="ppy.osu.Framework.iOS" Version="2026.503.7" />
3737
</ItemGroup>
3838
</Project>

0 commit comments

Comments
 (0)