My Small game runs faster with software rendering on both my pc as on the Raspberry pi (with no gl driver)


I’m trying to understand something. I’m no expert about libsdl but i’m in the process of migrating an old SDL 1.2 game to SDL 2.0. I have most things done and the game runs on both my pc (compiled with mingw32) as on my raspberry pi 2/3/4. Now if i disable vsync and run software rendering my game has a much higher fps comparted to accelerated rendering. On my rpi 3/4 when i disable the open gl driver and go back to the legacy driver for the raspberry pi i even get crazy fps values. Now i was seeing someting similar on my windows 10 pc running and 1070 gtx and an i7 7600 cpu. software runs faster than hardware accelrated direct 3d. Now my game waits for input (using polling) so it hardly ever draws any changed surfaces to the screen.

The reason i’m posting this topic is because i would like to understand why this behaviour is happening especially related the raspberry pi. Also when i do use the Open gl driver from raspbian instead of legacy mode i can nowhere near achieve the same speeds as when i run the driver in legacy mode.

what i do for fps monitoring is keep track of time using Time = SDL_GetTicks and then in the loop if Time +1000 < SDL_GetTicks i show the frame count and reset framecount back to 0. So i think it shows me the amount of frames it had drawn in about a second.

Anyway i’m mainly interested in the reasoning of this behaviour. I will release my game on github once it’s finished and i did record the behaviour in a video. which can be seen here if your interested and maybe someone can explain why this is happening on the rpi: