1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html lang="en"> 3<head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>VMware guest GL driver</title> 6 <link rel="stylesheet" type="text/css" href="mesa.css"> 7</head> 8<body> 9 10<h1>VMware guest GL driver</h1> 11 12<p> 13This page describes how to build, install and use the 14<a href="http://www.vmware.com/" target="_parent">VMware</a> guest GL driver 15(aka the SVGA or SVGA3D driver) for Linux using the latest source code. 16This driver gives a Linux virtual machine access to the host's GPU for 17hardware-accelerated 3D. 18VMware Workstation running on Linux or Windows and VMware Fusion running on 19MacOS are all supported. 20</p> 21 22<p> 23End users shouldn't have to go through all these steps once the driver is 24included in newer Linux distributions. 25</p> 26 27<p> 28For more information about the X components see these wiki pages at x.org: 29</p> 30<ul> 31<li><a href="http://wiki.x.org/wiki/vmware" target="_parent"> 32Driver Overview</a> 33<li><a href="http://wiki.x.org/wiki/vmware/vmware3D" target="_parent"> 34xf86-video-vmware Details</a> 35</ul> 36 37 38<h2>Components</h2> 39 40The components involved in this include: 41<ul> 42<li>Linux kernel module: vmwgfx 43<li>X server 2D driver: xf86-video-vmware 44<li>User-space libdrm library 45<li>Mesa/gallium OpenGL driver: "svga" 46</ul> 47 48 49<h2>Prerequisites</h2> 50 51<ul> 52<li>Kernel version at least 2.6.25 53<li>Xserver version at least 1.7 54<li>Ubuntu: For ubuntu you need to install a number of build dependencies. 55 <pre> 56 sudo apt-get install git-core 57 sudo apt-get install automake libtool libpthread-stubs0-dev 58 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev 59 sudo apt-get install libxcb-glx0-dev libxrender-dev 60 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev 61 </pre> 62<li>Fedora: For Fedora you also need to install a number of build dependencies. 63 <pre> 64 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros 65 sudo yum install libXrender-devel.i686 66 sudo yum install automake gcc libtool expat-devel kernel-devel git-core 67 sudo yum install makedepend flex bison 68 </pre> 69</ul> 70 71<p> 72Depending on your Linux distro, other packages may be needed. 73The configure scripts should tell you what's missing. 74</p> 75 76 77 78<h2>Getting the Latest Source Code</h2> 79 80Begin by saving your current directory location: 81 <pre> 82 export TOP=$PWD 83 </pre> 84 85<ul> 86<li>Mesa/Gallium master branch. This code is used to build libGL, and the direct rendering svga driver for libGL, vmwgfx_dri.so, and the X acceleration library libxatracker.so.x.x.x. 87 <pre> 88 git clone git://anongit.freedesktop.org/git/mesa/mesa 89 </pre> 90<li>VMware Linux guest kernel module. Note that this repo contains the complete DRM and TTM code. The vmware-specific driver is really only the files prefixed with vmwgfx. 91 <pre> 92 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx 93 </pre> 94 95<li>libdrm, A user-space library that interfaces with drm. Most distros ship with this driver. Safest bet is really to replace the system one. Optionally you can point LIBDRM_CFLAGS and LIBDRM_LIBS to the libdrm-2.4.22 package in toolchain. But here, we replace: 96 <pre> 97 git clone git://anongit.freedesktop.org/git/mesa/drm 98 </pre> 99<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so. 100 <pre> 101 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware 102 </pre> 103</ul> 104 105 106<h2>Building the Code</h2> 107 108<ul> 109<li>Build libdrm: If you're on a 32-bit system, you should skip the --libdir configure option. Note also the comment about toolchain libdrm above. 110 <pre> 111 cd $TOP/drm 112 ./autogen.sh --prefix=/usr --enable-vmwgfx-experimental-api --libdir=/usr/lib64 113 make 114 sudo make install 115 </pre> 116<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker. 117The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering, 118and by the Xorg server during accelerated indirect GL rendering. 119The libxatracker library is used exclusively by the X server to do render, 120copy and video acceleration: 121<br> 122The following configure options doesn't build the EGL system. 123<br> 124As before, if you're on a 32-bit system, you should skip the --libdir 125configure option. 126 <pre> 127 cd $TOP/mesa 128 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa 129 make 130 sudo make install 131 </pre> 132 133Note that you may have to install other packages that Mesa depends upon 134if they're not installed in your system. You should be told what's missing. 135<br> 136<br> 137 138<li>xf86-video-vmware: Now, once libxatracker is installed, we proceed with building and replacing the current Xorg driver. First check if your system is 32- or 64-bit. If you're building for a 32-bit system, you will not be needing the --libdir=/usr/lib64 option to autogen. 139 <pre> 140 cd $TOP/xf86-video-vmware 141 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 142 make 143 sudo make install 144 </pre> 145<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing 146 <pre> 147 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko* 148 </pre> 149Then 150 <pre> 151 cd $TOP/vmwgfx 152 make 153 sudo make install 154 sudo cp 00-vmwgfx.rules /etc/udev/rules.d 155 sudo depmod -ae 156 </pre> 157</ul> 158 159 160Now try to load the kernel module by issuing 161 <pre> 162 sudo modprobe vmwgfx</pre> 163Then type 164 <pre> 165 dmesg</pre> 166to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]". 167 168<p> 169Then restart the Xserver (or reboot). 170The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log 171should now have been replaced with lines starting with "vmwgfx", indicating that 172the new Xorg driver is in use. 173</p> 174 175 176<h2>Running OpenGL Programs</h2> 177 178<p> 179In a shell, run 'glxinfo' and look for the following to verify that the 180driver is working: 181</p> 182 183<pre> 184OpenGL vendor string: VMware, Inc. 185OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE; 186OpenGL version string: 2.1 Mesa 8.0 187</pre> 188 189<p> 190If you don't see this, try setting this environment variable: 191 <pre> 192 export LIBGL_DEBUG=verbose</pre> 193<p> 194then rerun glxinfo and examine the output for error messages. 195</p> 196 197</body> 198</html> 199