Low-end hardware (iGPU laptops, Steam Deck): profile and scale fixed frame costs #98
Labels
No labels
amd
avatars
bug
builder
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
rendering
rt
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
backspace119/Slipstream#98
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two new testers on low-power hardware see frame rates that barely move with settings:
Expected: noticeably more on low settings, and settings that scale the cost down. Flat fps across settings means most of the frame is fixed cost that no setting controls. It's either CPU work, or GPU passes that ignore the preferences.
Step 1: measure (before optimising)
Ask each tester for a log with
RenderVKSectionLog+RenderVKGpuTimerson, standing still in a typical scene, at their lowest preset. Plus exact CPU/GPU model (Framework: which mainboard, iGPU or dGPU module), resolution, and whether the laptop is on power.frame≫ GPU total means CPU-bound: scale the per-frame CPU work.Likely fixed costs (from our own logs on a desktop, which will be several times larger on a laptop CPU)
CPU (ms on a 5090 / 48-core desktop in a busy scene):
ui_drawabout 6–7: UI rebuilt every framevk_ingestTick/sweep_totalabout 4–5vk_syncFromStoresabout 3LL_objectListUpdateabout 2.5avatarCharacterabout 1.5vk_rtBuildabout 3.5; must be zero when RT is off or unsupported, verifyGPU passes to audit for "runs regardless of settings":
Candidate work
Tracking ticket; split into sub-issues once the logs say where the time goes.
Data point: Steam Deck goes from about 14 to about 40 fps with shadows off. That's about 71 ms → 25 ms per frame, so shadows cost about 45 ms on the Deck, roughly two thirds of the frame. The rest of the frame (25 ms) is still above 60 fps, but within reach of 30/40 fps with some trimming.
What the code does today (VK sun shadows):
NUM_CASCADES = 4,RenderVKShadowResolution= 2048). This is fixed: no preference or graphics preset changes the resolution or the cascade count. LL'sRenderShadowResolutionScaleisn't read by the VK path, and none of this is in the feature table.Shadow-specific items for this ticket (standard practice in modern engines):
RenderShadowResolutionScaleor replace it.RenderVKShadowMinCasterTexelsexists; check its default for low tiers).RenderVKGpuTimers) per cascade so these can be measured on the Deck.Also: check which shadow setting the Deck tester had (Sun only, or Sun + Projectors). If projectors were on, part of the 45 ms may be projector tiles; the new projector budget slider (not yet released) covers that side.
Datapoint: GTX 1080 Ti + i7-6700K, Windows, 1918×1008, build
946e89a915(RenderVKGpuTimerslog). GPU-bound throughout.c_shadows33–38)proj_n=13–16 (default budget 16)c_projshadow42–65)Pass1 breakdown (shadows off):
g_prepass(depth prepass)g_pass1g_to_glowg_passesFor scale: the same scene class on an RTX 5090 was about 7 ms total. The 1080 Ti is roughly 6–9× slower, so our frame cost is budgeted for high-end cards.
Actions:
sel+hud: it costs a constant ~3 ms with nothing selected.g_to_glow: break down its ~9.5 ms (alpha/transparent work).