Jump to content
  • Sign Up

Playing Guild Wars 2 on Linux - Performance optimizations and more.


Recommended Posts

@loseridoit.2756 said:

@"jbrother.1340" said:

I will do further testing and report if needed.

is this a good indicator that DRI3 is running and enabled?
cat /var/log/Xorg.0.log | grep -i DRI3[    51.671] (==) RADEON(0): DRI3 enabled[    51.683] (II) Initializing extension DRI3

if I run this _cat /var/log/Xorg.0.log | grep -i radeon i get this output which references DRI2 as well so I am not sure:
 cat /var/log/Xorg.0.log | grep radeon    [    50.446]    loading driver: radeon    [    50.447] (==) Matched radeon as autoconfigured driver 0    [    50.447] (II) LoadModule: "radeon"    [    50.449] (II) Loading /usr/lib64/xorg/modules/drivers/radeon_drv.so    [    50.456] (II) Module radeon: vendor="X.Org Foundation"    [    51.671] (II) RADEON(0): [DRI2]   DRI driver: radeonsi    [    51.671] (II) RADEON(0): [DRI2]   VDPAU driver: radeonsi    [    51.687] (II) AIGLX: Loaded and initialized radeonsi

I tried to look in:/etc/X11/xorg.conf.d

I have a
10-amdgpu.conf
file but it only has the following info:
    Section "OutputClass"            Identifier "AMDgpu"            MatchDriver "amdgpu"            Driver "amdgpu"    EndSection

you driver output looks messy.

take a look which kernel driver you are using
 lspci -vnn

if you see radeon in use then you can change it to amdgpu by adding these kernel parameters.
    radeon.cik_support=0 amdgpu.cik_support=1

AMDGPU is needed for vulkan drivers.If necessary, you can test out the powerplay code that was added in the DC core.
amdgpu.dc=1 amdgpu.dpm=1

You can use yast to add these kernel arguments

see if that improves reclocking in your card. If you do find it break your display then report it to freedesktop.

I have been working through this still.

I did run a TEQ today it was a max map. It dropped fps as I would expect but ran decent and looked better at higher settings. was a touch laggy but was full map. I forgot to turn on the gallium hud and want to do it again and watch GPU usage. Not ready to file a bug report yet. Not much difference overall in game in FPS between the two methods but the character screen does report much higher for OpenGL over gallium. Gallium9 is smoother and I can notice it and looks just a bit cleaner in color and texture at the same settings.

I did add the above stuff to kernel parameters but it didn't seem to change much. Should it have a large affect the powerplay code?

right now what concerns me is that running it like this I cannot access the trading post at all or the store. I get net error. If I load another way armor's script or lutris/playonlinux it will let it load but starting it via cli and the gallium setup I cannot? Any thoughts on that?

Link to comment
Share on other sites

@kalel.6129 said:

@"VAHNeunzehnsechundsiebzig.3618" said:

ehm, you have to install the game via wine setup.exe and then go to the games directory, where you enter the commandcd .wine/drive_c/Program Files/Guild\ Wars 2STAGING_SHARED_MEMORY=1 WINEDEBUG="-all" csmt_force=1 wine Gw2-64.exe -maploadinfo -dx9single

(the wine-any is for gentoo users who have installed wine-any-VERSION, gentoo lets you install douzends of wine versions in parallel).

Ok, sorry, I was assuming most were using the ./setup script from OP for how they were running this. I'll look to download and setup x64 and go from there with trying to change away from wine-any as well.Thanks.

Got this running with the command you provided but not seeing any difference from just running ./play.sh. HOT map I get between 13-20 fps, Queensdale I can sometimes jump to 30. None of the CPU cores are hitting above 50% so I don't think I'm limited there, yet? Any thoughts on what I can look to tweak to try and get it more fluid? Right now I have lots of waiting for textures etc. to load and then I can run about. If a decent group of people are around some will "pop up" as it slowly loads the area of characters. All settings are turned to lowest possible.

Link to comment
Share on other sites

@jbrother.1340 said:right now what concerns me is that running it like this I cannot access the trading post at all or the store. I get net error. If I load another way armor's script or lutris/playonlinux it will let it load but starting it via cli and the gallium setup I cannot? Any thoughts on that?

Can you please post the terminal log with Gallium? Even if there's a slight indication of the error, it might be enough to find the cause.

Link to comment
Share on other sites

@jbrother.1340

