World of Warcraft in Linux/Wine on Intel GMA

BIG FAT WARNING

As of 8/29/2017, no offical release versions of Wine will run World of Warcraft 7.3 as the new DRM (yes, Digital Rights Management) that was used in Overwatch is now used in WoW. You will need to either wait for a new version of Wine that supports it (will be post wine-2.15) or grab one from a git repository. As this is out of the scope of this document, I will not add instructions here.

Intel Graphics may not be the fastest graphics subsystem around with its shared system memory, but can be fast enough to run World of Warcraft in Wine.

For the most part, Wine will work on Intel graphics chipsets/processor graphics without much fuss on modern distributions. Note that a new feature, D3D9 in MESA, is now available. I have yet to test whether or not this actually works to speed up World of Warcraft. Right now I'm just using emulation from D3D9 to OpenGL, renderred through MESA.

Last updated August 29, 2017 (Latest is Legion, 7.3.0)

NOTE: I have found that Mists of Pandaria has broken some chipsets. This is consistent with Blizzard dropping support for these devices, quite possibly due to dropping OpenGL 1.x support. All I know now is that it crashes in the driver, but not sure what beyond that. The 5.0/5.1 change was very suspicious as 5.0 had serious drawing issues in OpenGL mode.

5.1 fixed these issues allowing Linux to be playable once more. With the release of Mists of Pandaria: Thunder King patch 5.2, I somehow was able to run WoW on my OpenGL1 machine again. Though many things could have changed, this is interesting...

With the release of Warlords of Draenor, a new round of testing is needed. Note that WoW now will happily eat 1GB of RAM and if you have less than this, running World of Warcraft may be futile. You should try to run as lean of a system as possible if you only have 1GB RAM.

Also I've found that Direct3D 9 mode sometimes works better on Intel HD graphics for some reason. OpenGL mode tends to do drawing artifacts but D3D, though marginally slower, draws very well. Make sure you try both. Not to mention that more drawing features are enabled! Note: Sunshafts and SSAO slow down graphics immensely on my HD3000.

This is a list of Intel graphics machines I've thought about/currently running WoW on.
ChipClassOpenGLStatus
i830M (GW Solo 5350)830MG1.3Too Slow/Untested, assumed fail due to i865G
i865G865G1.3FAIL WoD 6.1 ("Your 3D accelerator is not supported")
i915G (HP Pavilion DV4000)915G1.4Stopped Working MoP 5.0, Works MoP 5.3
i945GM (Asus eeePC 900A)945GM1.4Stopped Working MoP 5.1, but worked in MoP 5.2 - 5.4.2 (needs special config to make it draw faster) - this is still really slow and likely not good enough for even WoW-Pokemon. Needs Wine 1.4.1?
G31 (Gigabyte G31)GMA 31001.4I never got working but should theoretically work due to similar class working. Failure mode is getting Agent.exe working :(
i965G (Foxconn G9657MA)GMA X30002.1Works in Legion 7.1, slow (around 3-5fps). It reports DX10 shader emulation is missing like the GMA4500, but nevertheless runs. Note that Launcher/B.net client reports that it can tell it's a G965 and warns the user that it's not supported.
Q45 (Intel DQ45CB)GMA 45002.1Works in WoD 6.1.2/Wine 1.7.19-r1 - very slow in D3D, must turn off most options to be usable
FAIL Legion 7.0.3/Wine 1.8.2 - Q45 backend does not support DX10 shader emulation
i7-2700k (Gigabyte Z68AP)HD30003.1works MoP 5.4.2
i5-3317u (HP Envy4t Z77)HD40003.1works Legion 7.2.5/Wine 2.0

***** Working Legion 7.3/Wine-2.15-git-gamax92 with DX11 *****

Pentium 4 + Radeon X800XLATI Radeon X800 XL OSS?Loads in WoD 6.1/Wine 1.6 runs but crashes (likely due to bad hardware)
Pentium 4 + nVidia G210nVidia G210 OSS?Loads in WoD 6.1/Wine 1.6 runs but crashes (likely due to bad hardware)
Core i7 + ATI RadeonHD 5770 (1GB)fglrx?mostly working Legion 7.1.0+Opening Cinematic/Wine 1.9 - frequently spams "out of adapter memory"
OSS radeonhd4.2mostly working Legion 7.2.5/Wine 2.0

***** Working Legion 7.3/Wine-2.15-git-gamax92 with DX11 *****

These are the hints I've collected to get this working. I use Gentoo Linux but trying to make this as generic as possible. My system for reference is now an Intel Core i5-3317U Ultrabook with 4GB RAM. This uses the HD4000 on chip GPU. I occasionally will test with the Q45 (Intel DQ45CB motherboard). A list of Intel GPUs is available on Wikipedia so you can tell which ones have software/hardware vertex shaders.

Kernel and System Configuration

First step, not to go into too much detail here, is to get Direct Renderring enabled for your hardware. There are multiple issues:
  • Selecting AGP support as well as GART (Graphics Aperature Relocation Table) support in your kernel (CONFIG_AGP, CONFIG_AGP_INTEL). I doubt, at least for now, anyone has Intel GMA on a non-Intel chipset :-) Note if you have PCIe you may still need this, not sure if this was "fixed".
  • Selecting DRM (Direct Renderring Manager) for Intel graphics (typically, i915 & later - CONFIG_DRM_I915) in kernel
  • Recent versions of the Intel Xorg driver requires Kernel ModeSetting (KMS) to be enabled. Either enable it by default with the kernel compile time option, or add i915.modeset=1 to your bootoader. Enjoy your high res text mode and penguins if you also have the kernel settings enabled!
  • Making sure your xorg.conf is using Direct Renderring:
  • After setting these up, make sure when you type "glxinfo|grep render" it says 'direct rendering: Yes' and has an OpenGL renderer string that's not "software". Try some basic X11 programs, the good preliminary tests to make sure your graphics subsytem is working are from the xscreensaver package. The screen saver module locations vary from distribution to distribution - for Gentoo they're in /usr/lib/misc/xscreensaver and SuSE in /usr/X11R6/lib/xscreensaver .
    Try running

    sproingies -geometry 1024x768 -delay 0 -fps

    and check your frames per second. You'll need at least 150-160 with this to start with the next steps, and glxgears should exceed 1000 to get good results (note: if it says it's synchronizing to vertical refresh, that number doesn't count).

    For reference, my G965 gets about 185fps on Sproingies and 1587fps on glxgears. The more important number is the Sproingies score, as it tests your system more. You may also try TuxRacer or some other Linux native game to test your system out.

    (My Pentium3-Mobile and Intel i830 "Extreme Graphics" CGC gets a paltry 30fps on Sproingies despite using hardware acceleration, which is much too slow for WoW.)

    Wine

    After your system has Direct Renderring set up, now wine needs to be installed/configured. If it comes with your distribution, this should be all ready for you. Check which version of Wine you have, most likely you'll need a fairly late version; 1.2.3 does not have the correct driver mapping for Intel chipsets, 1.3.23 has it, maybe some earlier versions too. Note that WoW will run under the stable Wine 1.2 versions for ATI and nVidia chipsets with their respective closed-source drivers.

    I have recently discoverred somewhere between Wine 1.4.1 and 1.6 (in Gentoo) the detection system of the graphics subsystem changed and no longer will run on the i945GM. Wine-1.6 does work on the ATI/FGLRX RadeonHD 5770 and the Intel HD 4000, though.

    OpenGL Text vertex handling does not work correctly on the GMA in WoW (as witnessed by really screwed up lines dealing with text, or by completely missing text) so you'll need to disable vertex bufferring. In the Wine user registry, a key:

    [Software\\Wine\\OpenGL]
    "DisabledExtensions"="GL_ARB_vertex_buffer_object"

    will need to be added.

    The text handling has been fixed (actually, shader issue) and the driver will fall back to CPU renderring, and thus write text properly now.

    Wine 1.3.32 seems to correctly autoconfigure WoW but crashes upon enterring the game. Apparently it was rootcaused to Intel MESA omitting patent encumbered code that's distributed separately in libtxc_dxtn (x11-libs/libtxc_dxtn for Gentoo), which deals with compressed texture maps. Darn you S3.

    I've also noted that sometimes Wine eats up all your video memory and ends up reporting "err:d3d:resource_init Out of adapter memory". You can create a registry entry:
    HKEY_CURRENT_USER//Software//Wine//VideoMemorySize
    with the value of how many MB video RAM Wine should tell applications to use. Setting this value lower than your physical video memory alleviates the out of memory issue. I don't think this should be an issue with Intel chipset graphics as it can always steal more...

    Install

    TBD. I basically copied a working install tree from a Windows system to make things easier, and not only that - no disks to swap to get to Pandaria.

    Configuring World of Warcraft

    In your WTF/Config.wtf you'll may need to add these:

    SET UIFaster "2"
    SET UseVertexShaders "0"
    SET M2UseShaders "0"
    
    The UIFaster option will fix the icon drawing issue, and disabling the shaders will allow things to actually draw correctly for the most part. One side effect I see is that the textures drawn on the ground tend to show their wireframe lines, a bit ugly but heck I have no problem with them - it works!

    Wine and the new version of the Intel driver works with the vertex shaders properly now, dropping back to CPU renderring if there is no hardware support.

    Running World of Warcraft

    I found that both OpenGL and Direct3D work to an extent. OpenGL used to have the white minimap while indoors issue as its main problem, shared with the ATI FGLRX issues. However this has been fixed in recent versions of the Intel driver, and the minimap should show up fine in modern distributions of Mesa.

    Peer to Peer distribition seems to NOT work as of Cataclysm-4.3. Launcher.exe will crash trying to download new bits.
    Seems that Launcher for Pandaria-5.2 seems to be able to p2p now in Wine. You may no longer need to disable p2p with:

    $ wine reg add "HKCU\Software\Blizzard Entertainment\Blizzard Downloader" /v "Disable Peer-to-Peer" /t REG_DWORD /d "1" /f 
    
    if needed. Please tell Blizzard to fix this for Wine... or Wine needs to emulate Windows behavior somehow.

    Wine-1.3.23 has been tested to work with x86-64 Linux/Wine/WoW. Both the 64- and 32-bit WoW binaries seem to work as long as your Wine is compiled with the right support.

    I have had problems with Agent.exe/launcher/patcher. I think Mists of Pandaria 5.2 seems to have solved some of them - it patched on my 32-bit install just fine for once.

    Launcher working on Intel HD4000: Well just wanted to make it clear, it seems that Intel graphics makes Launcher puke despite WoW itself works fine. You'll see a distorted launcher screen where it seems like it was cut and sheared. From what I've seen and tested, setting libGL to use software rendering is a workaround. Unfortunately if you subsequently click on the "PLAY" button, it will launch WoW with software rendering, which gives much less than desirable results. However it will at least let Launcher work to patch your installation.
    LIBGL_ALWAYS_SOFTWARE=1 wine "World of Warcraft Launcher.exe"
    Remember not to run WoW by pressing PLAY, quit out of the launcher and run WoW.exe manually.

    I was gettting around 7-8fps on my G965 pointing towards Shattrath Lower City with most options turned down, 1280x720 mode (it's my HTPC), and most other cities it's around the 20 fps range. For the most part I can do at least some stuff with it...

    Screenshots
    (old)Gentoo/fvwm2/Core2 Duo E6700/G965 Intel Graphics
    Gentoo/Gnome/Core2 Duo E6700 (2.66GHz, 64-bit running 64-bit client)/G965 Intel Graphics
    Gentoo/Gnome/Cataclysm Starter Account/Core2 Duo E6700/G965 Intel Graphics
    Gentoo/Gnome/Core-i7 2700K (at 4.1GHz, 32-bit PAE) HD3000 Intel Graphics + Z68 chipset This is a recent screen shot of my desktop/compute farm machine running WoW.
    Gentoo/Gnome/Atom N270 + 945GM chipset WoW on my Asus eeePC 900A, no sh*t, 30FPS? Lies!

    Files
    Sample config.wtf Used on my eeePC 900A (945G) netbook to make it somewhat useable. I used it to get 5.2 working, it at least let me login to Sunsong Ranch. Looking out the hut I only get 4 FPS, looking indoors of the hut, it gets to 8FPS or so. I didn't test it much other than the pleasant surprise it didn't instant-crash as 5.1 did.

    Hints, tips, and tricks:
    DO NOT use the Recount or Skada addons if you want to raid or want more frames per second. Both of these really slow down WoW in both Windows and especially Linux Wine. It's actually playable with Recount disabled for 40-man raids. With Recount, on my RadeonHD 5770 the frames per second can drop down to less than 1 frame... Skada seems a bit better but still slow.

    If you have more than 3GB RAM and have a 64-bit CPU, please use 64-bit Linux if you can. The 64-bit client and 64-bit Wine appear to work fine and is a good bit faster than running 32-bit PAE (so you can access all 4GB+ RAM) though both work. If you only have 2GB, highmem does not degrade performance that much and is fine. Also, when running 64-bit, there's no 32-bit memory worries to deal with - I constantly go OOM when running 32-bit. And my mana is just fine...


    On my quest to remove Microsoft Windows from my machines, World of Warcraft has been quite an issue. This probably summarizes how I feel about different Linux drivers quality for WoW/Wine (NOTE: Take this table with a grain of salt. These were tested with different versions of WoW and different addons installed. I've noticed that running Recount in a raid on Mists of Pandaria has never resulted in good performance, I suspect even DBM could influence scores. Nevertheless this is a touchy feely guess at performance of WoW):

    Accelerator/DriverExact Model (and CPU)LibraryDrawing Rating1Overall Speed Rating (fps2)Notes
    ATI R200 OSSRadeon 9000M 64bit 32M (Pentium-M 1.6GHz)D3D3/102/10 (3)Slow! OpenGL mode crashes? Recent bit-rot makes it draw very poorly.
    Intel GMA OSSG945/GMA950 (Atom N270 1.6GHz)OpenGL3/101/10 (3)3Too Slow! Stripped down to be able to login.
    Intel GMA OSS915G/GMA900 (Celeron-M 1.5GHz)OpenGL3/102/10 (6)3Slow! Used the 945G config. Note this is faster than the 945 because the Celeron-M is faster than the Atom, not sure if it still works.
    Intel GMA OSSG965/GMA X3000 "128 bit Dual Channel" (Core2 Duo E6700)OpenGL7/104/10 (10)Slow! Seems complete and useable, draws correctly as-is
    Intel GMA OSSQ45/GMA 4500 (Core2 Quad Q9550S)OpenGL7/104/10 (10)Slow! Seems complete and useable, draws correctly as-is
    Intel HD OSSSandybridge/Z68 (Core i7-2700K)OpenGL5/107/10 (30)OpenGL mode seems to flicker sometimes. In recent WoW versions (5.4.2) there is a disclaimer that WoW will no longer do greater than 1366x768 (wide) and 1280x960 (4:3) on Sandybridge in Windows XP, and since Wine will look like WinXP may trigger the same issue. Not sure what or why yet. D3D9 mode looks pretty good so far, I'm currently running in this mode all the time for raids, etc. I've resorted to using my Radeon HD 5770 in my i7 due to graphics artifacts.
    D3D11/106/10
    Intel HD OSSIvybridge/Z77 (Core i5-3317U)OpenGL5/107/10 (30)OpenGL mode seems to flicker sometimes, D3D9 mode looks nice
    NVidia ClosedGeForce4 MX420 64bit 64M (AthlonXP 2200+)D3D10/103/10 (4)This card is slow! But it runs WoW perfectly. Alas I hate closed source drivers.
    NVidia ClosedGeForce 8400GS 64bit 512M (Core2 Duo E6700)OpenGL9/105/10 (20)Not too bad for low end card
    ATI FGLRX ClosedRadeon HD 3650 128bit 512M (Core2 Quad Q6600)OpenGL6/108/10 (26)But so many problems from the closed source driver. Minimap does not work correctly. Mostly drawn fine.
    ATI FGLRX ClosedRadeon HD 5770 128bit 1G (Core2 Quad Q9550S)OpenGL9/108/10 (50)Newer FGLRX works fine. D3D mode is very nice looking but slower than expected, even if it is Recount's fault :(
    D3D11/106/10 (35)
    ATI RadeonHD OSSRadeon HD 5770 128bit 1G (Core i7-2700K)OpenGLFAILFAIL Have to use D3D mode.
    D3D11/10Very Good
    WindowsXP CatalystRadeon AIW 8500DV 128bit 64M (Pentium4 3.4GHz)D3D10/107/10 (19)WinXP Reference
    Windows7 IntelIvybridge/Z77 (Core i5-3317U, HD4000)D3D11/108/10 (?)Win7 Reference
    Windows8.1 IntelBaytrail Z3735G (HD4000)D3D10/106/10 (?)Win8.1 Test

    1Defining 10/10 to look like Windows renderring, all graphics work
    2in Shattrath Lower City, looking at the vendors (Ernie Packwell) and Grok's (the ogre) back, or estimate
    3Using config.wtf hacks to increase frames per second, would be much worse if run with default config