Raspberry Pi 4 Performance

Support for running, installing or compiling OpenMW

Before you submit a bug report for the first time, please read: Bug reporting guidelines
User avatar
AnyOldName3
Posts: 2679
Joined: 26 Nov 2015, 03:25

Re: Raspberry Pi 4 Performance

Post by AnyOldName3 »

I guess resaving all the game's textures and comparing load times and framerates with when you hadn't done that would be a start. Otherwise you'd probably need to rebuild OpenMW with profiling enabled and see what percentage of time was spent in the code that does the decompression.
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

What's the configuration flag to enable profiling? Recompiling is not complicated, since that's how the Gentoo package manager does all package installation.
User avatar
AnyOldName3
Posts: 2679
Joined: 26 Nov 2015, 03:25

Re: Raspberry Pi 4 Performance

Post by AnyOldName3 »

I'm not sure with GCC, but I can at least tell you that its these lines that you're interested in: https://gitlab.com/OpenMW/openmw/-/blob ... p#L163-172
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

Oh, I misunderstood.

I thought that you were proposing that I use an OpenMW or Open Scene Graph profiling tool.
User avatar
AnyOldName3
Posts: 2679
Joined: 26 Nov 2015, 03:25

Re: Raspberry Pi 4 Performance

Post by AnyOldName3 »

It's not helpful for this, but for future reference, OpenMW's profiling tool comes up if you press F3. The more presses, the more detail you get, but the most detailed versions throw the results off because the profiling takes time, too.
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

AnyOldName3 wrote: 01 Oct 2020, 20:34 It's not helpful for this, but for future reference, OpenMW's profiling tool comes up if you press F3. The more presses, the more detail you get, but the most detailed versions throw the results off because the profiling takes time, too.
Right. I was using that to measure the FPS that I was getting so far.
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

With bullet version 2.89, with the openmp and threads configuration options activated, I got a 5fps bump when using OPENMW_PHYSICS_FPS=10 and walking around Seyda Neen.

FPS still occasionally drops below 10fps, but it's much rarer now.

EDIT: Note, this is still with a resolution of 640x480
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

I'm seeing these two warnings on the console that I figured I should ask about.

Warning: fallingScript line 46, column 6 (endif): endif without matching if/elseif
Warning: detected OpenGL error 'invalid operation' at after RenderBin::draw(..)

Anything that could have a performance impact?
User avatar
AnyOldName3
Posts: 2679
Joined: 26 Nov 2015, 03:25

Re: Raspberry Pi 4 Performance

Post by AnyOldName3 »

The fallingScript thing is because Tarheil's script is dodgy because Bethesda didn't know how to use the scripting language they created. You'll see a lot of warnings from vanilla content, but they're mostly fine.

