mayankk2308 / set-egpu

Display-agnostic acceleration of macOS applications using external GPUs.
MIT License
480 stars 42 forks source link

How about apps not in LaunchPad? #1

Closed Zodiase closed 6 years ago

Zodiase commented 6 years ago

StarCraft II, launched through Battle.net, for example, doesn't seem to be using the eGPU at all, after running the script and "Set eGPU Preference for All Applications".

Macbook Pro 2017 with TouchBar, macOS High Serra 10.13.5, AMD Radeon RX Vega 64

Does it matter if eGPU has a connected display? Also does it matter which display is set as the main? (I ask because Parallels Desktop prompts me to set the display that is connected to eGPU as the main one.)

mayankk2308 commented 6 years ago

If the preference for an application is set correctly, then the setting should be display-agnostic. However, some users have reported that sometimes games won't use the eGPU. Additionally, some games only work if there is a display attached to the GPU (no need for it to be the main display, just be present - can be a headless HDMI - no mirroring required).

I will investigate the issue with applications installed by clients like Battle.net and Steam soon. In the meantime, you could try setting the preference manually (Option 2). The basis of the script is that it finds the config plist of the apps using a simple trick:

osascript -e 'id of app "<app_name>"'

If the game, in this case "StarCraft II", returns an output for this command, then manually setting it will change its preference for sure - whether it responsibly adheres to the preference is unknown.

Additionally, searching the entire system for applications (Option 1) is somewhat infeasible given the amount of time it may take on some systems. So a better approach might to address these clients directly in the script.

If you already have an external display attached to your eGPU, the optimal configuration is to keep your external display as the main display (no mirroring of course). In such a case, some apps may automatically use eGPU if launched on the main display.

Zodiase commented 6 years ago

osascript -e 'id of app "StarCraft II"' returns net.battle.bootstrapper, which I guess does not help detecting the game...

On the other hand, the game I want this to work the most, EVE Online, the launcher of which spawns a Wine container. osascript -e 'id of app "wine"' doesn't work at all. :(

Zodiase commented 6 years ago

FYI, now I'm trying out games from Steam, osascript -e 'id of app "Besiege"' returns unity.Spiderling Games.Besiege. But the script still says Target application does not exist.

mayankk2308 commented 6 years ago

Thank you for the report. I will attempt making refinements to the script soon.

mayankk2308 commented 6 years ago

v1.1.0 should resolve issues with Steam applications (pref should be set correctly at least). Applications that don't expose their correct config plist will be investigated later. Apps must be updated to use eGPUs on dev-end. This is only a stopgap measure.