Bug #327

Both original ET and ET:Legacy play horribly with new GFX cards if Extensions Limit is not enforced

Added by chriswww almost 6 years ago. Updated over 5 years ago.

Status:Fixed% Done:

100%

Priority:HighSpent time:-
Assignee:IR4T4
Category:Client
Target version:2.71rc2
OS: Arch:

Description

It took me a year to track down this insiduous problem, which causes horrible gameplay. Need to much increase the buffer to read opengl extensions available from card. Currently set at 4096 bytes/characters. However, as the game detects an impending buffer overrun, it throws them all away, doing all the fancy rendering bits in software. Hence stutter, audio artifacts, warping opponents and keyboard/mouse input sometimes doesn’t work as responsively as it should. Please fix, so that the game correctly detects all extensions it wants.

Associated revisions

Revision c9976f1d
Added by IR4T4 almost 6 years ago

client: size of char extensions_string and related ui var increased refs
#327

Revision 0926225d
Added by IR4T4 almost 6 years ago

client: reverted old extensions_string size, unused
ZOMBIEFX_FADEOUT_TIME removed, formattings refs #327

Revision ed1e3f74
Added by IR4T4 almost 6 years ago

client: print all GL extensions in GfxInfo_f refs #327

Revision 0f61edd7
Added by IR4T4 almost 6 years ago

renderer2: print all GL extensions in GfxInfo_f refs #327

History

#1 Updated by IR4T4 almost 6 years ago

  • Category set to Client
  • Target version set to 2.78

Max limits related to the GL extenstions string size/data have been increased (extensions_string[ 8192 ]). This should do the trick for the next release but isn’t a final solution. Extensions string data should be stored in a pointer see http://stackoverflow.com/questions/8500586/what-size-of-an-array-should-i-use-to-print-glgetstringgl-extensions
instead of char[] to solve our issue finally.

... but we have to update this code area anyway (at least for renderer2). Our used glGetString(GL_EXTENSIONS) function is deprecated in upper OpenGL versions - see http://www.opengl.org/discussion_boards/showthread.php/165539-GL_EXTENSIONS-replacement and if we switch to SDL 2.0 the whole context code might change.

#2 Updated by IR4T4 almost 6 years ago

  • Status changed from New to In Progress
  • Assignee set to IR4T4
  • Priority changed from Normal to High
  • Target version changed from 2.78 to 2.71rc2

I had to revert to the olf value of 4096 for compatibility reasons. WIP!

#3 Updated by IR4T4 almost 6 years ago

  • Status changed from In Progress to Fixed
  • Target version changed from 2.71rc2 to 2.78
  • % Done changed from 0 to 100

Issue has been fixed with the glew library http://glew.sourceforge.net/ introduced by Jacker for renderer2. I didn’t realize before it’s also used for renderer1

Command '/gfxinfo’ will print the complete info now.

Notes:
Internally glconfig_t member extensions_string[MAX_STRING_CHARS * 4] isn’t used for real at engine side anymore but populated and kept for compatibility reasons.
To fix the string with more than 4096 chars on mod side with keept compatibility we have to add a pointer to the full string at the end of glconfig_t. Currently I see no reason to do so: Mods have to adjust their code in that case and in vanilla/legacy mod the extensions_string data affects UI 'FEEDER_GLINFO’ code only which this isn’t used by any menu.

#4 Updated by IR4T4 over 5 years ago

  • Target version changed from 2.78 to 2.71rc2

Also available in: Atom PDF