No, those flags are meant to enable the amdgpu kernel driver. Amdgpu and Radeon uses the same shader path for both opengl and gallium nine.Amdgpu has the ANV vulkan driver.

You should post logs printed on the console. The marketplace worked when I last remembered it.I do not feel like downloading the game and logging in anymore to test.

use stderr redirect to a file. Append this line to the gw2 console.

2> gw2_error.txt

Either way, gallium nine devs would probably ask you to run with full debug to figure out what is wrong.

@"VAHNeunzehnsechundsiebzig.3618"
D3d9 wine gentoo is gallium nine. You are using a native d3d9 driver on Linux. Of course, performance will be good.https://packages.gentoo.org/useflags/d3d9

Link to comment
Share on other sites

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

Please understand this is thread is not a debate about what and why. it is a thread to troubleshoot issues surrounding playing GW2 with Linux. Please start another thread if you want to have that discussion.

you will notice almost the entire thread and replies are dealing with troubleshooting or method of this.

It is totally ok you don't want to play it on linux. It is also totally ok that some of us do, no further explanation on either end is needed and at least in my case is not desired either.

Link to comment
Share on other sites

Testing out the installer, not getting some of the frame rates you guys are but its buttery smooth nonetheless. Definitely keeping an eye on this project. :open_mouth: I really want to switch back to linux full time.

Using a GTX 1060 and a intel i5, any ideas on why the frame rate hovers around 20 in aerodrome and lion's arch?

Link to comment
Share on other sites

@kalel.6129 said:

@"VAHNeunzehnsechundsiebzig.3618" said:

ehm, you have to install the game via wine setup.exe and then go to the games directory, where you enter the commandcd .wine/drive_c/Program Files/Guild\ Wars 2STAGING_SHARED_MEMORY=1 WINEDEBUG="-all" csmt_force=1 wine Gw2-64.exe -maploadinfo -dx9single

(the wine-any is for gentoo users who have installed wine-any-VERSION, gentoo lets you install douzends of wine versions in parallel).

Ok, sorry, I was assuming most were using the ./setup script from OP for how they were running this. I'll look to download and setup x64 and go from there with trying to change away from wine-any as well.Thanks.

Got this running with the command you provided but not seeing any difference from just running ./play.sh. HOT map I get between 13-20 fps, Queensdale I can sometimes jump to 30. None of the CPU cores are hitting above 50% so I don't think I'm limited there, yet? Any thoughts on what I can look to tweak to try and get it more fluid? Right now I have lots of waiting for textures etc. to load and then I can run about. If a decent group of people are around some will "pop up" as it slowly loads the area of characters. All settings are turned to lowest possible.

I've tried to go further with this but probably close to my "know how". I've tried through PlayOnLinux but can't even install GW2 - no screen pops up and just sits there showing a gray screen if I hover over it.I seem to get slower fps/worse performance when trying x64 client, with or without wine64. Running just the GW2.exe with wine64 grants slower loads and worse fps as well. I do find it odd that x86 will give me better performance than using the x64 client, thoughts? I see fromhttps://wiki.guildwars2.com/wiki/Guild_Wars_2_on_Wine they mention wine 3.3 and for CSMT or enable it manually - mine winecfg doesn't have a 'Staging' tab. So far with default setup from OP and turning settings lowest and not doing scale to DPI I'm getting pretty good results. Drop to maybe 16fps in LA and was jumping into 40s at times when gliding around in Maguma.

Do I need to look at updating wine or just be content with what I get and even though CPU isn't maxing, this is the best I can do with it on Linux? Quick Google was looking like WineHQ? Disabling certain features to enable others (if reg. wine is different than winehq) is not something I'm familiar on how to do.

Thanks.

Link to comment
Share on other sites

@loseridoit.2756 said:@jbrother.1340

No, those flags are meant to enable the amdgpu kernel driver. Amdgpu and Radeon uses the same shader path for both opengl and gallium nine.Amdgpu has the ANV vulkan driver.

You should post logs printed on the console. The marketplace worked when I last remembered it.I do not feel like downloading the game and logging in anymore to test.

use stderr redirect to a file. Append this line to the gw2 console.

2> gw2_error.txt

Either way, gallium nine devs would probably ask you to run with full debug to figure out what is wrong.

@"VAHNeunzehnsechundsiebzig.3618"

D3d9 wine gentoo is gallium nine. You are using a native d3d9 driver on Linux. Of course, performance will be good.https://packages.gentoo.org/useflags/d3d9

