remote framebuffer?

#5 · open · 2 comments

View on GitHub ↗

endreszabo

Hi, I might be at a wrong place but feels like I'm close. :) I have several different led matrix displays of different sizes and color capabilities at home and I want to gather them together under a single 'framebuffer server'. Your projects seems to be a good middleware for this, but I might be wrong, not sure really. My idea is that I would create a 'remote framebuffer' server running on some rpi or something more capable that would render different layers of sub-framebuffers into display-specific different framebuffers (one for each LED matrix display). To explain the whole concept, I need to define some terms: - display server: this is pure Xorg terminology; this would be the actual ESP/similar hardware that has a display directly attached to it. This servers knows and reports the capabilities (dimensions, color features, illumination sensor, IR receiver, etc) of its display. - framebuffer server: this is the server that runs on more beefy computer. It calculates the framebuffer-content-to-be on all the displays and pushes the updates to the display servers. It accepts client connections that create layers and sends pixel-level buffers payload for these layers. - framebuffer: this would be the actual in-memory framebuffer that matches a given display size and color format. - layer: these are rgba8888 sub-framebuffers. they have a fixed size that can be larger or smaller than any framebuffers. layers have Z-index priority that defines the order of rendering them. Layers can be assigned to one or more framebuffers (above) with different offsets for a given framebuffer (because of the varying shape of the displays). layers can be enabled/disabled and also can have a timeout (just like a toast popup). - client: this would be the client that asks for creation of one or more layers. it is unclear right now who and how assigns these layers to the framebuffers. I do not aim for anything of high performance, my displays currently refresh at 2 FPS (blinking dot of the clock). I'm happy to write the framebuffer server part, did something similar before. My question is more towards the 'display server' part, to which your repositories look like a good connector. For this, I/we need to create the actual 'display server' thing running on the ESPs that the framebuffer server can push content to. Sorry for the raw braindump, I'm open to ideas. :)

Comments

marcmerlin

Ok, if I understand your question correctly, this project is the perfect code to render all your 2D demos in, across 3 supported APIs, or just by drawing your own pixels yourself. From what you read, I provide around 10 backend drivers that take this framebuffer and display it on random microcontroller hardware, RGB Panels, LED Matrices and even in an X11 window on linux (for faster code writing and debugging). For remote display you would "just" have to write your own backend that takes that framebuffer and pushes it to whereever you need it to go, including somewhere remote. That part of course would be entirely up to you. IF you want to see how to write that, take any of the drivers I wrote on top like FastLED_NeoMatrix, https://github.com/marcmerlin/FastLED_SPITFT_GFX and you'll see that all this does is read the framebuffer and shove its content to where it needs to go. Hope this answers your question.

endreszabo

Thank for your confirmation, I'll look into the details :)