View Issue Details

IDProjectCategoryView StatusLast Update
0005625Spring engineLuapublic2017-07-12 13:46
ReporterGoogle_Frog Assigned ToKloot  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Product Version103.0 +git 
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.
Attached Files
AllowDrawIssue.mp4 (Attachment missing)
Checked infolog.txt for Errors

Activities

Kloot

2017-06-29 15:12

developer   ~0017910

Last edited: 2017-06-29 15:15

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

Google_Frog

2017-06-29 15:37

reporter   ~0017911

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

Kloot

2017-06-29 15:53

developer   ~0017912

Last edited: 2017-06-29 15:55

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.

Google_Frog

2017-06-29 16:03

reporter   ~0017913

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.

hokomoko

2017-07-04 13:42

developer   ~0017932

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

Kloot

2017-07-12 10:43

developer   ~0018010

Last edited: 2017-07-12 10:45

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.

hokomoko

2017-07-12 13:33

developer   ~0018011

Last edited: 2017-07-12 13:34

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.

Kloot

2017-07-12 13:39

developer   ~0018012

Last edited: 2017-07-12 13:39

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.

hokomoko

2017-07-12 13:45

developer   ~0018013

Last edited: 2017-07-12 13:46

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.

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
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
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
2017-07-12 13:33 hokomoko Note Added: 0018011
2017-07-12 13:34 hokomoko Note Edited: 0018011
2017-07-12 13:39 Kloot Note Added: 0018012
2017-07-12 13:39 Kloot Note Edited: 0018012
2017-07-12 13:45 hokomoko Note Added: 0018013
2017-07-12 13:46 hokomoko Note Edited: 0018013