Posts: 203
Joined: Sat Aug 13, 2011 7:28 pm

hello_videocube.bin runs at 1-2 fps

Wed Oct 18, 2017 2:09 am

I have a Raspberry Pi 3. It's been running Raspbian for many months, and I've been having okay success using GLES2 to drive a small display.
However, recently I did a full update -- apt-get update, apt-get upgrade, raspi-config -> update
Now, my program runs at < 1 fps.
The hello_videocube.bin demo now runs at 1-3 fps, with very stuttery progress. I seem to recall this demo running smoothly before.

However, camera capture (raspivid -t 10000) runs smoothly enough.

I can't 100% guarantee that it was something in the updates that caused this to happen, but if it wasn't, what else could it be?
And what can I do to go back to the high-performing Pi I know and love?

Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 5944
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: hello_videocube.bin runs at 1-2 fps

Wed Oct 18, 2017 10:27 am

raspivid doesn't use GL whereas videocube is totally relying on it.

A quick test with the latest firmware (although admittedly my own dev build) seems to show everything normal, so it'd be worth trying a clean install on a spare SD card, and then update the firmware/kernel and retest. There's nothing obvious changed in that area.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
Please don't send PMs asking for support - use the forum.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

Posts: 203
Joined: Sat Aug 13, 2011 7:28 pm

Re: hello_videocube.bin runs at 1-2 fps

Thu Oct 19, 2017 1:05 am

Thank you. A fresh update to latest did indeed fix it. Super weird!

Now, I'm still somewhat stuck on GLES being slow as soon as I touch some resource that's used in the frame. Uploading a texture each frame, or updating a vertex buffer object each frame, seems to stall the renderer, getting low-ish FPS. Keeping the data un-touched renders fast.

I'm used to drivers that do double-buffering as appropriate "behind the scenes" for me to keep frame rates high -- is this not the case for VideoCore? Does the GLES2 driver syncrhonize/stall each time I change a resource?

Return to “Graphics programming”