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 | <div class="header">
|
---|
11 | <h1>The Mesa 3D Graphics Library</h1>
|
---|
12 | </div>
|
---|
13 |
|
---|
14 | <iframe src="contents.html"></iframe>
|
---|
15 | <div class="content">
|
---|
16 |
|
---|
17 | <h1>VMware guest GL driver</h1>
|
---|
18 |
|
---|
19 | <p>
|
---|
20 | This page describes how to build, install and use the
|
---|
21 | <a href="https://www.vmware.com/">VMware</a> guest GL driver
|
---|
22 | (aka the SVGA or SVGA3D driver) for Linux using the latest source code.
|
---|
23 | This driver gives a Linux virtual machine access to the host's GPU for
|
---|
24 | hardware-accelerated 3D.
|
---|
25 | VMware Workstation running on Linux or Windows and VMware Fusion running on
|
---|
26 | MacOS are all supported.
|
---|
27 | </p>
|
---|
28 |
|
---|
29 | <p>
|
---|
30 | With the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3
|
---|
31 | is supported in the guest.
|
---|
32 | This requires:
|
---|
33 | <ul>
|
---|
34 | <li>The VM is configured for virtual hardware version 12.
|
---|
35 | <li>The host OS, GPU and graphics driver supports DX11 (Windows) or
|
---|
36 | OpenGL 4.0 (Linux, Mac)
|
---|
37 | <li>On Linux, the vmwgfx kernel module must be version 2.9.0 or later.
|
---|
38 | <li>A recent version of Mesa with the updated svga gallium driver.
|
---|
39 | </ul>
|
---|
40 | </p>
|
---|
41 |
|
---|
42 | <p>
|
---|
43 | Otherwise, OpenGL 2.1 is supported.
|
---|
44 | </p>
|
---|
45 |
|
---|
46 | <p>
|
---|
47 | OpenGL 3.3 support can be disabled by setting the environment variable
|
---|
48 | SVGA_VGPU10=0.
|
---|
49 | You will then have OpenGL 2.1 support.
|
---|
50 | This may be useful to work around application bugs (such as incorrect use
|
---|
51 | of the OpenGL 3.x core profile).
|
---|
52 | </p>
|
---|
53 |
|
---|
54 | <p>
|
---|
55 | Most modern Linux distros include the SVGA3D driver so end users shouldn't
|
---|
56 | be concerned with this information.
|
---|
57 | But if your distro lacks the driver or you want to update to the latest code
|
---|
58 | these instructions explain what to do.
|
---|
59 | </p>
|
---|
60 |
|
---|
61 | <p>
|
---|
62 | For more information about the X components see these wiki pages at x.org:
|
---|
63 | </p>
|
---|
64 | <ul>
|
---|
65 | <li><a href="https://wiki.x.org/wiki/vmware">
|
---|
66 | Driver Overview</a>
|
---|
67 | <li><a href="https://wiki.x.org/wiki/vmware/vmware3D">
|
---|
68 | xf86-video-vmware Details</a>
|
---|
69 | </ul>
|
---|
70 |
|
---|
71 |
|
---|
72 | <h2>Components</h2>
|
---|
73 |
|
---|
74 | The components involved in this include:
|
---|
75 | <ul>
|
---|
76 | <li>Linux kernel module: vmwgfx
|
---|
77 | <li>X server 2D driver: xf86-video-vmware
|
---|
78 | <li>User-space libdrm library
|
---|
79 | <li>Mesa/gallium OpenGL driver: "svga"
|
---|
80 | </ul>
|
---|
81 |
|
---|
82 | <p>
|
---|
83 | All of these components reside in the guest Linux virtual machine.
|
---|
84 | On the host, all you're doing is running VMware
|
---|
85 | <a href="https://www.vmware.com/products/workstation/">Workstation</a> or
|
---|
86 | <a href="https://www.vmware.com/products/fusion/">Fusion</a>.
|
---|
87 | </p>
|
---|
88 |
|
---|
89 |
|
---|
90 | <h2>Prerequisites</h2>
|
---|
91 |
|
---|
92 | <ul>
|
---|
93 | <li>Kernel version at least 2.6.25
|
---|
94 | <li>Xserver version at least 1.7
|
---|
95 | <li>Ubuntu: For ubuntu you need to install a number of build dependencies.
|
---|
96 | <pre>
|
---|
97 | sudo apt-get install git-core
|
---|
98 | sudo apt-get install automake libtool libpthread-stubs0-dev
|
---|
99 | sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
|
---|
100 | sudo apt-get install libxcb-glx0-dev libxrender-dev
|
---|
101 | sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
|
---|
102 | </pre>
|
---|
103 | <li>Fedora: For Fedora you also need to install a number of build dependencies.
|
---|
104 | <pre>
|
---|
105 | sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
|
---|
106 | sudo yum install libXrender-devel.i686
|
---|
107 | sudo yum install automake gcc libtool expat-devel kernel-devel git-core
|
---|
108 | sudo yum install makedepend flex bison
|
---|
109 | </pre>
|
---|
110 | </ul>
|
---|
111 |
|
---|
112 | <p>
|
---|
113 | Depending on your Linux distro, other packages may be needed.
|
---|
114 | The configure scripts should tell you what's missing.
|
---|
115 | </p>
|
---|
116 |
|
---|
117 |
|
---|
118 |
|
---|
119 | <h2>Getting the Latest Source Code</h2>
|
---|
120 |
|
---|
121 | Begin by saving your current directory location:
|
---|
122 | <pre>
|
---|
123 | export TOP=$PWD
|
---|
124 | </pre>
|
---|
125 |
|
---|
126 | <ul>
|
---|
127 | <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.
|
---|
128 | <pre>
|
---|
129 | git clone git://anongit.freedesktop.org/git/mesa/mesa
|
---|
130 | </pre>
|
---|
131 | <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.
|
---|
132 | <pre>
|
---|
133 | git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
|
---|
134 | </pre>
|
---|
135 | <li>libdrm, a user-space library that interfaces with drm.
|
---|
136 | Most distros ship with this but it's safest to install a newer version.
|
---|
137 | To get the latest code from git:
|
---|
138 | <pre>
|
---|
139 | git clone git://anongit.freedesktop.org/git/mesa/drm
|
---|
140 | </pre>
|
---|
141 | <li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
|
---|
142 | <pre>
|
---|
143 | git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
|
---|
144 | </pre>
|
---|
145 | </ul>
|
---|
146 |
|
---|
147 |
|
---|
148 | <h2>Building the Code</h2>
|
---|
149 |
|
---|
150 | <ul>
|
---|
151 | <li>
|
---|
152 | Determine where the GL-related libraries reside on your system and set
|
---|
153 | the LIBDIR environment variable accordingly.
|
---|
154 | <br><br>
|
---|
155 | For 32-bit Ubuntu systems:
|
---|
156 | <pre>
|
---|
157 | export LIBDIR=/usr/lib/i386-linux-gnu
|
---|
158 | </pre>
|
---|
159 | For 64-bit Ubuntu systems:
|
---|
160 | <pre>
|
---|
161 | export LIBDIR=/usr/lib/x86_64-linux-gnu
|
---|
162 | </pre>
|
---|
163 | For 32-bit Fedora systems:
|
---|
164 | <pre>
|
---|
165 | export LIBDIR=/usr/lib
|
---|
166 | </pre>
|
---|
167 | For 64-bit Fedora systems:
|
---|
168 | <pre>
|
---|
169 | export LIBDIR=/usr/lib64
|
---|
170 | </pre>
|
---|
171 |
|
---|
172 | </li>
|
---|
173 |
|
---|
174 | <li>Build libdrm:
|
---|
175 | <pre>
|
---|
176 | cd $TOP/drm
|
---|
177 | ./autogen.sh --prefix=/usr --libdir=${LIBDIR}
|
---|
178 | make
|
---|
179 | sudo make install
|
---|
180 | </pre>
|
---|
181 | <li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
|
---|
182 | The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
|
---|
183 | and by the Xorg server during accelerated indirect GL rendering.
|
---|
184 | The libxatracker library is used exclusively by the X server to do render,
|
---|
185 | copy and video acceleration:
|
---|
186 | <br>
|
---|
187 | The following configure options doesn't build the EGL system.
|
---|
188 | <pre>
|
---|
189 | cd $TOP/mesa
|
---|
190 | ./autogen.sh --prefix=/usr --libdir=${LIBDIR} --with-gallium-drivers=svga --with-dri-drivers=swrast --enable-xa --disable-dri3 --enable-glx-tls
|
---|
191 | make
|
---|
192 | sudo make install
|
---|
193 | </pre>
|
---|
194 |
|
---|
195 | Note that you may have to install other packages that Mesa depends upon
|
---|
196 | if they're not installed in your system. You should be told what's missing.
|
---|
197 | <br>
|
---|
198 | <br>
|
---|
199 |
|
---|
200 | <li>xf86-video-vmware: Now, once libxatracker is installed, we proceed with
|
---|
201 | building and replacing the current Xorg driver.
|
---|
202 | First check if your system is 32- or 64-bit.
|
---|
203 | <pre>
|
---|
204 | cd $TOP/xf86-video-vmware
|
---|
205 | ./autogen.sh --prefix=/usr --libdir=${LIBDIR}
|
---|
206 | make
|
---|
207 | sudo make install
|
---|
208 | </pre>
|
---|
209 |
|
---|
210 | <li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
|
---|
211 | <pre>
|
---|
212 | sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
|
---|
213 | </pre>
|
---|
214 | Build and install:
|
---|
215 | <pre>
|
---|
216 | cd $TOP/vmwgfx
|
---|
217 | make
|
---|
218 | sudo make install
|
---|
219 | sudo depmod -a
|
---|
220 | </pre>
|
---|
221 | If you're using a Ubuntu OS:
|
---|
222 | <pre>
|
---|
223 | sudo update-initramfs -u
|
---|
224 | </pre>
|
---|
225 | If you're using a Fedora OS:
|
---|
226 | <pre>
|
---|
227 | sudo dracut --force
|
---|
228 | </pre>
|
---|
229 | Add 'vmwgfx' to the /etc/modules file:
|
---|
230 | <pre>
|
---|
231 | echo vmwgfx | sudo tee -a /etc/modules
|
---|
232 | </pre>
|
---|
233 |
|
---|
234 | Note: some distros put DRM kernel drivers in different directories.
|
---|
235 | For example, sometimes vmwgfx.ko might be found in
|
---|
236 | <code>/lib/modules/{version}/extra/vmwgfx.ko</code> or in
|
---|
237 | <code>/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko</code>.
|
---|
238 | <p>
|
---|
239 | After installing vmwgfx.ko you might want to run the following command to
|
---|
240 | check that the new kernel module is in the expected place:
|
---|
241 | <pre>
|
---|
242 | find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
|
---|
243 | </pre>
|
---|
244 | If you see the kernel module listed in more than one place, you may need to
|
---|
245 | move things around.
|
---|
246 | <p>
|
---|
247 | Finally, if you update your kernel you'll probably have to rebuild and
|
---|
248 | reinstall the vmwgfx.ko module again.
|
---|
249 | </ul>
|
---|
250 |
|
---|
251 |
|
---|
252 | Now try to load the kernel module by issuing
|
---|
253 | <pre>
|
---|
254 | sudo modprobe vmwgfx</pre>
|
---|
255 | Then type
|
---|
256 | <pre>
|
---|
257 | dmesg</pre>
|
---|
258 | to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
|
---|
259 |
|
---|
260 | <p>
|
---|
261 | Then restart the Xserver (or reboot).
|
---|
262 | The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
|
---|
263 | should now have been replaced with lines starting with "vmwgfx", indicating that
|
---|
264 | the new Xorg driver is in use.
|
---|
265 | </p>
|
---|
266 |
|
---|
267 |
|
---|
268 | <h2>Running OpenGL Programs</h2>
|
---|
269 |
|
---|
270 | <p>
|
---|
271 | In a shell, run 'glxinfo' and look for the following to verify that the
|
---|
272 | driver is working:
|
---|
273 | </p>
|
---|
274 |
|
---|
275 | <pre>
|
---|
276 | OpenGL vendor string: VMware, Inc.
|
---|
277 | OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
|
---|
278 | OpenGL version string: 2.1 Mesa 8.0
|
---|
279 | </pre>
|
---|
280 |
|
---|
281 | <p>
|
---|
282 | If you don't see this, try setting this environment variable:
|
---|
283 | <pre>
|
---|
284 | export LIBGL_DEBUG=verbose</pre>
|
---|
285 | <p>
|
---|
286 | then rerun glxinfo and examine the output for error messages.
|
---|
287 | </p>
|
---|
288 |
|
---|
289 | <p>
|
---|
290 | If OpenGL 3.3 is not working (you only get OpenGL 2.1):
|
---|
291 | </p>
|
---|
292 | <ul>
|
---|
293 | <li>Make sure the VM uses hardware version 12.
|
---|
294 | <li>Make sure the vmwgfx kernel module is version 2.9.0 or later.
|
---|
295 | <li>Check the vmware.log file for errors.
|
---|
296 | <li>Run 'dmesg | grep vmwgfx' and look for "DX: yes".
|
---|
297 |
|
---|
298 |
|
---|
299 | </div>
|
---|
300 | </body>
|
---|
301 | </html>
|
---|