a) I know that.b) performance got better moving from mesa 18.1 and wine-3.9/wine-3.12

Link to comment
Share on other sites

@Rikou.4720 said:Testing out the installer, not getting some of the frame rates you guys are but its buttery smooth nonetheless. Definitely keeping an eye on this project. :open_mouth: I really want to switch back to linux full time.

Using a GTX 1060 and a intel i5, any ideas on why the frame rate hovers around 20 in aerodrome and lion's arch?

reduce model count and high quality model count.

Link to comment
Share on other sites

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

Link to comment
Share on other sites

@loseridoit.2756 said:

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

That and the occasional graphics card giving in to old age.As for sinister logic, I guess we'd all welcome it, if Anet ported GW2 to run natively on Linux. However, Anet may not have the time and manpower to port their client/engine using inhouse labour, nor the money and risk/reward expectation to let their client/engine be ported over by another company.Though I suspect their servers may already be running on linux, porting over all those graphical goodies from DirectX 9.0 to OpenGL is a lot of work. And Anet may not be willing to open up their codebase for a group of maintainers to port the client, because of trade secrets, that may inevitably be picked up by the competition.So for the time being, WINE is good enough to run Guild Wars 2 on Linux. It is not hyper-optimized, but I can enjoy dungeons, raids and any instanced content without issue, open world is generally fluid, only massive zergs with lots of effects á la prime time Palawadan get my FPS to noticeably slow down.

Link to comment
Share on other sites

@Castigator.3470 said:

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

That and the occasional graphics card giving in to old age.As for sinister logic, I guess we'd all welcome it, if Anet ported GW2 to run natively on Linux. However, Anet may not have the time and manpower to port their client/engine using inhouse labour, nor the money and risk/reward expectation to let their client/engine be ported over by another company.Though I suspect their servers may already be running on linux, porting over all those graphical goodies from DirectX 9.0 to OpenGL is a lot of work. And Anet may not be willing to open up their codebase for a group of maintainers to port the client, because of trade secrets, that may inevitably be picked up by the competition.So for the time being, WINE is good enough to run Guild Wars 2 on Linux. It is not hyper-optimized, but I can enjoy dungeons, raids and any instanced content without issue, open world is generally fluid, only massive zergs with lots of effects á la prime time Palawadan get my FPS to noticeably slow down.

anet doesnt even need to do a full port. All they have to do is wrap the client in wine and have a vulkan renderer. It would satisfy the majority of gamers.

Link to comment
Share on other sites

@"kalel.6129" said:https://wiki.guildwars2.com/wiki/Guild_Wars_2_on_Wine they mention wine 3.3 and for CSMT or enable it manually - mine winecfg doesn't have a 'Staging' tab. So far with default setup from OP and turning settings lowest and not doing scale to DPI I'm getting pretty good results. Drop to maybe 16fps in LA and was jumping into 40s at times when gliding around in Maguma.

Hi,Going by your description and the lack of the 'Staging' tab, it seems you're trying to launch GW2 using a different Wine version which would explain why the low performance. Also in my release I've set most of the performance switches on by default, I tried to make it as out of the box ready as possible, the only thing one needs to do is to have some of the 32bit libraries installed.

Link to comment
Share on other sites

@loseridoit.2756 said:anet doesnt even need to do a full port. All they have to do is wrap the client in wine and have a vulkan renderer. It would satisfy the majority of gamers.

I don't think they'll repeat the Mac's mistake, at first the Cider wrapper worked well so to speak, as the game got bigger and hungrier they were forced to make a native OpenGL port. They wouldn't want the same thing happening with Wine.

To keep it as pressure free as possible, I think a Vulkan renderer would be enough. The community will most likely handle the rest and I think Lutris is a good example of that.

@Castigator.3470 said:porting over all those graphical goodies from DirectX 9.0 to OpenGL is a lot of work.

They've already ported it to OpenGL, what do you think the native Mac client is running on? It is however not available on the Windows version :(

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:I don't think they'll repeat the Mac's mistake, at first the Cider wrapper worked well so to speak, as the game got bigger and hungrier they were forced to make a native OpenGL port. They wouldn't want the same thing happening with Wine.

To keep it as pressure free as possible, I think a Vulkan renderer would be enough. The community will most likely handle the rest and I think Lutris is a good example of that.

Transgaming is just terrible in general. Wine is great because Codeweavers can tap into one of the largest q/a communities around. Linux users are more willing to send stack traces to devs than other users.

