2019-12-14 22:14 CET

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0005597Spring engineGeneralpublic2017-06-13 20:59
Assigned ToKloot 
Product Version103.0 +git 
Target VersionFixed in Version103.0 +git 
Summary0005597: 103.0.1-1023 A popup appears for users with low GPU memory
DescriptionIt looks like this: http://imgur.com/PyHY7Yd

The engine should not be creating a popup every time the game is run. Warning people about their hardware is a UI task and needs to be flexible. I have someone claiming that Spring is fine with 128MB of GPU memory and the right settings.
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files




Google_Frog (reporter)

Upon checking debug mode they actually have 512MB.


Kloot (developer)

"someone claiming that Spring is fine with 128MB of GPU memory and the right settings"

players are free to make any claim whatsoever, but the engine really isn't (ZK's preloaded model textures alone require almost double that).

this popup is a disclaimer against CTD's caused by games running out of GPU memory on low-end hardware, as happened in https://github.com/ZeroK-RTS/CrashReports/issues/1232 and many other cases.


hokomoko (developer)

I agree with GF on this one - this warning is not good. Spring should be able to make "thinner" games as well.

If we can make correct error pop ups on GPU OOM it would be far better (probably not really possible?)


Kloot (developer)

not really, no. gpu::bad_alloc doesn't exist, just cold hard driver crashes.


hokomoko (developer)

I wonder what we'll find if we try to check gpu use after said crash.

Even if not, it should be possible to store the GPU mem usage once per frame and if you had a crash when it's >90% full, do the pop up.


Kloot (developer)

that assumes the engine manages to even show the popup after a crash.

as many of ZK's reports show, CTD's without a trace or any semblance of orderly shutdown are common so the user won't have a clue.


hokomoko (developer)

Well, the fact that we can't do what's needed doesn't mean we should do what's harmful.


Kloot (developer)

Last edited: 2017-06-05 01:19

View 2 revisions

what in your world makes a preemptive empirically-based *warning* harmful to you?


hokomoko (developer)

It's annoying users. Annoyed users don't play.
I believe False positives are more harmful than false negatives.


Kloot (developer)

Last edited: 2017-06-05 01:23

View 2 revisions

except that here we have many documented *true* positives.

crashes annoy users. crashing users especially do not play.


Google_Frog (reporter)

We previously didn't have any way to detect false positives. Now we do, but only for those particularly vocal in chat:

"<Fealthas> Oh no!
<Fealthas> My gpu has less than 1 GB of memory
<Fealthas> what shall I do?"

"<Firepluk> wtf?!
<Firepluk> spring just said me that my system has LESS than 1 GB of memory"

Firepluk initially made the report and I knew they had messed with settings to get good FPS. I had no idea about Fealthas, he never indicated having any issues. I think it is very likely that Firepluk has 512MB of gpu memory and that they don't have problems playing ZK. I know this from multiple times that they have asked me about engine and widget settings that may help for poor gpus. They regularly play large games, with decent CPU in /info, and if performance was poor they would be whinging.

This is besides the point though. When the message encounters a true positive what is it supposed to achieve? What is the goal here? Is the aim to prevent them from attempting to try to run Spring? Surely, if they actually regularly crash, the crash will prevent them from playing. I doubt they will find much consolation in the fact that a message popped up and warned them this might happen. I don't know how many would even remember the message as it looks like the type of annoying message that people instinctively click through and it could have appeared an hour ago. It is bad UI design.

This popup told me that you think that less than 1GB of memory deserves minimal settings so I did this: https://github.com/ZeroK-RTS/Chobby/commit/bb4dc56357a82426566fe65f48ddc43edaecd6fe#diff-cdf0536da4e28065e8dd44e89602ed53R741


gajop (developer)

Engine shouldn't produce (especially not force) any such UI.

Let game devs decide what gets displayed. If you think these are common problems, please communicate them instead.

I'd much rather engine work be spent towards providing us information on how "good" GPU/system rendering capabilities are, as I don't think memory itself is enough. That would allow for "Autodetect settings" to be created for games.


