felixdoerre / primus_vk

Vulkan GPU-offloading layer
BSD 2-Clause "Simplified" License
229 stars 17 forks source link

Problem with spaces in path to programms exectuable #46

Closed felikskiszkurno closed 5 years ago

felikskiszkurno commented 5 years ago

Hi, I have approached a problem running Steam games on Fedora 30 with Bumblebee and primus_vk (from Fedora COPR repo: "primus-vk-rpm" by leonmaxx). The only games that primus_vk can run are the ones whose path to the executable does not contain any empty spaces. Two code blocks below illustrate this issue:

[felikssartorius@localhost ~]$ optirun pvkrun '/home/felikssartorius/.local/share/Steam/steamapps/common/Tomb Raider/TombRaider.sh' [ 6139.275634] [ERROR]Error running "/home/felikssartorius/.local/share/Steam/steamapps/common/Tomb": No such file or directory

[felikssartorius@localhost ~]$ pvkrun '/home/felikssartorius/.local/share/Steam/steamapps/common/Tomb Raider/TombRaider.sh' [ 6186.931124] [ERROR]Error running "/home/felikssartorius/.local/share/Steam/steamapps/common/Tomb": No such file or directory Full and correct path to executable: '/home/felikssartorius/.local/share/Steam/steamapps/common/Tomb Raider/TombRaider.sh'

Running another game with path free of any spaces works flawlessly. Tested with the game Monstrum with path:

''/home/felikssartorius/.local/share/Steam/steamapps/common/Monstrum/Monstrum.x86_64''

As far as I know, Steam doesn't allow customization of the folder names within its "common" directory. I have tried modifying it manually. After changing folder and executable name to TombRaider, pvkrun, the command runs without any error, Steam started to download the game again instead of starting it.

Another solutions that I have tried were enclosing the path with double-quotes instead of single ones and escape the space character in path with backslash, but result was still the same.

My setup: OS: Fedora 30 PC: ThinkPad W541 GPU: Nvidia Quadro K1100M

Bumblebee works correctly with pvkrun. Tested with: optirun pvkrun glxspheres64 output:

[felikssartorius@localhost ~]$ optirun pvkrun glxspheres64 Polygons in scene: 62464 (61 spheres * 1024 polys/spheres) Visual ID of window: 0x24 Context is Direct OpenGL Renderer: Quadro K1100M/PCIe/SSE2 319.761454 frames/sec - 356.853783 Mpixels/sec

Output of lspci command: 00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller]) Memory at b2a3d000 (32-bit, non-prefetchable) [size=4K] 01:00.0 VGA compatible controller: NVIDIA Corporation GK107GLM [Quadro K1100M] (rev a1) (prog-if 00 [VGA controller]) Please let me know if I missed any information that might be important.

felixdoerre commented 5 years ago

Yes, that's a problem with that package. You can see that $@ is not quoted: https://github.com/leonmaxx/primus-vk-rpm/blob/master/pvkrun The pvkrun contained in this repository ( https://github.com/felixdoerre/primus_vk/blob/master/pvkrun.in.sh ) has such quotes and can run paths with spaces flawlessly.

@leonmaxx can you correct this problem?

Additionally the official arch-packages should not have such a problem, as is copies pvkrun directly from this repository: https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/primus_vk#n30 So if you can install this primus_vk package it should fix the problem for you.

leonmaxx commented 5 years ago

@felikssartorius @felixdoerre Thanks, fixed. Fixed package just built, please update.

felixdoerre commented 5 years ago

Thanks @leonmaxx. So @felikssartorius is the issue is solved then?

felikskiszkurno commented 5 years ago

Yes, now everything works correctly. Thank you!