andrei-drexler / ironwail

High-performance QuakeSpasm fork
GNU General Public License v2.0
546 stars 50 forks source link

win10: Required extension GL_ARB_bindless_texture not found #5

Closed j4reporting closed 2 years ago

j4reporting commented 2 years ago

can anyone confirm that this will actually work with Skylake iGPUs? Or is this just a Windows intel driver issue? Tried the test2 binary and a current version compiled usind MSYS2.

iGPU is Iris Graphics 540 GFX driver version: 27.20.100.9466 Win10 21H1

andrei-drexler commented 2 years ago

I don't have access to a Skylake iGPU, so those requirements are based on Intel docs on their "Gen 9" graphics architecture (used for the first time in Skylake). I think Iris Graphics 540 should support bindless textures, but looking through the OpenGL Hardware Database, the only entries in the 500 series that report the extension are for HD Graphics 500 and HD Graphics 505, used in Apollo Lake (2016) - which, confusingly, still has Gen 9 graphics (but maybe an updated version?). It's a bit of a mess IMO.

In any case, I've added a fallback path for GPUs without bindless support these past couple of days - the speed gains won't be as massive, but they should still be there, and the latest code should run even on Haswell iGPUs. I don't have one of those, either, but at least I have tested on an Atom x7-Z8700 (which, AFAIK, has Gen 8 graphics), so I'm fairly certain all Skylake iGPUs will be able to run this as well.

j4reporting commented 2 years ago

Agree, Intel's naming is confusing. HD Graphics 500 / 505 looks like Skylake, but I think the core may have received some updates. It was released one year after Skylake. According to the OpenGL HW DB all Skylake GPUs lack support for bindless_textures.

Anyhow, latest versions do run on HD Graphics 530 and Iris Graphics 540. Timedemo show some good improvements compared to vanilla quakespasm. But for some reason results for timedemo demo3 are lower than quakespasm. vkQuake have the best results.

here are the results for Iris Graphics 540: All binaries were x64 versions, libsdl 2.0.18. vkquake and qspasm-gl4 compiled with VC 2019 CE. Settings: resolution 1920x1080, fov 100, gl_texture_anisotropy "1" , gl_texturemode "GL_NEAREST_MIPMAP_LINEAR" , r_wateralpha "0.8" , scr_sbarscale 2.0, scr_sbaralpha "0.95", viewsize "100"

r_novis              r_novis 1                       r_novis 0   
timedemo       demo1    demo2    demo3        demo1    demo2    demo3
qspasm           309      291      303          324      321      321
qspasm-gl4       354      332      257          408      420      312
vkquake          430      354      377          494      433      470
andrei-drexler commented 2 years ago

The 540 seems a bit faster overall than I thought, but relative to vkQuake/base QS I'd say the results are pretty much as expected. The engine is optimized for the worst-case scenario, where performance really matters (meaning complex maps like shib7, shib8, ad_tears, ad_sepulcher, alk_tellus or ravenkeep), rather than the best-case scenario (handled reasonably well by all engines, IMO), which is what the vanilla timedemos test. If you have any of these more complex maps, I think the results will be much more interesting. That being said, the latest code does have an optimization that should improve performance on iGPUs even on simple maps like the vanilla ones.

j4reporting commented 2 years ago

yeah the 540 is doing quite well.. The Intel NUC-6I5SYH system is quite capable and can handle HL2 / portal2 etc quite well. Of course you can't go all out with the resolution and gfx options for 'newer' games. But I grew up with Atari 2600, C64, AMIGA 500 etc., so I don't need all the highest AA, FSAA, BLOOM and other bells and whistles to enjoy a good game. It's also quite good for emulation stuff with dosbox, scummvm etc.. And the CPUs TDP is 15W.

I would like to compare this system with the current NUC generation with the new Xe GPU core. Unfortunately, these are almost impossible to get and if they are, the price is much higher than the list price. Maybe it's time to build my own system again after a long time.

I did a quick test with ad_sepulcher, took the FPS at spawn position, did not move. ( all programs are latest git versions)

qspasm    ~35 FPS  
vkquake     100 FPS   r_fteparticles 0
vkquake      88 FPS    r_fteparticles 1  / this looks really nice with the weather system and the additional particles
ironwail    149 FPS      < not so sure about the name though  ;) > 

the vanilla timedemo results have also improved over the last 4 weeks.

ironwail    r_novis 0
demo1   464     |  demo2   481  | demo3   370     
previous   408   |         420  |          312