hokomoko (developer)

@Kloot I regard this issue as very important and consider a popup more detrimental than helpful for the reasons stated above.
Unless you are adamant that it should stay I will move this message to be a log line next week.


jK (developer)

| not really, no. gpu::bad_alloc doesn't exist, just cold hard driver crashes.

glGetError() == GL_OUT_OF_MEMORY ?


jK (developer)

also there is AGP memory, so 128MB cards got access to like 500MB


Kloot (developer)

Last edited: 2017-06-13 20:19

View 2 revisions

First, allowing the vocal minority to influence policy is almost never a good idea.

Second, this level of objection over a popup is unbelievable to me.

1GB became the standard even for low-end HW many years ago. Users should not *ever* run the engine with less, memory size along with driver robustness is a massive factor in its stability. Time and again this has been proven, not to mention the "let game devs decide" approach is *way* too fragile and undermines a lot of the work I have put in to improve it. I also do not feel at all obligated to enable a downgraded "thin" Spring (a line of thinking which limits the kind of assumptions that can be safely made in code and has held it back for far too long already) while in practice the burden of dealing with endless user graphical issues falls to me anyway because nobody else is left or willing or able to do it.

Let me reiterate: aiming to include the extreme low-end and bending over backwards not to annoy anyone stuck there is *DETRIMENTAL TO DEVELOPMENT* in the long run, much like the forced support for ancient Intels has been. I consider that more pressing, more urgent, more absolutely critical than whatever the cost of "bad UI design" is.

The popup can go, but not without making GL4 the minimum requirement.


Kloot (developer)

"glGetError() == GL_OUT_OF_MEMORY ?"

1) doesn't always get set, if a driver did this reliably it could also decide not to crash
2) needs to be spammed all over the codebase because almost any function can cause it
3) drivers will typically defer memallocs (e.g. glBufferData) so the link between call and OOM is lost

"also there is AGP memory, so 128MB cards got access to like 500MB"

such cards suck to begin with and they eat into the address space.


hokomoko (developer)

check glGetError() == GL_OUT_OF_MEMORY in the crashhandler

And yes, we have users with cards that suck


Kloot (developer)

no shit.

alas, I'm not going spend time worrying about them or pollute crashhandler with GL crap.

-Issue History
Date Modified Username Field Change
2017-06-04 12:39 Google_Frog New Issue
2017-06-04 12:56 Google_Frog Note Added: 0017776
2017-06-04 21:48 Kloot Note Added: 0017779
2017-06-04 22:33 hokomoko Note Added: 0017781
2017-06-04 22:40 Kloot Note Added: 0017782
2017-06-04 23:50 hokomoko Note Added: 0017784
2017-06-05 00:38 Kloot Note Added: 0017785
2017-06-05 00:49 hokomoko Note Added: 0017786
2017-06-05 01:16 Kloot Note Added: 0017787
2017-06-05 01:18 hokomoko Note Added: 0017788
2017-06-05 01:19 Kloot Note Edited: 0017787 View Revisions
2017-06-05 01:21 Kloot Note Added: 0017789
2017-06-05 01:23 Kloot Note Edited: 0017789 View Revisions
2017-06-05 07:37 Google_Frog Note Added: 0017790
2017-06-05 07:55 gajop Note Added: 0017792
2017-06-13 17:05 hokomoko Note Added: 0017838
2017-06-13 20:03 jK Note Added: 0017839
2017-06-13 20:04 jK Note Added: 0017840
2017-06-13 20:05 Kloot Note Added: 0017841
2017-06-13 20:18 Kloot Note Added: 0017842
2017-06-13 20:19 Kloot Note Edited: 0017841 View Revisions
2017-06-13 20:21 hokomoko Note Added: 0017843
2017-06-13 20:59 Kloot Assigned To => Kloot
2017-06-13 20:59 Kloot Status new => resolved
2017-06-13 20:59 Kloot Resolution open => fixed
2017-06-13 20:59 Kloot Fixed in Version => 103.0 +git
2017-06-13 20:59 Kloot Note Added: 0017844
+Issue History