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> 13 This 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. 16 This driver gives a Linux virtual machine access to the host's GPU for 17 hardware-accelerated 3D. 18 VMware Workstation running on Linux or Windows and VMware Fusion running on 19 MacOS are all supported. 20 </p> 21 22 <p> 23 End users shouldn't have to go through all these steps once the driver is 24 included in newer Linux distributions. 25 </p> 26 27 <p> 28 For 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"> 32 Driver Overview</a> 33 <li><a href="http://wiki.x.org/wiki/vmware/vmware3D" target="_parent"> 34 xf86-video-vmware Details</a> 35 </ul> 36 37 38 <h2>Components</h2> 39 40 The 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> 72 Depending on your Linux distro, other packages may be needed. 73 The configure scripts should tell you what's missing. 74 </p> 75 76 77 78 <h2>Getting the Latest Source Code</h2> 79 80 Begin 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. 117 The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering, 118 and by the Xorg server during accelerated indirect GL rendering. 119 The libxatracker library is used exclusively by the X server to do render, 120 copy and video acceleration: 121 <br> 122 The following configure options doesn't build the EGL system. 123 <br> 124 As before, if you're on a 32-bit system, you should skip the --libdir 125 configure 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 133 Note that you may have to install other packages that Mesa depends upon 134 if 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> 149 Then 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 160 Now try to load the kernel module by issuing 161 <pre> 162 sudo modprobe vmwgfx</pre> 163 Then type 164 <pre> 165 dmesg</pre> 166 to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]". 167 168 <p> 169 Then restart the Xserver (or reboot). 170 The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log 171 should now have been replaced with lines starting with "vmwgfx", indicating that 172 the new Xorg driver is in use. 173 </p> 174 175 176 <h2>Running OpenGL Programs</h2> 177 178 <p> 179 In a shell, run 'glxinfo' and look for the following to verify that the 180 driver is working: 181 </p> 182 183 <pre> 184 OpenGL vendor string: VMware, Inc. 185 OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE; 186 OpenGL version string: 2.1 Mesa 8.0 187 </pre> 188 189 <p> 190 If you don't see this, try setting this environment variable: 191 <pre> 192 export LIBGL_DEBUG=verbose</pre> 193 <p> 194 then rerun glxinfo and examine the output for error messages. 195 </p> 196 197 </body> 198 </html> 199