Bug 6006 - OpenGL2: Gaining up to 100 fps or more by only renaming ioquake.x86.exe to quake3.exe
Status: RESOLVED INVALID
Alias: None
Product: ioquake3
Classification: Unclassified
Component: Video
Version: unspecified
Hardware: PC Windows NT
: P3 normal
Assignee: Zachary J. Slater
QA Contact: ioquake3 bugzilla mailing list
URL:
Depends on:
Blocks:
 
Reported: 2013-08-01 07:22 EDT by Kuehnhammer Tobias
Modified: 2013-08-01 13:33:24 EDT
3 users (show)

See Also:


Attachments
renamed exes comparison (719.00 KB, image/jpeg)
2013-08-01 08:48 EDT, Kuehnhammer Tobias

Description Kuehnhammer Tobias 2013-08-01 07:22:39 EDT
Though it is known that renaming an id Tech 3 based game exe to "quake3.exe" will give you some extra fps, I think it is not acceptable that
Q3A (1999) will give more fps than ioquake3 (2014).
Since OpenGL2 has all this new rendering features this has a greater significance. Moreover, Ioquake3 and derived games e.g.: Spearmint, should at least be able to be comparable to a 14 year old game (Q3A)!
It is not only an ATI relevant bug https://bugzilla.icculus.org/show_bug.cgi?id=3526, also Nvidia has troubles with id Tech 3 games, as long as the exe isn't renamed to "quake3.exe"!
Ioquake3 + OpenGL2 outperforms all other rendering projects so far. Comparisons with a renamed ioquake3.x86.exe gives me mor than 100 fps compared to regular named exe. Ioquake shouldn't waste such a tremendous amount of fps! Ioquake3
can easily beat even more modern game engines.

Thanks,

Tobias Kuehnhammer
Comment 1 Monk 2013-08-01 07:51:57 EDT
Ok, you are aware that renaming the .exe makes a fps difference. But do you know why?  It's because drivers are specifically tuned to that game. It was a big controversy 10 years ago with the whole quake/quack things. Drivers were taking quality shortcuts to get artificially inflated fps scores. Things like forcing trilinear filtering off even when you enable it and reducing texture quality behind the scenes, again something the user has no control over. 

So there are quality shortcuts hard coded into drivers left over from 10 years ago. If you really care about this issue you need to approach AMD and nvidia about enabling their "optimizations" for a binary loaded into memory called ioquake*. You will also want to get them to disclose exactly what is going on so we know what the trade offs will be if this is force enabled and ioquake3 has no control over the quality settings anymore. 

Now maybe they are just really optimized and there are no shortcuts being taken anymore. I am dubious, though. 

Another thing you will want to test is scaling. Yes, the old renderer is faster, but it does less. And the most important part is what fps does it get at high rspeeds?  The old renderer does 1000 fps until you get rspeeds above about 40,000 when it tanks sharply. The new renderer, I believe we are making maps with rspeeds up to 500,000 and keeping playable fps with extra visual goodies enabled.  Testing with a vast majority of q3 maps (max rspeeds probably around 30,000) won't show this advantage but it allows mappers/modelers to use more modern assets and improve both level geometry and complexity as well as overall visual appeal since the triangle count can be much higher with playable fps. 

Have you renamed ioquake3 to quake3 and tested to see if the new renderer gets higher fps?  I see mainly comparisons to the old one with higher fps and the new ones unaltered. If you have done the renaming test on the new renderer, did it break anything or have any affect?  The new renderer uses a very different rendering method than the original so the driver optimizations/shortcuts may not be relevant in a modern renderer or game. Quake 3 was relatively simple. It may not be possible to see those gains in modern times even with driver cheating.
Comment 2 Kuehnhammer Tobias 2013-08-01 08:48:46 EDT
Created attachment 3373 [details]
renamed exes comparison

I tested both renderers, the influence is higher on OpenGL2, thats why I called it OpenGL2 bug.
I didn't talk about a comparision of opengl1 vs. opengl2.
Hmm, maybe my english is too bad, so I will attach a screenshot, have a look at it!
At the screenshot I will show:

Top: ioquake3.x86.exe + cl_renderer opengl2
Middle: ioquake3.x86.exe, renamed exe to quake3.exe + cl_renderer opengl2
Bottom: ioquake3.x86.exe, renamed exe to quake3.exe + cl_renderer opengl2 + r_forcesun 1

The picture at the bottom shows the only issue I can find when renaming the exe (some textures are darker when r_forcesun or r_mapoverbrightbits is 0).

So it is not an opengl1 vs. opengl2 test. I tested ioquake3.x86.exe + opengl2 vs. renamed ioquake3.x86.exe + opengl2.

Zack Middleton already told me that this is a driver hack, though I was under the assumption that a new renderer doesn't depend on these hacks/bugs from ATI or/and Nvidia anymore.
Therefore I was under the assumption that ioquake can't fix opengl1 renderer but has the possibility to do this in opengl2 renderer :(
Maybe this is the thing I understand wrong. Though, it still seems weird to me that all the same OpenGL optimizations/shortcuts are relevant in such a modern renderer.
Sorry, I am no rendering expert...

Thanks for your reply,

Tobias Kuehnhammer
Comment 3 Tim Angus 2013-08-01 08:53:59 EDT
The trouble is that without know /what/ the drivers hacks are, we can't fix the code path which is slow without the hacks. In other words, we need information from Nvidia/ATI.
Comment 4 Kuehnhammer Tobias 2013-08-01 10:30:32 EDT
Okay, I asked Nvidia, I hope they can help us!
Thanks to all of you!

Tobias Kuehnhammer
Comment 5 Zachary J. Slater 2013-08-01 13:33:24 EDT
This is a driver issue.