Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
The Witcher 3 in Wine
Page: «36/178»
  Go to:
beko Nov 1, 2017
I fiddled now _a lot_ with this. Tried various nvidia-settings. Run it's own X without any windowmanager. Fullscreen or window mode. Various STAGING or __GL env variables. CPU governor to GPU PowerMizer. Almost nothing squeezed much more FPS out. Even changing the display resolution way down does not help much.

It looks like the FPS are all in the bushes. No really. What helps the most is setting GrassDistanceScale, FoliageDistanceScale and FoliageShadowDistanceScale in my user.settings to almost not existing. Everything else - like setting shadows to minimum, or textures to very low, squeezes mayhap 1 or 2 fps out of it.

GrassDistanceScale=0.01
FoliageDistanceScale=0.01
FoliageShadowDistanceScale=0.1


A real goldmine is https://www.geforce.com/whats-new/guides/the-witcher-3-wild-hunt-graphics-performance-and-tweaking-guide#config-file-tweaks for this. It helps understanding most of the options.

So I guess I finally found my settings that give me ~15 to 18 fps in a crowded place while it's raining and ~25 to 30 fps (max, locked) on a sunny day in the 'woods'. Trees and grass looks like shit but almost everything else can be amped while the game stays responsive to user input :) I guess a faster CPU would help me a lot more.

[users-only]



