Just extend whatever your serial protocol is to contain commands that allow you to address multiple points on your matrix at once. There's no reason to have more than one serial transmission to update the entire array.
I have been doing this somewhat, creating functions to light an entire column, an entire row, all on, all off, using loops and maxOne(), maxAll() from the Zambetti 7219 code, in response to SimpleMessageSystem ASCII messages from Max. This is probably going to be the best approach. But since I am just getting the hang of all this I'm sure there are more efficient ways to do many of these things.
Also, I want to provide as much flexibility as possible to the Max programmers who will be building apps. So, on the Max side I created a 'virtual stribe' represented by a large [matrixctrl] object. Ideally the programmer should be able to write an app that interfaces with the 'virtual stribe' and it will interface with the real stribe exactly the same. We're THIS close... but as the speeds increase (while sequentially lighting up LEDs) we're getting weird behavior.
We have an abstraction which converts changes to the [matrixctrl] Max object (LEDs on or off) into the appropriate maxOne() commands. But if the messages come out of Max too fast, some of the messages start dropping out, and then all heck breaks loose as the LED display gets more and more out of synch with the [matrixctrl] object. And when I also try to read the analog sensors during the loop it gets even more hinky.
The [matrixctrl] object can be made to dump it's entire state as a long string, but it seems like feeding all this data across SimpleMessageSystem would take a while...
To explain the setup: I have 16 MAX7221s, each one controls an 8x8 grid, 8 grids on the left (1-8), and 8 on the right (9-16) results in a 16x64 LED matrix.
A single 128-element array called grid keeps track of the 0-255 bitmask values for each subrow.
Here's the firmware right now: http://www.soundwidgets.com/stribe/code/stribe_04m.pde
What it seems like you're implying in your suggestion above is that there could be a way to send all 128 values as a single serial message? If so that would be amazing: how would do I do this?