1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <meta http-equiv=
"content-type" content=
"text/html; charset=utf-8">
5 <title>VMware SVGA3D Guest Driver
</title>
6 <link rel=
"stylesheet" type=
"text/css" href=
"mesa.css">
11 The Mesa
3D Graphics Library
14 <iframe src=
"contents.html"></iframe>
17 <h1>VMware SVGA3D Guest Driver
</h1>
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.
30 With the August
2015 Workstation
12 / Fusion
8 releases, OpenGL
3.3
31 is supported in the guest.
35 <li>The VM is configured for virtual hardware version
12.
36 <li>The host OS, GPU and graphics driver supports DX11 (Windows) or
37 OpenGL
4.0 (Linux, Mac)
38 <li>On Linux, the vmwgfx kernel module must be version
2.9.0 or later.
39 <li>A recent version of Mesa with the updated svga gallium driver.
43 Otherwise, OpenGL
2.1 is supported.
47 With the Fall
2018 Workstation
15 / Fusion
11 releases, additional
48 features are supported in the driver:
50 <li>Multisample antialiasing (
2x,
4x)
51 <li>GL_ARB/AMD_draw_buffers_blend
52 <li>GL_ARB_sample_shading
53 <li>GL_ARB_texture_cube_map_array
54 <li>GL_ARB_texture_gather
55 <li>GL_ARB_texture_query_lod
56 <li>GL_EXT/OES_draw_buffers_indexed
59 This requires version
2.15.0 or later of the vmwgfx kernel module and
60 the VM must be configured for hardware version
16 or later.
64 OpenGL
3.3 support can be disabled by setting the environment variable
66 You will then have OpenGL
2.1 support.
67 This may be useful to work around application bugs (such as incorrect use
68 of the OpenGL
3.x core profile).
72 Most modern Linux distros include the SVGA3D driver so end users shouldn't
73 be concerned with this information.
74 But if your distro lacks the driver or you want to update to the latest code
75 these instructions explain what to do.
79 For more information about the X components see these wiki pages at x.org:
82 <li><a href=
"https://wiki.x.org/wiki/vmware">
84 <li><a href=
"https://wiki.x.org/wiki/vmware/vmware3D">
85 xf86-video-vmware Details
</a>
91 The components involved in this include:
93 <li>Linux kernel module: vmwgfx
94 <li>X server
2D driver: xf86-video-vmware
95 <li>User-space libdrm library
96 <li>Mesa/gallium OpenGL driver:
"svga"
100 All of these components reside in the guest Linux virtual machine.
101 On the host, all you're doing is running VMware
102 <a href=
"https://www.vmware.com/products/workstation/">Workstation
</a> or
103 <a href=
"https://www.vmware.com/products/fusion/">Fusion
</a>.
107 <h2>Prerequisites
</h2>
110 <li>Kernel version at least
2.6.25
111 <li>Xserver version at least
1.7
112 <li>Ubuntu: For ubuntu you need to install a number of build dependencies.
114 sudo apt-get install git-core
115 sudo apt-get install ninja-build meson libpthread-stubs0-dev
116 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
117 sudo apt-get install libxcb-glx0-dev libxrender-dev
118 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
120 <li>Fedora: For Fedora you also need to install a number of build dependencies.
122 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
123 sudo yum install libXrender-devel.i686
124 sudo yum install ninja-build meson gcc expat-devel kernel-devel git-core
125 sudo yum install makedepend flex bison
130 Depending on your Linux distro, other packages may be needed.
131 Meson should tell you what's missing.
136 <h2>Getting the Latest Source Code
</h2>
138 Begin by saving your current directory location:
144 <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.
146 git clone https://gitlab.freedesktop.org/mesa/mesa.git
148 <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.
150 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
152 <li>libdrm, a user-space library that interfaces with drm.
153 Most distros ship with this but it's safest to install a newer version.
154 To get the latest code from git:
156 git clone https://gitlab.freedesktop.org/mesa/drm.git
158 <li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
160 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
165 <h2>Building the Code
</h2>
170 Determine where the GL-related libraries reside on your system and set
171 the LIBDIR environment variable accordingly.
173 For
32-bit Ubuntu systems:
175 export LIBDIR=/usr/lib/i386-linux-gnu
177 For
64-bit Ubuntu systems:
179 export LIBDIR=/usr/lib/x86_64-linux-gnu
181 For
32-bit Fedora systems:
183 export LIBDIR=/usr/lib
185 For
64-bit Fedora systems:
187 export LIBDIR=/usr/lib64
195 meson builddir --prefix=/usr --libdir=${LIBDIR}
197 sudo ninja -C builddir install
200 <p>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
201 The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
202 and by the Xorg server during accelerated indirect GL rendering.
203 The libxatracker library is used exclusively by the X server to do render,
204 copy and video acceleration:
207 The following configure options doesn't build the EGL system.
210 meson builddir --prefix=/usr --libdir=${LIBDIR} -Dgallium-drivers=svga -Ddri-drivers=swrast -Dgallium-xa=true -Ddri3=false
212 sudo ninja -C builddir install
216 Note that you may have to install other packages that Mesa depends upon
217 if they're not installed in your system. You should be told what's missing.
220 <li>xf86-video-vmware: Now, once libxatracker is installed, we proceed with
221 building and replacing the current Xorg driver.
222 First check if your system is
32- or
64-bit.
224 cd $TOP/xf86-video-vmware
225 ./autogen.sh --prefix=/usr --libdir=${LIBDIR}
230 <li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
232 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
241 If you're using a Ubuntu OS:
243 sudo update-initramfs -u
245 If you're using a Fedora OS:
249 Add 'vmwgfx' to the /etc/modules file:
251 echo vmwgfx | sudo tee -a /etc/modules
254 Note: some distros put DRM kernel drivers in different directories.
255 For example, sometimes vmwgfx.ko might be found in
256 <code>/lib/modules/{version}/extra/vmwgfx.ko
</code> or in
257 <code>/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
</code>.
259 After installing vmwgfx.ko you might want to run the following command to
260 check that the new kernel module is in the expected place:
262 find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
264 If you see the kernel module listed in more than one place, you may need to
267 Finally, if you update your kernel you'll probably have to rebuild and
268 reinstall the vmwgfx.ko module again.
272 Now try to load the kernel module by issuing
274 sudo modprobe vmwgfx
</pre>
278 to watch the debug output. It should contain a number of lines prefixed with
"[vmwgfx]".
281 Then restart the Xserver (or reboot).
282 The lines starting with
"vmwlegacy" or
"VMWARE" in the file /var/log/Xorg
.0.log
283 should now have been replaced with lines starting with
"vmwgfx", indicating that
284 the new Xorg driver is in use.
288 <h2>Running OpenGL Programs
</h2>
291 In a shell, run 'glxinfo' and look for the following to verify that the
296 OpenGL vendor string: VMware, Inc.
297 OpenGL renderer string: Gallium
0.4 on SVGA3D; build: RELEASE;
298 OpenGL version string:
2.1 Mesa
8.0
302 If you don't see this, try setting this environment variable:
304 export LIBGL_DEBUG=verbose
</pre>
306 then rerun glxinfo and examine the output for error messages.
310 If OpenGL
3.3 is not working (you only get OpenGL
2.1):
313 <li>Make sure the VM uses hardware version
12.
314 <li>Make sure the vmwgfx kernel module is version
2.9.0 or later.
315 <li>Check the vmware.log file for errors.
316 <li>Run 'dmesg | grep vmwgfx' and look for
"DX: yes".