RPi-Distro / repo

Issue tracking for the archive.raspberrypi.org repo
37 stars 1 forks source link

[Bullseye]: regression in OpenGL ES 2 performance, down more than 30% #285

Closed audetto closed 1 year ago

audetto commented 2 years ago

I have a Pi400 and recently updated to Bullseye, from Buster.

I noticed that the emulator I develop had a big drop in performance. It uses SDL2 + OpenGL ES 2

When running fullscreen inside X, it could reach a fantastic speed of 140 FPS (with vsync disabled). Now it only gets to 95 FPS when running with openbox, and only to 70 FPS with the default mutter.

A non fullscreen window always run slower and the speed dropped from 70 FPS to 60 or 45.

This brings the speed very close to 60 FPS when it starts to droop frames.

In all cases I use the full KMS driver: dtoverlay=vc4-kms-v3d (which, at least in Buster) made a massive improvement to OpenGL ES 2 performance

It seems that the 2 distros use the same kernel 5.10.63. Has anything changed between the 2 scenarios?

popcornmix commented 2 years ago

Lots has no doubt changed, but identifying it may be tricky. My vague understanding is 3d rendering is done by a mixture of mesa and kernel. glamor provides gl acceleration for X (and is required for using gl under X). There may be a combination of fbturbo, xcompmgr, mutter, openbox used for composition and window manager.

You've identified that mutter costs some performance (but not all). What's the version of mesa on each? It should be possible to build your own mesa to ensure they are the same. Checking which of the other bits are running on each system (and versions) may indicate a difference.

Have you tried rendering without X, e.g. using GBM (see kmscube). I suspect that may have better performance and rules out some of the X libs.

audetto commented 2 years ago

It is curious that on Buster I get

mesa 21.2.2 sdl 2.0.14

while on bullseye I get

mesa 20.3.5 sdl 2.0.14

I double checked and they are both updated.

Moreover, running without X is not something I know how to do, nor I would like to. Using X has so many advantages, and in buster, the speed is more than enough.

There must be some reference GLES app used for regression testing when creating a new Pi Distro or Kernel? Do you know what is used?

audetto commented 2 years ago

Is it normal that Mesa is older in bullseye (20.3.5) than in buster (21.2.2)? Assuming it has anything to do with the slower speed.

XECDesign commented 2 years ago

I'm only seeing 19.3.2 on our end in buster. Are you sure you didn't build your own Mesa at some point or add a third party repo?

What's the output of apt policy libegl1-mesa

audetto commented 2 years ago

You are right. I must have got the versions while I was ssh into Ubuntu 21.10.

So, the versions on Buster are

Mesa 19.3.2, SDL 2.0.9

audetto commented 1 year ago

Something has changed. Now it is back at the original good speed.

Nothing has changed on my code, so must have been a fix on the OS side.

XECDesign commented 1 year ago

Hmm, I don't think anything has changed on our end either.

If the issue comes back, could you please send the exact list of packages that was updated to re-introduce the problem? You should be able to find that in /var/log/apt/history.log