xyzz / openmw-android

OpenMW for Android
https://omw.xyz.is/
GNU General Public License v3.0
324 stars 87 forks source link

Nightly 43: NavMesh CacheSize bloats until OOM #72

Open licaon-kter opened 3 years ago

licaon-kter commented 3 years ago

F-Droid SD855 Android 10 distant terrain true in-game options video detail view distance 10x

AbduSharif commented 3 years ago

This helps with the issue, it seems android devices can't really handle the original value most of the time: I have this for my device.

[Navigator]
max tiles number = 150
AbduSharif commented 3 years ago

There's still efforts to help this with main OpenMW gitlab repo. (It's where you really should open a bug report, a detailed one of course).

licaon-kter commented 3 years ago

I'm not running their version directly so not sure I should report there.

Also, the thing is I tested these big distances before and, while running slowly, they were not bloating/leaking and crashing in 30 seconds.

xyzz commented 3 years ago

please upload a configuration file which reproduces the issue and follow report format, I have no idea what "distant land true" "view distance 10x" means.

licaon-kter commented 3 years ago
[Input]
toggle sneak = true
always run = true

[Video]
antialiasing = 4
fullscreen = true
vsync = true
minimize on focus loss = true

[Game]
prevent merchant equipping = true
use magic item animations = true
barter disposition change is permanent = true

[General]
anisotropy = 16
texture mipmap = linear

[GUI]
font size = 17
ttf resolution = 96
subtitles = true

[Terrain]
distant terrain = true

[Fog]
use distant fog = false
distant land fog start = 24000
distant land fog end = 40000
distant underwater fog start = -4096
distant underwater fog end = 2457.6
distant interior fog start = 0
distant interior fog end = 16384

[Saves]
max quicksaves = 8
timeplayed = true

[HUD]
crosshair = false

[Camera]
viewing distance = 81920

[Water]
reflection detail = 0
refraction = false
rtt size = 512
shader = false
akortunov commented 3 years ago
[Terrain]
distant terrain = true

It is not really an only terrain, it is also an enabled ObjectPaging, which will use a large amount of RAM on PC with 10x cells viewing distance and a HUGE amount of RAM on Android (due to lack of dedicated VRAM and hardware texture decoding). It may cause OOM crashes.

You need either to render only distant terrain:

[Terrain]
distant terrain = true
object paging = false

or reduce viewing distance to value, sane for mobile devices:

[Terrain]
distant terrain = true

[Camera]
viewing distance = 24500

I tested these big distances before

It depends on how much before - OpennMW 0.46 and early 0.47 builds do not have Object Paging, so they use much less RAM with same settings. If I remembered correctly, Object Paging was added somewhere around Nightly-37 on Android.

licaon-kter commented 3 years ago

What's Object Paging for?

akortunov commented 3 years ago

To render distant objects instead of just landscape, as in older builds.

licaon-kter commented 3 years ago

Right, ok

So object paging = false makes distant land look like sh-...ummm...barren.

And enabling it, it looks fine at 4x (viewing distance = 32768) but still OOMs...minutes later.

Somehow this paging makes things worse, without it there's no reason to want to see barren distant land, while with it one might get OOMed.

Note that's an OOM that kills all my other apps too, on a 6Gb/SD855 device.

:(

AbduSharif commented 3 years ago

This paging makes things fast (let's you see distant statics without a big performance drop) your view distance are too much for your hardware, again the option I mentioned is as much as you can help this other than lowering the view distance and playing with the other object paging options.

elsid commented 3 years ago

How do you detect that NavMesh CacheSize causes crashes? There is a panel enabled by F4 on PC (don't know how it works on android): image

This helps with the issue, it seems android devices can't really handle the original value most of the time: I have this for my device.

[Navigator]
max tiles number = 150

This does not help with cache. It's a limit for the currently used tiles. Number of cached tiles can grow beyond that but there is a limit.

licaon-kter commented 3 years ago

The F4 display shows the ever growing number, yes,

elsid commented 3 years ago

The F4 display shows the ever growing number, yes,

What's maximum number did you see? And what is the openmw version?

licaon-kter commented 3 years ago

Latest nighly F-Droid, I don't know, it all goes down rather fast :(