@Castigator.3470 said:porting over all those graphical goodies from DirectX 9.0 to OpenGL is a lot of work.

They've already ported it to OpenGL, what do you think the native Mac client is running on? It is however not available on the Windows version :(

Apple's Opengl is terrible. Vulkan on top of Metal is much better.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:They've already ported it to OpenGL, what do you think the native Mac client is running on? It is however not available on the Windows version :(

They already did? Then what is stopping them from allowing their windows client to use OpenGL rendering mode? Or a hypothetical Linux client. As for Vulkan, it's a lower level(as in less abstraction) implementation, which can gain additional frames per second, but isn't it more work intensive to implement?Or maybe it isn't since DX9 is already pretty close to the wire, we may already have experts with Anet, who can work their way around the GPU and only get confused, when additional layers of abstraction are stacked on their habitat.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:

@"kalel.6129" said:
they mention wine 3.3 and for CSMT or enable it manually - mine winecfg doesn't have a 'Staging' tab. So far with default setup from OP and turning settings lowest and not doing scale to DPI I'm getting pretty good results. Drop to maybe 16fps in LA and was jumping into 40s at times when gliding around in Maguma.

Hi,Going by your description and the lack of the 'Staging' tab, it seems you're trying to launch GW2 using a different Wine version which would explain why the low performance. Also in my release I've set most of the performance switches on by default, I tried to make it as out of the box ready as possible, the only thing one needs to do is to have some of the 32bit libraries installed.

Ok. I was just trying to see if I could "up" the performance by running it a different way from what your script does. However, your script using 32-bit has been the best experience I've been able to get, so thank you! I haven't booted into Windows for weeks now as GW2 was my real only need for it.

Link to comment
Share on other sites

@"Rikou.4720" said:Hey ArmoredVehicle does your setup have the esync patches and stuff? Was reading here: https://www.reddit.com/r/linux_gaming/comments/9fko3n/guild_wars_2_with_winestaging_pba_esync_pure_love/ wondering how this differs from what you're using?

Hi,Unfortunately I'm unable (due to lack of skill) to merge the esync patches with PBA and Staging. The numbers on that reddit post is definitely much higher than my build, If he can provide me the pre-patched sources I can update my package to include esync.

Weekend is here so I'll have some time to play with it. Thanks for the link :-)

EDIT: I downloaded a pre-patched (esync+pba+staging) 3.15 source from the Lutris repo, I'll see if I can get a build up and running by tomorrow.


Update:

I have successfully replicated the OP's settings on that reddit post and the performance gains are indeed huge, in some situations it's almost double and it handles high details almost effortlessly. I've also monitored core usage on a Ryzen 1700X and the load is spread evenly across 8 threads, hopefully this will also help those on low end systems too.

I'm currently in the process of adapting all this into the new update. Expect new packages soon!!!

A huge thanks to reddit user felix100felix :-)

Link to comment
Share on other sites

I'm happy to announce that a new release is now ready for download.

No doubt the highlight of this update is the addition of esync which improves performance dramatically (again, thanks xylef), I've also cleaned up my scripts to be better understood for who wants to tinker with environment variables, and lastly I noticed some Mesa users mentioning the use of mesa_glthread, I added this in the form of a switch in the 'bin/user_run' file.

The full details can be found on the first page, I also tidied that up a bit.

Thank you everyone for the suggestions and comments :-)

@EagleDelta.4726 said:@ArmoredVehicle.2849 I'm getting a Network Error when attempting to download the latest update

I made a few minor last minute tweaks before posting, it should work now. Sorry about that :-)

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:I'm happy to announce that a new release is now ready for download.

No doubt the highlight of this update is the addition of esync which improves performance dramatically (again, thanks xylef), I've also cleaned up my scripts to be better understood for who wants to tinker with environment variables, and lastly I noticed some Mesa users mentioning the use of mesa_glthread, I added this in the form of a switch in the 'bin/user_run' file.

The full details can be found on the first page, I also tidied that up a bit.

Thank you everyone for the suggestions and comments :-)

@EagleDelta.4726 said:@ArmoredVehicle.2849 I'm getting a Network Error when attempting to download the latest update

I made a few minor last minute tweaks before posting, it should work now. Sorry about that :-)

Dumb question but how does one do the "update"? Is it merely re-downloading and running /.setup again or what all do I need to do? Sorry for such a dumb question.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...