Repository navigation
Conversation
There was a problem hiding this comment.
Hey, thanks a lot for this, and for putting it through real hardware. We don't own a Vision, so you're the only one who can actually test it, which is why I'd rather get this right with you than rework it on our side. Suite is green here (8591 tests), nice.
A few things I ran into reading through it:
The description doesn't match the code anymore. The title and body still talk about H.264 over the C report, but your second commit reverted that, so the final diff streams JPEG over B exactly like main does. What's left is the 0x04 brightness mode, the immediate apply, and the pump RGB. Could you update the title/body? Also curious: does plain main stream on your unit once you turn Nexus Control on for the device? The rows default to off, and I want to be sure the logo issue was the code and not that switch.
Things I'd want changed before merging:
- The firmware-mode branch in
Galahad2LcdLightingFrameWriter.cs:148reuses the Trinity mode table. On the LCD firmware the bytes diverge from 7 onward (7 is Ticker Tape there, not Vortex; seelianli-shared/src/rgb.rsin sgtaziz/lian-li-linux). It's also unreachable from the UI, which only shows firmware modes forlianli-aio. I'd just drop it and keep canvas only, which is the part people actually use. - Where does the
0x14per-LED B-report layout come from (the 61-byte length, 24-byte zero prefix, reversed order)? Neither lian-li-linux nor OpenRGB has it. A capture or a decompile is totally fine, I just want it cited in a comment so the next person doesn't have to guess. And does your video show canvas colours on the pump head? 0x04isn't Galahad-specific: it's the family-wideLcdSettingmode in the reference driver, used for HydroShift too. SoApplyBrightnessinLianLiAioHandshake.cscan use it unconditionally and the constructor parameter can go.
Smaller stuff:
OwnsOpenRgbDevicein the LCD provider: OpenRGB never enumerates0x7395, so it's dead, and it would claim a real Trinity's row if someone had both. Same for theRemoveAllextension in the composite.- The
?? _galahad2fallbacks inCompositeLightingDeviceProvider.cs(397, 423) send LCD ids to a provider that doesn't own them. EncodePumpPerLedallocates a 1024-byte packet every tick;SendPumpZoneLightingalready reuses the hub's_report, worth doing the same.JpegPanelHubraisesStateChangedwhile holding_lock. The other hubs notify from their connection worker outside the lock, safer to match that.
Two process things: please add a line confirming you've read and agree to CLA.md (it's in CONTRIBUTING.md), and if you're up for it, split this into two PRs. The brightness fix is small and I'd merge it right away; the pump RGB can take its time.
Thanks again, really good to have someone with the hardware on this.
…itionally Reviewer feedback: 0x04 isn't Galahad-specific - it's the reference driver's LcdSetting mode for the whole HydroShift/Galahad2 LCD family, including HydroShift. ApplyBrightness now always sends it; the brightnessMode constructor parameter is gone. Fixes the HydroShift test that (wrongly) asserted brightness rode application mode (0x01).
…oc, dead code out - Galahad2LcdLightingFrameWriter: drop the firmware-mode branch. It reused the wired Trinity's mode table, which diverges on the LCD's firmware from mode 7 onward, and is unreachable from the UI anyway (firmware modes are only offered for lianli-aio). Canvas only now. - Galahad2Protocol.EncodePumpPerLed: write into a caller-owned buffer instead of allocating a fresh 1024-byte packet every ~33ms tick; JpegPanelHub.SendPumpPerLed reuses the hub's existing _report buffer, matching SendPumpZoneLighting. Documented (honestly) where the 61-byte length / 24-byte prefix / reversed LED order layout does and doesn't come from - not lian-li-linux, not OpenRGB, verified against real hardware instead. Also documented that the pump ring is 24 physical LEDs with only 12 independently addressable (confirmed vs SignalRGB). - JpegPanelHub: move the StateChanged notification outside _lock in Attach/Detach/Dispose, matching the other hubs' pattern. - Galahad2LcdLightingDeviceProvider: drop the dead IOpenRgbDeviceOwner/OwnsOpenRgbDevice implementation - OpenRGB never enumerates 0x7395. - CompositeLightingDeviceProvider: stop folding the LCD's IsConnected into the OpenRGB Trinity-row removal (it has no OpenRGB row to remove, and could wrongly strip a real Trinity's row); drop the `?? _galahad2` fallbacks that could hand an LCD-scoped id to the wired provider, which doesn't own it.
|
Thanks for the thorough review — replied to everything below. Title/description — updated (was stale from an earlier draft that used H.264/report C; that got reverted in the second commit, final diff streams JPEG over B exactly like Does plain Firmware-mode branch in 0x14 per-LED layout citation — I don't have a clean one, and want to be upfront about that rather than make something up. I had Codex derive this and no capture trail survived. I checked Also confirmed while I was in there: the pump ring is 24 physical LEDs but only 12 are independently addressable (the other 12 mirror them) — checked against SignalRGB too, so 0x04 brightness mode — agreed, made it unconditional (
CLA — read CONTRIBUTING.md / CLA.md, I've read and agree to the CLA. Splitting into two PRs — done: #3 has just the brightness fix (should merge quickly), this PR is now pump-RGB only. Once #3 lands I'll rebase this branch on |
|
Closing per your suggestion — this'll get resubmitted as a fresh, independent PR just for the pump RGB once #3 (the minimal brightness fix, which covers part of what this PR had) is settled. Thanks again for the review. |
|
Thanks for the quick turnaround, and for being straight about where the Two things remain, one structural and one about that packet. One Galahad provider, not two. Looking at it again, there's no reason for The
Small one: keep comments to a single line stating the fact. The provenance paragraph in #3 looks right. It changes the HydroShift brightness packet as well ( |
Adds pump-head RGB canvas support for the Galahad II LCD, streamed as JPEG over report B — same protocol
mainalready uses for the glass. (An earlier draft of this PR used H.264 over report C; that got reverted in the second commit, so the final diff doesn't touch that path.)The brightness fix that was originally part of this PR has been split out into #3 so it can merge on its own - see the review discussion below.
Summary
Test plan
dotnet buildsucceeds