Skip to content

WIP: Big endian support and basic raw UDP framebuffer stream#85

Draft
kleinesfilmroellchen wants to merge 5 commits into
sbernauer:mainfrom
kleinesfilmroellchen:big-endian
Draft

WIP: Big endian support and basic raw UDP framebuffer stream#85
kleinesfilmroellchen wants to merge 5 commits into
sbernauer:mainfrom
kleinesfilmroellchen:big-endian

Conversation

@kleinesfilmroellchen

@kleinesfilmroellchen kleinesfilmroellchen commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

The ultimate goal is to make breakwater compatible with my TP-Link Archer C7 router running OpenWRT on mips-unknown-linux-musl (MIPS32, big-endian). This has three main parts:

  • Make prometheus exporter into an optional feature. This may be useful for some users who don’t need it, but most importantly, prometheus_exporter doesn’t compile on 32-bit systems since it needs 64-bit atomics. I’m looking forward to Pixelflut on Nintendo 3DS :3
  • Fix endianness issues in breakwater (mainly breakwater-parser). Already complete, all relevant tests pass. However, PXMULTI doesn’t work, since it’s fundamentally little-endian. I’ll look into always disabling this feature on big-endian targets. Also, the framebuffer byte order is reversed from little-endian, so each pixel is ordered as RGBA instead of the ABGR on little-endian. This may cause issues with outputs which assume the framebuffer endianness, but I am unable to test any of the existing outputs on that router.
  • Add a really simple output protocol which streams the raw framebuffer via UDP (for reception by e.g. ffmpeg). For a low-resolution low-framerate canvas (e.g. 720p with 10fps) this is only 200-300Mbit/s, which will hopefully be fine.
  • Add rate-limiting support

Makes all tests pass on big-endian (tested MIPS32 R2), except for PXMULTI which is inherently little-endian. Fixing that would be more involved and degrade performance.

Note: whether outputs work or have flipped colors has not been tested yet.
}

while i < loop_end {
// BUG: byte order is inverted on big-endian

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops, that was a debugging comment, this should be removed

@kleinesfilmroellchen kleinesfilmroellchen changed the title WIP: Big endian support and basic raw TCP framebuffer stream WIP: Big endian support and basic raw UDP framebuffer stream Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant