Visual Studio Code, how to disable the GPU
Important I don’t do this anymore as I use an RX580 on my Hackintosh. It’s possible that things have changed enough that this technique doesn’t work anymore. I also switched to VSCodium.
A while back, I dumped Sublime in favor of Visual Studio Code.
Sadly, Electron has a problem with some GPU like the one in my old MBP mid-2011, or the one in my Mac Mini 2012, causing the editor to be excessively unresponsive. I also have the same sluggishness on a “Hackintosh” using a GTX 1070 (using Nvidia’s Web Driver).
The best way I could describe this is it's like playing a game at 1 or 2 FPS.
Update: it seems to be caused by using a complex color profile, like those made using DisplayCAL. Falling back to a simple profile “fixes” the problem.
Simple “fix”
A basic fix is to launch VSCode in a shell with the --disable-gpu
argument:
$ code --disable-gpu
or, using Finder,
$ open -a 'Visual Studio Code.app' --args --disable-gpu
But this quickly becomes irritating.
It is possible to replace the executable inside the application with a shell script, and direct Finder to launch that instead. However this breaks the “Open With” contextual menu, and draging a file onto the Dock's icon doesn’t work anymore.
A better fix
I prefer to launch things with Alfred most of the time.
Since there's no preference to make this option permanent, the next best thing is to call app.disableHardwareAcceleration()
.
We add this in the file /Applications/Visual Studio Code.app/Contents/Resources/app/out/main.js
.
Find app.once("ready",
, find the semi-colon (“;“) just before that, then add app.disableHardwareAcceleration();
, producing something like this:
…rDefinedLocale();app.disableHardwareAcceleration();userDefinedLocale.then(e=>{
e&&!nlsConfiguration&&(nlsConfiguration=getNLSConfiguration(e))}),app.once("ready",func…
Once this is done, hardware “acceleration” should be permanently disabled.
In vim, if this makes things clearer :
/app.once
+ enterF;aapp.disableHardwareAcceleration();
+ esc- save (
ZZ
, or:wq
)