The OpenGL error could be a range of things, but the main one I know about shouldn't be possible on a Pi 4 as it's only enabled on systems with relatively modern desktop OpenGL features that I don't think GL4ES uses. I'll be able to say more if you build a recent master-branch version of OpenMW (one which includes commit b4ccd2658a91176faffefa1dc95ce91741c16cab) and set the environment variable OPENMW_DEBUG_OPENGL to 1 (or ON or YES or 'Yeah, baby!' as it basically just checks it's not OFF), then post the more detailed error message.
Mishtal
Posts: 28
Joined: 13 Dec 2016, 06:45

Re: Raspberry Pi 4 Performance

Post by Mishtal »

Code: Select all

openmw --version
Crash handler installed
vchi_msg_dequeue -> -1(90)
OpenMW version 0.47.0
Revision: 425fa837d1

Code: Select all

$ OPENMW_DEBUG_OPENGL=ON OPENMW_PHYSICS_FPS=10 openmw | grep -e Warning -C 15
Input #0, bink, from 'video\bethesda logo.bik':
  Duration: 00:00:16.00, start: 0.000000, bitrate: 2324 kb/s
    Stream #0:0[0x0]: Video: binkvideo (BIKi / 0x694B4942), yuv420p(tv), 640x480, 30.06 fps, 30.06 tbr, 30.06 tbn, 30.06 tbc
    Stream #0:1[0x0]: Audio: binkaudio_rdft, 44100 Hz, stereo, flt
Enumerated output devices:
  bcm2835 HDMI 1 Stereo  bcm2835 Headphones Stereo
Enumerated HRTF names:
  Default HRTF  Built-In HRTF
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 28 inst, 4 threads, 0 loops, 2 uniforms, 8 max-temps, 0:0 spills:fills, 1 sfu-stalls, 29 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 98 inst, 4 threads, 0 loops, 36 uniforms, 32 max-temps, 0:0 spills:fills, 0 sfu-stalls, 98 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 29 inst, 4 threads, 0 loops, 2 uniforms, 8 max-temps, 0:0 spills:fills, 1 sfu-stalls, 30 inst-and-stalls
Loading content file Morrowind.esm
Loading content file Tribunal.esm
Loading content file Bloodmoon.esm
Loading content file Patch for Purists.esm
Loading content file Patch for Purists - Book Typos.ESP
Loading content file Patch for Purists - Semi-Purist Fixes.ESP
Loading content file Lake Fjalding Anti-Suck.ESP
Warning: using custom physics framerate (10 FPS).
Playing music/special/morrowind title.mp3
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 16 inst, 4 threads, 0 loops, 1 uniforms, 3 max-temps, 0:0 spills:fills, 0 sfu-stalls, 16 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 26 inst, 4 threads, 0 loops, 4 uniforms, 10 max-temps, 0:0 spills:fills, 0 sfu-stalls, 26 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 18 inst, 4 threads, 0 loops, 2 uniforms, 7 max-temps, 0:0 spills:fills, 0 sfu-stalls, 18 inst-and-stalls
Reading save file asdf.omwsave
Loading saved game 'asdf' for character 'asdf'
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 321, offset 3920, size 784) to update a GL_STATIC_DRAW buffer
Controller R2_Claw02 present more than once in meshes/r/xsiltstrider.kf, ignoring later version
Loading cell Seyda Neen (-2, -9)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 357, offset 3440, size 688) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 359, offset 960, size 192) to update a GL_STATIC_DRAW buffer
Loading cell Bitter Coast Region (-2, -8)
Loading cell Bitter Coast Region (-1, -9)
Loading cell Bitter Coast Region (-3, -9)
Loading cell Seyda Neen (-2, -10)
Loading cell Ascadian Isles Region (-1, -8)
Loading cell Bitter Coast Region (-3, -8)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 389, offset 4400, size 880) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 404, offset 5800, size 1160) to update a GL_STATIC_DRAW buffer
Loading cell Bitter Coast Region (-1, -10)
Loading cell Bitter Coast Region (-3, -10)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 415, offset 9680, size 1936) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 422, offset 2880, size 576) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 426, offset 2000, size 400) to update a GL_STATIC_DRAW buffer
Warning: fallingScript line 46, column 6 (endif): endif without matching if/elseif
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 75 inst, 4 threads, 0 loops, 20 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 75 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 91 inst, 4 threads, 0 loops, 36 uniforms, 23 max-temps, 0:0 spills:fills, 0 sfu-stalls, 91 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 106 inst, 4 threads, 0 loops, 45 uniforms, 23 max-temps, 0:0 spills:fills, 0 sfu-stalls, 106 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 62 inst, 4 threads, 0 loops, 18 uniforms, 16 max-temps, 0:0 spills:fills, 0 sfu-stalls, 62 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 89 inst, 4 threads, 0 loops, 36 uniforms, 25 max-temps, 0:0 spills:fills, 0 sfu-stalls, 89 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 117 inst, 4 threads, 0 loops, 47 uniforms, 22 max-temps, 0:0 spills:fills, 0 sfu-stalls, 117 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 108 inst, 4 threads, 0 loops, 38 uniforms, 23 max-temps, 0:0 spills:fills, 0 sfu-stalls, 108 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 75 inst, 4 threads, 0 loops, 20 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 75 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 78 inst, 4 threads, 0 loops, 22 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 78 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 131 inst, 4 threads, 0 loops, 52 uniforms, 21 max-temps, 0:0 spills:fills, 0 sfu-stalls, 131 inst-and-stalls
--
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
Loading cell Bitter Coast Region (-5, -3)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
Loading cell Ascadian Isles Region (-3, -5)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 1219, offset 2880, size 576) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 1221, offset 2880, size 576) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
Loading cell Odai Plateau (-5, -5)
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
Warning: OutsideBanner line 38, column 6 (endif): endif without matching if/elseif
OpenGL ERROR [API]: GL_INVALID_OPERATION in glTexStorage2D(immutable)
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 103 inst, 4 threads, 0 loops, 41 uniforms, 23 max-temps, 0:0 spills:fills, 0 sfu-stalls, 103 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_FRAGMENT shader: 88 inst, 4 threads, 0 loops, 22 uniforms, 22 max-temps, 0:0 spills:fills, 0 sfu-stalls, 88 inst-and-stalls
OpenGL PERFORMANCE [API]: Fallback conversion for 6400 PIPE_PRIM_QUADS vertices

Warning: detected OpenGL error 'invalid operation' at after RenderBin::draw(..)
OpenGL PERFORMANCE [API]: Fallback conversion for 4 PIPE_PRIM_QUADS vertices

OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX shader: 104 inst, 4 threads, 0 loops, 45 uniforms, 22 max-temps, 0:0 spills:fills, 0 sfu-stalls, 104 inst-and-stalls
OpenGL OTHER [SHADER_COMPILER]: MESA_SHADER_VERTEX_BIN shader: 51 inst, 4 threads, 0 loops, 18 uniforms, 19 max-temps, 0:0 spills:fills, 0 sfu-stalls, 51 inst-and-stalls
OpenGL PERFORMANCE [API]: Fallback conversion for 6400 PIPE_PRIM_QUADS vertices

OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 759, offset 0, size 240) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 759, offset 240, size 160) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 760, offset 0, size 60) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: Fallback conversion for 4 PIPE_PRIM_QUADS vertices

OpenGL PERFORMANCE [API]: Fallback conversion for 6400 PIPE_PRIM_QUADS vertices

OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 759, offset 0, size 192) to update a GL_STATIC_DRAW buffer
OpenGL PERFORMANCE [API]: using glBufferSubData(buffer 759, offset 192, size 0) to update a GL_STATIC_DRAW buffer
Post Reply