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