feat(ui+perf): d3d11va decode, muted-cell audio skip, cohesive theme + slicker wizard/cells#23
Merged
Merged
Conversation
…+ slicker wizard/cells Performance (measured on skyhawk, RTX 5070 Ti, 8-cell wall): - Default hwdec nvdec-copy -> d3d11va. Decodes straight into the D3D11 textures gpu-next/d3d11 renders, avoiding nvdec-copy's surface copy-back and non-copy nvdec's CUDA<->D3D11 interop cost. ~30% less VRAM (~3.2GB -> ~2.2GB) at equal CPU/power, zero frame drops across two A/B passes. HYPERWALL_HWDEC override retained as an escape hatch. - Muted cells (the wall's default) load with aid=no, skipping audio demux/decode across the grid; the track is lazily (re)selected on first unmute via _enable_audio_track(), no reload needed. UI: - New hyperwall/theme.py: one source of truth for palette (on-brand #3b8edb accent), typography, radii + a dialog QSS and a Fusion dark QPalette. Pure strings, no Qt at import (headless-test friendly). app.py applies it. - Cell control bar: glassy translucent slab, borderless rounded quiet buttons that lift to the accent on hover/checked, slimmer accent seek. - Title card is a translucent pill with an accent spine; startup shows a pulsing LOADING card (animates only pre-first-frame, never during playback). - Setup wizard: themed, branded header, accent selection highlights, a live ROWS x COLS grid preview + "N cells / display" readout, Enter-to-start. Tests: add tests/test_theme.py (pure helpers); 85/85 suites green. Rebuilt and validated on skyhawk: hwdec=d3d11va live, isolation intact, cells play with no retry/escalation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Owner
Author
|
📸 Screenshots (couldn't inline-embed via
|
Force text-presentation (VS15) on the control glyphs so they render monochrome and inherit the bar's tint, and switch only the favorite star and trash bin to their color glyph (VS16) when active — so a favorited or flagged cell pops at a glance while the bar stays quiet. Fav/trash also drop the accent :checked fill (objectName override) so the colored glyph is the sole active signal. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Owner
Author
|
Added: monochrome control-bar icons, color only when active (commit ef360d6).
Refreshed cell screenshot on skyhawk (favorite active = gold star, everything else monochrome): Verified: 85/85 tests green, rebuilt exe smoke-launched clean ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slicker UI + measured decode performance
A UI-polish + performance pass on top of v10.0.0. Every perf change was A/B-measured on skyhawk (RTX 5070 Ti, 8-cell 2×2×2 wall) — no speculative tuning.
⚡ Performance
Decode path:
nvdec-copy→d3d11va(default).d3d11vadecodes straight into the D3D11 textures thegpu-next/d3d11renderer consumes — no surface copy-back to system RAM likenvdec-copy, and none of the CUDA↔D3D11 interop cost that made non-copynvdecworse.HYPERWALL_HWDECoverride retained as an escape hatch.nvdec-copy(old)nvdec(non-copy)d3d11va(new)The robust, repeatable win is ~30% less VRAM (two passes) at equal CPU/power/smoothness — directly easing the roadmap's memory-scaling concern for large grids. (CPU/RAM deltas beyond that were within content-variance noise, since clips are randomized per run; not claimed.)
Muted cells skip audio decode. The wall is muted by default; cells now load with
aid=no, so the grid doesn't demux/decode audio it never plays. The track is lazily (re)selected on first unmute via_enable_audio_track()— no reload.🎨 UI
hyperwall/theme.py— one source of truth: palette (keeps the on-brand#3b8edbaccent shared with the web remote), typography, radii, a dialog QSS, and a Fusion darkQPaletteso native chrome (message boxes, combos) matches. Pure strings, no Qt import at load → headless-test friendly.LOADINGcard that animates only before the first frame — never during steady playback (keeps the 24/7 idle cost at zero).Wizard (new)
(screenshot attached in comment)
✅ Validation
python tests/run_all.py→ 85/85 green (addedtests/test_theme.pyfor the pure helpers).hyperwall.exe; launched on skyhawk: log confirmshwdec=d3d11va,NVIDIA profile current, G-Sync isolation intact, all cells play[DIRECT]/[TRANSCODE]with noPlayback error/Stall/Crash-loop.PrintWindow(content-free).No behavior change to playback semantics, reliability chain, backends, or the web remote.