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