blob: b5ea4e0bebc4f1c433c6a671dc312ae736aee919 [file] [log] [blame]
Andreas Bollecd5c7c2012-06-12 09:05:03 +02001<!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>
Brian Paul27915702012-01-13 10:54:22 -07008<body>
9
Andreas Bollb5da52a2012-09-18 18:57:02 +020010<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
Brian Paul27915702012-01-13 10:54:22 -070017<h1>VMware guest GL driver</h1>
18
19<p>
Brian Paul7028e6d2012-02-09 18:06:06 -070020This page describes how to build, install and use the
Andreas Bolla73c59b2012-09-18 19:31:28 +020021<a href="http://www.vmware.com/">VMware</a> guest GL driver
Brian Paul27915702012-01-13 10:54:22 -070022(aka the SVGA or SVGA3D driver) for Linux using the latest source code.
23This driver gives a Linux virtual machine access to the host's GPU for
24hardware-accelerated 3D.
25VMware Workstation running on Linux or Windows and VMware Fusion running on
26MacOS are all supported.
27</p>
28
29<p>
Brian Paulc47207d2014-01-07 10:50:21 -070030Most modern Linux distros include the SVGA3D driver so end users shouldn't
31be concerned with this information.
32But if your distro lacks the driver or you want to update to the latest code
33these instructions explain what to do.
Brian Paul27915702012-01-13 10:54:22 -070034</p>
35
Brian Paul548526f2012-01-13 13:45:58 -070036<p>
37For more information about the X components see these wiki pages at x.org:
38</p>
39<ul>
Andreas Bolla73c59b2012-09-18 19:31:28 +020040<li><a href="http://wiki.x.org/wiki/vmware">
Brian Paul548526f2012-01-13 13:45:58 -070041Driver Overview</a>
Andreas Bolla73c59b2012-09-18 19:31:28 +020042<li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
Brian Paul548526f2012-01-13 13:45:58 -070043xf86-video-vmware Details</a>
44</ul>
Brian Paul27915702012-01-13 10:54:22 -070045
46
47<h2>Components</h2>
48
49The components involved in this include:
50<ul>
51<li>Linux kernel module: vmwgfx
52<li>X server 2D driver: xf86-video-vmware
53<li>User-space libdrm library
54<li>Mesa/gallium OpenGL driver: "svga"
55</ul>
56
Brian Paulc47207d2014-01-07 10:50:21 -070057<p>
58All of these components reside in the guest Linux virtual machine.
59On the host, all you're doing is running VMware
60<a href="http://www.vmware.com/products/workstation/">Workstation</a> or
61<a href="http://www.vmware.com/products/fusion/">Fusion</a>.
62</p>
63
Brian Paul27915702012-01-13 10:54:22 -070064
65<h2>Prerequisites</h2>
66
67<ul>
68<li>Kernel version at least 2.6.25
69<li>Xserver version at least 1.7
70<li>Ubuntu: For ubuntu you need to install a number of build dependencies.
71 <pre>
72 sudo apt-get install git-core
73 sudo apt-get install automake libtool libpthread-stubs0-dev
Brian Paul481011f2012-01-16 09:59:20 -070074 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
75 sudo apt-get install libxcb-glx0-dev libxrender-dev
Brian Paul27915702012-01-13 10:54:22 -070076 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
77 </pre>
78<li>Fedora: For Fedora you also need to install a number of build dependencies.
79 <pre>
80 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
Brian Paul481011f2012-01-16 09:59:20 -070081 sudo yum install libXrender-devel.i686
Brian Paul27915702012-01-13 10:54:22 -070082 sudo yum install automake gcc libtool expat-devel kernel-devel git-core
Brian Paul481011f2012-01-16 09:59:20 -070083 sudo yum install makedepend flex bison
Brian Paul27915702012-01-13 10:54:22 -070084 </pre>
85</ul>
86
87<p>
88Depending on your Linux distro, other packages may be needed.
89The configure scripts should tell you what's missing.
90</p>
91
92
93
94<h2>Getting the Latest Source Code</h2>
95
96Begin by saving your current directory location:
97 <pre>
98 export TOP=$PWD
99 </pre>
100
101<ul>
102<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.
103 <pre>
104 git clone git://anongit.freedesktop.org/git/mesa/mesa
105 </pre>
106<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.
107 <pre>
108 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
109 </pre>
Brian Paul133383f2013-01-15 13:00:09 -0700110<li>libdrm, a user-space library that interfaces with drm.
111Most distros ship with this but it's safest to install a newer version.
112To get the latest code from git:
Brian Paul27915702012-01-13 10:54:22 -0700113 <pre>
114 git clone git://anongit.freedesktop.org/git/mesa/drm
115 </pre>
116<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
117 <pre>
118 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
119 </pre>
120</ul>
121
122
123<h2>Building the Code</h2>
124
125<ul>
126<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.
127 <pre>
128 cd $TOP/drm
Brian Paul133383f2013-01-15 13:00:09 -0700129 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
Brian Paul27915702012-01-13 10:54:22 -0700130 make
131 sudo make install
132 </pre>
133<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
134The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
135and by the Xorg server during accelerated indirect GL rendering.
136The libxatracker library is used exclusively by the X server to do render,
137copy and video acceleration:
138<br>
139The following configure options doesn't build the EGL system.
140<br>
141As before, if you're on a 32-bit system, you should skip the --libdir
142configure option.
143 <pre>
144 cd $TOP/mesa
Brian Paul2732d0d2013-12-04 07:39:59 -0700145 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa --disable-dri3
Brian Paul27915702012-01-13 10:54:22 -0700146 make
147 sudo make install
148 </pre>
149
150Note that you may have to install other packages that Mesa depends upon
151if they're not installed in your system. You should be told what's missing.
152<br>
153<br>
154
155<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.
156 <pre>
157 cd $TOP/xf86-video-vmware
158 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
159 make
160 sudo make install
161 </pre>
162<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
163 <pre>
164 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
165 </pre>
166Then
167 <pre>
168 cd $TOP/vmwgfx
169 make
170 sudo make install
171 sudo cp 00-vmwgfx.rules /etc/udev/rules.d
172 sudo depmod -ae
173 </pre>
Brian Pauld83336c2013-01-28 17:44:46 -0700174
175Note: some distros put DRM kernel drivers in different directories.
176For example, sometimes vmwgfx.ko might be found in
177<code>/lib/modules/{version}/extra/vmwgfx.ko</code> or in
178<code>/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko</code>.
179<p>
180After installing vmwgfx.ko you might want to run the following command to
181check that the new kernel module is in the expected place:
182<pre>
183 find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
184</pre>
185If you see the kernel module listed in more than one place, you may need to
186move things around.
187<p>
188Finally, if you update your kernel you'll probably have to rebuild and
189reinstall the vmwgfx.ko module again.
Brian Paul27915702012-01-13 10:54:22 -0700190</ul>
191
192
193Now try to load the kernel module by issuing
194 <pre>
195 sudo modprobe vmwgfx</pre>
196Then type
197 <pre>
198 dmesg</pre>
199to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
200
201<p>
202Then restart the Xserver (or reboot).
203The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
204should now have been replaced with lines starting with "vmwgfx", indicating that
205the new Xorg driver is in use.
206</p>
207
208
209<h2>Running OpenGL Programs</h2>
210
211<p>
212In a shell, run 'glxinfo' and look for the following to verify that the
213driver is working:
214</p>
215
216<pre>
217OpenGL vendor string: VMware, Inc.
218OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
219OpenGL version string: 2.1 Mesa 8.0
220</pre>
221
Andreas Bolldf2be222012-06-12 09:05:22 +0200222<p>
Brian Paul27915702012-01-13 10:54:22 -0700223If you don't see this, try setting this environment variable:
224 <pre>
225 export LIBGL_DEBUG=verbose</pre>
Andreas Bolldf2be222012-06-12 09:05:22 +0200226<p>
Brian Paul27915702012-01-13 10:54:22 -0700227then rerun glxinfo and examine the output for error messages.
228</p>
229
Andreas Bollb5da52a2012-09-18 18:57:02 +0200230</div>
Brian Paul27915702012-01-13 10:54:22 -0700231</body>
232</html>