jwatte
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?

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 7527
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.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

jwatte
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”