The top half of a 64x64 panel renders slower than the bottom half

I am using a Rpi 4 + Adafruit HAT + six pieces of 64 x 64 Waveshare led panel in one chain.

When I run a version of the Python examples like “image-scroller.py” or “runtext.py”, which translate the content along the x-axis, the top half of the screen updates slightly slower than the bottom half, so the top half is always a few pixels behind. When the translation is slow, it is not so disturbing, but when I speed it up, it looks like the content is cut in half, with the top half distorted to the right.

I am currently running this example script:

The only changes I made were to increase the speed on line 23 and to add an y translation to the image on lines 27 and 28 to make it more centred:

xpos += 5

double_buffer.SetImage(self.image, -xpos, 15)
double_buffer.SetImage(self.image, -xpos + img_width, 15)

I run the script with this command:

sudo python3 image-scroller.py -m=“adafruit-hat” --led-rows=“64” --led-cols=“64” --led-chain=“6” --led-parallel=“1” --led-slowdown-gpio=“5” --led-scan-mode=1

I tweaked every major setting I could find in the documentation, but it still did not fix the problem.

Does anyone have any ideas about this synchronisation issue?

Thank you

I’m not familiar with the python interface and how slow it may be, or not, but I’ve never had such visible update delays like this.
There is indeed code to fill one buffer fully and only make it available to the library once it’s completely full, avoiding any tearing issues, but I’d have to recommend you go back and look at the API carefully. If you use proper double buffering and only flip buffers once they are full, this should never happen