2025-08-24 15:00 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0005625Spring engineLuapublic2017-07-12 13:46
ReporterGoogle_Frog 
Assigned ToKloot 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionno change required 
Product Version103.0 +git 
Target VersionFixed in Version 
Summary0005625: 103.0.1-1050 widget:AllowDraw issue
Descriptionwidget:AllowDraw allows for FPS limiting by forcing the engine to use the previous draw frame instead of redrawing the frame. It works in 103.0.1-1048-g97abd14. In 103.0.1-1050-g53fbce0 limiting FPS causes Spring to flicker as if it is sometimes drawing frames that were earlier than the most recent frame.
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

-Relationships
+Relationships

-Notes

~0017910

Kloot (developer)

Last edited: 2017-06-29 15:15

View 2 revisions

the commit at 1050 doesn't appear to be at all related to this, and 1049 just adds some asserts. check infolog.

~0017911

Google_Frog (reporter)

I had settings issues and now think that it is caused by FSAALevel = 0. I don't know when the bug was introduced.

~0017912

Kloot (developer)

Last edited: 2017-06-29 15:55

View 2 revisions

there's no flickering on my end with that setting so I'm filing this under "driver bug".

your video also only seems to show it while the Steam popup is visible.

~0017913

Google_Frog (reporter)

This ticket implies that flickering occurs for at least one other person: https://github.com/ZeroK-RTS/Chobby/issues/269

I will get some more people to test chobby with FFAALevel = 0. As a workaround I've made FSAALevel unable to be set to 0 with chobby without manual settings editing.

~0017932

hokomoko (developer)

I had this flickering on many versions with an intel card.

~0018010

Kloot (developer)

Last edited: 2017-07-12 10:45

View 2 revisions

This is due to bad interplay between the AllowDraw FPS regulator (which is ill-conceived and redundant with 104.0) and engine-enforced buffer swaps. Framerate should be controlled via vsync instead; setting VSync=N (where N != 0) will clamp FPS to display refresh-rate divided by N. Use this for the lobby, and offer users a trinary interval (-1/0/1) to switch to once in-game. Call Spring.SendCommands("vsync i") to enable a user's choice.

~0018011

hokomoko (developer)

Last edited: 2017-07-12 13:34

View 2 revisions

This doesn't really solve this.
1) Refresh rate divided by N is bad for smooth GUI, you need to force draw if mouse moved (button highlights etc.).
2) AllowDraw was meant to reduce load during lobby.

IIRC when I only swapped buffers if a draw happened, there were some crashes.

~0018012

Kloot (developer)

Last edited: 2017-07-12 13:39

View 2 revisions

I'd say 30 or even 20fps (N=2 or N=3 for most displays) is enough for any lobby and reduces load plenty.

Those crashes were the reason why I forced swaps by default regardless of draw.

~0018013

hokomoko (developer)

Last edited: 2017-07-12 13:46

View 2 revisions

Dunno, IMO lower refresh rate were noticeable and obnoxious.

It can probably be fixed engine-side or game-side by always drawing two frames (for triple buffer) after the last forced one.

+Notes

-Issue History
Date Modified Username Field Change
2017-06-29 14:56 Google_Frog New Issue
2017-06-29 14:56 Google_Frog File Added: AllowDrawIssue.mp4
2017-06-29 15:12 Kloot Note Added: 0017910
2017-06-29 15:15 Kloot Note Edited: 0017910 View Revisions
2017-06-29 15:37 Google_Frog Note Added: 0017911
2017-06-29 15:53 Kloot Note Added: 0017912
2017-06-29 15:55 Kloot Note Edited: 0017912 View Revisions
2017-06-29 16:03 Google_Frog Note Added: 0017913
2017-07-04 13:42 hokomoko Note Added: 0017932
2017-07-12 10:43 Kloot Assigned To => Kloot
2017-07-12 10:43 Kloot Status new => closed
2017-07-12 10:43 Kloot Resolution open => no change required
2017-07-12 10:43 Kloot Note Added: 0018010
2017-07-12 10:45 Kloot Note Edited: 0018010 View Revisions
2017-07-12 13:33 hokomoko Note Added: 0018011
2017-07-12 13:34 hokomoko Note Edited: 0018011 View Revisions
2017-07-12 13:39 Kloot Note Added: 0018012
2017-07-12 13:39 Kloot Note Edited: 0018012 View Revisions
2017-07-12 13:45 hokomoko Note Added: 0018013
2017-07-12 13:46 hokomoko Note Edited: 0018013 View Revisions
+Issue History