Replies: 4 comments 1 reply
-
Mr. gates, maybe this will help you. On youtube you have a channel called greatprojects. This gentleman has quite some experience with hub75 panels. Maybe you can learn something from his codes. He also has a github site: https://github.com/3tawi Here is a movie with scrolling text on a hub75, with some in the background. But maybe you can filter it out. https://www.youtube.com/watch?v=4pQMjzJ9uJ8 Regards Harrie |
Beta Was this translation helpful? Give feedback.
-
Check out the MoveX and MoveY functions. If you just need to move part of the screen, we could add default args that specify which rows, for example. |
Beta Was this translation helpful? Give feedback.
-
Thank you. I will start there. The fun part, I think, will be putting in
new text at the edge as space is made available. I will think about it
this week. Now if I could just see what I am doing.
|
Beta Was this translation helpful? Give feedback.
-
We could add code that rendered the letter from the character cells one
column at a time and added that to either edge before shifting. Most of
that it outsourced down to SmartMattrix, so go grump around in the Layer
and Font code in .pio/libdeps/mesmerizer/SmartMatrix/src or the original.
I'll admit I don't know a lot about that code specifically, but I've
professionally done the kinds of things I know it's doing.
Depending on the memory requirement (a 64x64x24bpp pixel buffer * double
buffer isn't cheap) maybe we could afford to overdraw the entire pixel
buffer and just render a WIDTHxHEIGHT offset to the actual part that gets
blitted out to the DMACs. Since these wouldn't be animating at 60Hz, maybe
that's an option. Kind of like the old 6845 fast scroll trick where
scrolling up and down was "just" telling the video controller to start
drawing the buffer from a different offset instead of zero. Maybe this is
already in SmartMatrix somewhere - it's pretty fully featured.
For HUB75, it's usually not the actulal draw that's the killer, but the
need to keep refreshing the cells as they aren't latched and have no
'memory' - you have to keep refreshing the pixels like you were feeding an
electron gun from a UART. :-/
Also, the functions that Dave cited are interesting candidates for the
Async Memory Copy API, especially if you're on S2, C3 (probably not, since
those are both single core) or S3. The ESP devices have a ridiculous number
of actual memory busses and just the arbitration of getting a read/write
cycle (use [q]words, not bytes) on and off the bus can dwarf the cost of
the transaction itiself, so it's worth programming the DMACs to do it if
there's a lot to move since they can reduce the # of arbitration requests.
For a different project (not this one) I was able to help a friend move the
ESP32-S3 with *octal* SPI RAM (very much *Not A Mesmerizer...*) from about
9MB/sec to about 320MB/sec for bursts
<https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/system/async_memcpy.html>
of each. Now we had assistance from hardware engineering and Espressif
themselves to help coach us on every bus cycle, alignment, arbitration
request, and opcode. The point isn't to brag (I couldn't do it again
without access to all those things and code that wasn't mine to keep) but
to say that 40x performance increases on these things really ARE possible
if you're willing to help stack the deck in every possible way to make it
go fast. Even the choice of which AHB GDMA channel to use required
coaching. Wrapping the async_memcpy_isr_cb_t in a lambda for callbacks to
actually notify the other thread that the data had arrive was just Chef's
Kiss.
In their case, it saved them from having to think about moving to a custom
IOP....and it was on hardware that the Mesmerizer isn't. But even a "fast"
scroll should be between those numbers, right?
I'll admit that I wasn't there for every step of the process and I'm
pretty sure that the numbers we achieved aren't possible with the older
ESP32 part parts. I'm just saying that if clock cycles DO matter, there are
some incredible options out there and that for HUB75 development, the hard
part probably isn't actually the scrolling; it's keeping the pixels
refreshed. Even the "old" esp32's have some pretty awesome DMA options
waiting to be used.
Not everything needs to be VAX or ATMega-compatible. This class of parts
has lots of features to "help". Memcpy-coprocessors are (essentially)
things you can use these days. Handing a user-space scgth list of (mumble,
mumble) std::spans that are locked into (please don't page out these
addresses while I'm transferring to/from them...) core to a DMAC and
popping the "wakeup" when you receive the completion interrupt is pretty
much the system programmer's dream.
JH-7110 has a couple of coprocessors on board that follow this same mantra.
Enjoy!
On Tue, Dec 12, 2023 at 12:06 PM Marshall G Gates ***@***.***>
wrote:
… Thank you. I will start there. The fun part, I think, will be putting in
new text at the edge as space is made available. I will think about it
this week.
On Tue, Dec 12, 2023 at 1:02 PM David W Plummer ***@***.***>
wrote:
> Check out the MoveX and MoveY functions. If you just need to move part
of
> the screen, we could add default args that specify which rows, for
example.
>
> —
> Reply to this email directly, view it on GitHub
> <
#566 (comment)>,
> or unsubscribe
> <
https://github.com/notifications/unsubscribe-auth/AA6PTXAHCF2ID7QO5QC2AE3YJCLZVAVCNFSM6AAAAABAPCLSSWVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM3TQMZTHAZDS>
> .
> You are receiving this because you authored the thread.Message ID:
>
<PlummersSoftwareLLC/NightDriverStrip/repo-discussions/566/comments/7833829
> @github.com>
>
--
*Marshall G Gates*
*Android Developer*
—
Reply to this email directly, view it on GitHub
<#566 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACCSD36NHUTRYGHGN4WU2T3YJCMLVAVCNFSM6AAAAABAPCLSSWVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM3TQMZTHA3TM>
.
You are receiving this because you are subscribed to this thread.Message
ID:
<PlummersSoftwareLLC/NightDriverStrip/repo-discussions/566/comments/7833876
@github.com>
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I am about to start adding scrolling text to the Stock Ticker and I am looking for guidance. I am not as familiar with the GFX library as I should be. I have done some scrolling with the Micro Python libraries but I do not see their equivalents here. Any tips and pointers would be appreciated.
Thanks,
Marshall
Beta Was this translation helpful? Give feedback.
All reactions