I made a short video doodle to demonstrate. Please notice that I had to lower the resolution from 1920x1200 to 1024x768 to record with OBS Studio without to many frame drops. OBS is heavy on the CPU, like Wine, and that kills pretty much any FPS gain again :( It's also responsible for the regular stutter you'll see. These do not happen when OBS is not recording.

View video on youtube.com
(Low grass starts at 1:55)
[/users-only]
Shmerl Nov 1, 2017
Quoting: bekoI guess a faster CPU would help me a lot more.

How many cores do you have?

UPDATE: Ah, I checked your profile - it is Sandy Bridge. That can be indeed a problem.
Ehvis Nov 1, 2017
Quoting: Shmerl
Quoting: bekoI guess a faster CPU would help me a lot more.

How many cores do you have?

UPDATE: Ah, I checked your profile - it is Sandy Bridge. That can be indeed a problem.

A faster CPU always helps, but I doubt it solves the problem. I don't expect TW3 to use more than 4 cores and for single core performance a 2600K is still pretty good as well. Has anybody given results with hybrid setups (Ryzen + GTX or i7 + RX)? Anyway, there does appear to be a big bottle neck somewhere. Figuring out what's going on should make for an interesting bit of research.
beko Nov 1, 2017
Hej, me again.
While looking for a bottle neck I moved the game to my SSD just to make sure. Turns out this helped wonders for the crackling sound during the loading screens (the parallax effect animations). Why this affects cracking audio in some loading sequences is beyond me though.

I read a lot today again and learned that my black floor texture is already fixed. I just had to remove the DWORD Direct3D/MaxVersionGL from Wine registry. Sweet. Looks so much better but my FPS dropped again due to new textures o0

Next I used the tool nvidia-smi to check on my GPU Utilisation. It's between 40-50% when TW3 is running. Plents of mem free. So as I guessed: GPU starvation.

[users-only]
So next I did something I dislike due to lack of real knowhow. I've a CPU with unlocked multiplier. Means I can basically choose it's clock signal at will. Also my board features this. I virtually never needed this but it seemed important to me during purchase back then that I'd have the possibility to burn it to crisp as it pleases me.

My CPU is usually really cool at ~40°C. Raising it to 4.2G (just clock multipler, no voltage manipulation) makes it scratch at 64°C which I still consider fine (Tcase is 72.6°C for this model).

Well FPS are still ~20 in crowded areas but this looks _way more nice_ compared to yesterday and it 'feels' better. The keyboard input sure improved a lot and the FPS don't break down that heavy any more.


[/users-only]
Shmerl Nov 2, 2017
Quoting: EhvisHas anybody given results with hybrid setups (Ryzen + GTX or i7 + RX)?

Yes, I tested it with same RX 480 and i7 (4 core / 8 threads, Haswell generation). Still around same 40 fps, except CPU is obviously more used than on 8 core / 16 threads Ryzen.
Koopacabras Nov 2, 2017
runs OK for me on Rx460 Ryzen 1600. But I'll wait till they fix those few remaining rendering bugs. Black walls, etc.
mrdeathjr Nov 2, 2017
Quoting: bekoHej, me again.

While looking for a bottle neck I moved the game to my SSD just to make sure. Turns out this helped wonders for the crackling sound during the loading screens (the parallax effect animations).

Why this affects cracking audio in some loading sequences is beyond me though.

I read a lot today again and learned that my black floor texture is already fixed. I just had to remove the DWORD Direct3D/MaxVersionGL from Wine registry.

Sweet. Looks so much better but my FPS dropped again due to new textures o0

Next I used the tool nvidia-smi to check on my GPU Utilisation. It's between 40-50% when TW3 is running.

Plents of mem free. So as I guessed: GPU starvation.

[users-only]
So next I did something I dislike due to lack of real knowhow.

I've a CPU with unlocked multiplier.

Means I can basically choose it's clock signal at will.

Also my board features this.

I virtually never needed this but it seemed important to me during purchase back then that I'd have the possibility to burn it to crisp as it pleases me.

My CPU is usually really cool at ~40°C.

Raising it to 4.2G (just clock multipler, no voltage manipulation) makes it scratch at 64°C which I still consider fine (Tcase is 72.6°C for this model).

Well FPS are still ~20 in crowded areas but this looks _way more nice_ compared to yesterday and it 'feels' better.

The keyboard input sure improved a lot and the FPS don't break down that heavy any more.


[/users-only]

Very detailed you information however needs more powerfull single thread cpu (ryzen have too low single thread*)

*Ryzen overclocked have similar single thread (around 160 points) than my pentium G3258 (since 2014) at 4.1Ghz: 152 points in cinebench R15 single thread

For disgrace wine use higher frecuency and especially high use of first cores: 0-1 (is recommended when use wine send all tasks to other cores: taskset c 1 for example)

However appears some exceptions case truck racer, far cry 3, far cry 3 blood dragon: this titles use core 1 with high demand

As your said higher frecuency when higher ipc can be help in your case, core i7 8600K at 5.0ghz or more** will be usefull in wine dont for core quantity but more for frecuency and high ipc

**This will be stay around 30 to 40% more single performance than ryzen overclocked

Without forget use 720p resolution and lower more powerfull cpu is needed (ryzen fall too much in 720p resolution and lower)

This is some examples at 720p:







Remember this i7 8600K stay at 4.8ghz if you have delid can pass easily 5.0ghz

^_^
Shmerl Nov 3, 2017
Quoting: mrdeathjrVery detailed you information however needs more powerfull single thread cpu (ryzen have too low single thread*)

*Ryzen overclocked have similar single thread (around 160 points) than my pentium G3258 (since 2014) at 4.1Ghz: 152 points in cinebench R15 single thread

I think @beko has Sandy Bridge, not Ryzen.
mrdeathjr Nov 3, 2017
Quoting: Shmerl
Quoting: mrdeathjrVery detailed you information however needs more powerfull single thread cpu (ryzen have too low single thread*)

*Ryzen overclocked have similar single thread (around 160 points) than my pentium G3258 (since 2014) at 4.1Ghz: 152 points in cinebench R15 single thread

I think @beko has Sandy Bridge, not Ryzen.

Ryzen is for give a idea about single thread wine issue* but 2600K is more slow than ryzen

*Hopefully some day wine use more cores than frecuency but in close future frecuency and higher ipc still needed :(

^_^
andda715 Nov 3, 2017
Hi,

I posted a bit back, but to refresh I have a Ryzen 7 @3.8GHz and yes it is slower than a stock 8600K/8700K in single core performance.

The weird thing though is that I get consistent ~18-20fps on a GTX 1080 without even having a single CPU core at 100% utilization consistently. It jumps around a lot, looking like stuff is being rescheduled somehow? This is the same with 720p or 1080p, fps not affected at all.
I.e. the game is trying to use more than one thread but something is blocking it on a global level.
To me it doesn't make sense any other way why the scheduler would reschedule a task that is running 100% all the time?

Just feels like, my noob gut feeling, there are some global locks/semaphores somewhere in the wine/nvidia code path somehow? I.e. lots of threads waiting/spin-locking somewhere doing nothing productive (neither CPU nor GPU)?

Again, just a pure guess without having any information on the code in question. :)

I am happy to help out when time permits if you want me to run tests etc?
(away next week though, so after that)

EDIT: using wine-stagin 2.19, console spammed with "fixme:d3d:wined3d_buffer_create Ignoring access flags (pool)."

Thanks,
Anders

More logs:
Spoiler, click me
ixme:d3d_shader:shader_glsl_handle_instruction Backend can't handle opcode dcl_input_ps_siv.
fixme:d3d_shader:shader_glsl_handle_instruction Backend can't handle opcode dcl_input_ps_sgv.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x80000202.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x800000c2.
fixme:d3d_shader:shader_sm4_read_instruction_modifier Unhandled modifier 0x00155543.
fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #944:
fixme:d3d_shader:print_glsl_info_log Vertex info
fixme:d3d_shader:print_glsl_info_log -----------
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[5].w" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[6].w" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[8]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[9]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[10]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[11]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[12]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[13]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[14]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[15]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[16]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[17]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[18]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[19]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[20]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[21]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[22]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[23]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[24]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[25]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[26]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[27]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[28]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[29]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[30]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(23) : warning C7050: "vs_out[31]" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log
fixme:d3d_shader:print_glsl_info_log Fragment info
fixme:d3d_shader:print_glsl_info_log -------------
fixme:d3d_shader:print_glsl_info_log 0(87) : warning C7050: "ps_in[8].yzw" might be used before being initialized
fixme:d3d_shader:print_glsl_info_log 0(41) : warning C7050: "R0.w" might be used before being initialized
<snip>
fixme:module:load_dll Loader redirect from L"wined3d.dll" to L"wined3d-csmt.dll"
err:winediag:wined3d_dll_init Setting maximum allowed wined3d GL version to 4.24576.

While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.