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