-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WoW under Wine support and performance #6
Comments
Got it working by commenting return near
But something wrong with performance: 10 FPS in WoW through primus_vk, 20 FPS with vulkan/intel, 60 FPS via nvidia-xrun/vulkan Same look in vulkansmoke: 199 presents in 5.0151 seconds (FPS: 39.6801) <- ENABLE_PRIMUS_LAYER=1 optirun vulkan-smoketest 1119 presents in 5.00325 seconds (FPS: 223.655) <- vulkan-smoketest # with Intel card |
Hi, thanks for testing and providing feedback! That vulkan-smoketest runs with approx 40 fps is not surprising. On my hardware this seems to be the copying-bottleneck caused by the methods I use for copying the image. WoW seems to create two Vulkan (i.e. DX) instances. I looked at the code and saw, that it does not correctly free the state on VkDestroy instance. That is now corrected in the current master, so primus-vk could start WoW without removing the error-check (could you try that?). The global book-keeping variables can't cope with two instances valid at the same time. The trick for wine mentioned in README.md is obsolete as of 74e49ce. Additionally the LD_PRELOAD that you use should also workaround this issue, so no real need to investigate there further. As to why the frame rate for WoW is lower than 30/40 FPS:
Can you post a few of those numbers? |
First of all thank you for your reply I've tested primus_vk from master branch with WoW — it's still does not run properly with same error message so I still have to comment out the indicated check Trace profiling:
Framerate in WoW now stable 18 FPS even in high or minimal gfx preset. |
ok, so it takes approx 40ms to present the frame (including 30ms for copying it from the nvidia-gpu) 18FPS are 55ms per frame, so there are 15ms per frame where the control flow is not in The pasted debug log indicates that the So WoW would clearly benefit from running the image-copy in a separate thread. I will try to find time and implement this, so we can test, if that can really bring the theoretical performance improvement. Generally I am not sure how to get the copy-overhead down (and thereby reach frame rates > 30FPS). I described to vague approaches in issues #1 and #2, but i am not sure what they individually will benefit, and what performance gain is theoretically possible there. So I will need time to experiment there. I've seen that the image copy times are highly dependent on the image size. What's your resolution? FullHD or more? That the 18 FPS are stable even in high or minimal settings clearly show that it's the copying that takes its time. So I'm sorry that I don't have a quick solution for you. I'll try to implement parallelism next as I have a strategy for that and it's likely to yield improvements. I'll notify you here when I have code ready for you to try out. |
Resolution is approx. 1600x1050
Absolutely no problem! By the way thank you for your great work! |
Hi, I just pushed a few commits to master that could improve the framerate. Could you update (comment out the return near |
Hello! |
Great. So I guess that makes your games playable? |
Yes, now it works with WoW without any modifications. By the way thank you for your job, at least now we can launch vulkan applications on the optimus laptops and maybe in future performance will be the same as with nvidia-xrun:) |
I think it will be tricky to get far over that framerate as that time is mostly spent in copying. However I would expect, that a graphics setting, that causes the game to run with approx. 27 FPS with So generally speaking I would expect the performance to be similar to Could you try that? To get framerate higher that 30FPS I am dependent on functionality that vulkan offers, but yes 😄 maybe/hopefully I stumble across features, that allow primus_vk providing higher framerates. However there is still much experimenting to do. |
I've got another thing to try out for you: I have pushed a few commits to master that allow PrimusVK to use mulitple threads for copying image data. This is deactivated by default and can be activated by setting the environment variable |
I tested this in GTAV and got pretty impressive frame rates (40-50) but also some of the worst screen tearing I've ever seen. Great progress though. :) |
I seem to have missed one part of a required synchronization point. Strangely I cannot observer the screen tearing with any application I am testing with. So the problem could be solved now. Could you please update to current master and retry? |
The tearing is solved now but the framerate has dropped significantly. Most of the time the framerate stays steady at 28-30 fps but occasionally drops as low as 18. Still an improvement over the single threaded version though! |
Hi, I think we need another round of profiling, to see what exactly makes the framerate drop. I just added a different kind of profiling-output. Could you update, enable that profiling (i.e. comment in Thanks for debugging this issue with me. |
Something about my system must have changed because I can no longer get GTA running at all. I'll try to figure it out when I have some time and I'll grab those logs for you. Thanks! |
Hello! Just tested WoW with latest code from master with PRIMUS_VK_MULTITHREADING=1 and got 60FPS at High settings in World of Warcraft. Wow! |
Tested a bit more, yes, now it's playable, but with frame drops to 20-30 FPS sometimes. |
Hello again!
|
This log looks similar to my WoT issue. Can you please when it shows black screen type in terminal: |
No, it does not show [defunct], but window does not responding. |
fixed by forcing windows version to Win7 |
Happy you, doesn't work for me. |
Is there anything left, that primus_vk can do here, or can we close the issue? |
Once I patch the source code to build the 32-bit of this wonderful software to play Assassin's Creed III on Steam with DXVK, I also notice that the framerate only improve with the following variable: On 64-bit programs, there's no need to use such workaround, and even can degrade framerate instead. Along the standard pvkrun to workaround the two default settings. |
|
Thank you for this software @felixdoerre |
I think anything for this issue is done for now. So I'll close it. |
Hello, dear felixdoerre!
In your README.md you said that you have to "locally patch wine to correct load libGL.so
Can you, please, explain, how to do it? Thank you!
Now my game launch log looks like this:
The text was updated successfully, but these errors were encountered: