OpenGL reqs status, planning
Posted: Thu Sep 14, 2017 6:26 pm
A recent user support request that wound up appearing related to our OpenGL reqs got me looking at them a bit more, and it seems there is some murkiness around the topic, worth some discussion and clarification and perhaps some planning for the future.
FO needs 2.0 or 2.1, for what?
Our Wiki Reqs page and a check in HumanClient.cpp say FO needs OpenGL 2,0 for best performance and may be able to get by with OpenGL 1.5, but our Readme.md says FO requires OpenGL 2.1. That latter req seems first introduced in PR 1457, though I don't find any actual discussion of the OpenGL req. Marcel, do you recall (or does anyone else know) what prompted that increase from 2.0 to 2.1?
Appendix J of the OpenGL_2.1 specs describes the differences between OpenGL 2.0 and OpenGL 2.1. Glancing briefly over that I see a number of changes to (or at least new options for) texture handling, and at least one change to pushing and popping attributes as being among the more likely possibilities for us, but nothing I clearly recognize as an issue for us.
If the HumanClient finds OpenGL less than 2.0, it tries disabling a few things, and perhaps we could do a bit more on that front?
To help deal with that sort of thing better in the future, it seems it might be worthwhile to start adding some extra comments/doc infor for GG methods that directly use OpenGL calls, noting which version they require and why.
Also, in my brief reading on this right now, it sounds like OpenGL 3.3+ provides quite a bit better performance than OpenGL 2.0/2.1, but that even if we want to keep supporting OpenGL 2.0/2.1 it should be possible to write most or all of the Open 2.0 code to use the 2/0/3.3 intersection in ways compatible with the OpenGL3.3+ coding guidelines so that we can more easily let people with better cards get better performance from that.
FO needs 2.0 or 2.1, for what?
Our Wiki Reqs page and a check in HumanClient.cpp say FO needs OpenGL 2,0 for best performance and may be able to get by with OpenGL 1.5, but our Readme.md says FO requires OpenGL 2.1. That latter req seems first introduced in PR 1457, though I don't find any actual discussion of the OpenGL req. Marcel, do you recall (or does anyone else know) what prompted that increase from 2.0 to 2.1?
Appendix J of the OpenGL_2.1 specs describes the differences between OpenGL 2.0 and OpenGL 2.1. Glancing briefly over that I see a number of changes to (or at least new options for) texture handling, and at least one change to pushing and popping attributes as being among the more likely possibilities for us, but nothing I clearly recognize as an issue for us.
If the HumanClient finds OpenGL less than 2.0, it tries disabling a few things, and perhaps we could do a bit more on that front?
To help deal with that sort of thing better in the future, it seems it might be worthwhile to start adding some extra comments/doc infor for GG methods that directly use OpenGL calls, noting which version they require and why.
Also, in my brief reading on this right now, it sounds like OpenGL 3.3+ provides quite a bit better performance than OpenGL 2.0/2.1, but that even if we want to keep supporting OpenGL 2.0/2.1 it should be possible to write most or all of the Open 2.0 code to use the 2/0/3.3 intersection in ways compatible with the OpenGL3.3+ coding guidelines so that we can more easily let people with better cards get better performance from that.