blob: b5f136f3343ca325ce1dbdbbe6b3a05f8245afe2 [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>
30End users shouldn't have to go through all these steps once the driver is
31included in newer Linux distributions.
Brian Pauld83336c2013-01-28 17:44:46 -070032Fedora 18 and Ubuntu 12.10 include the VMware guest GL driver, for example.
Brian Paul27915702012-01-13 10:54:22 -070033</p>
34
Brian Paul548526f2012-01-13 13:45:58 -070035<p>
36For more information about the X components see these wiki pages at x.org:
37</p>
38<ul>
Andreas Bolla73c59b2012-09-18 19:31:28 +020039<li><a href="http://wiki.x.org/wiki/vmware">
Brian Paul548526f2012-01-13 13:45:58 -070040Driver Overview</a>
Andreas Bolla73c59b2012-09-18 19:31:28 +020041<li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
Brian Paul548526f2012-01-13 13:45:58 -070042xf86-video-vmware Details</a>
43</ul>
Brian Paul27915702012-01-13 10:54:22 -070044
45
46<h2>Components</h2>
47
48The components involved in this include:
49<ul>
50<li>Linux kernel module: vmwgfx
51<li>X server 2D driver: xf86-video-vmware
52<li>User-space libdrm library
53<li>Mesa/gallium OpenGL driver: "svga"
54</ul>
55
56
57<h2>Prerequisites</h2>
58
59<ul>
60<li>Kernel version at least 2.6.25
61<li>Xserver version at least 1.7
62<li>Ubuntu: For ubuntu you need to install a number of build dependencies.
63 <pre>
64 sudo apt-get install git-core
65 sudo apt-get install automake libtool libpthread-stubs0-dev
Brian Paul481011f2012-01-16 09:59:20 -070066 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
67 sudo apt-get install libxcb-glx0-dev libxrender-dev
Brian Paul27915702012-01-13 10:54:22 -070068 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
69 </pre>
70<li>Fedora: For Fedora you also need to install a number of build dependencies.
71 <pre>
72 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
Brian Paul481011f2012-01-16 09:59:20 -070073 sudo yum install libXrender-devel.i686
Brian Paul27915702012-01-13 10:54:22 -070074 sudo yum install automake gcc libtool expat-devel kernel-devel git-core
Brian Paul481011f2012-01-16 09:59:20 -070075 sudo yum install makedepend flex bison
Brian Paul27915702012-01-13 10:54:22 -070076 </pre>
77</ul>
78
79<p>
80Depending on your Linux distro, other packages may be needed.
81The configure scripts should tell you what's missing.
82</p>
83
84
85
86<h2>Getting the Latest Source Code</h2>
87
88Begin by saving your current directory location:
89 <pre>
90 export TOP=$PWD
91 </pre>
92
93<ul>
94<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.
95 <pre>
96 git clone git://anongit.freedesktop.org/git/mesa/mesa
97 </pre>
98<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.
99 <pre>
100 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
101 </pre>
Brian Paul133383f2013-01-15 13:00:09 -0700102<li>libdrm, a user-space library that interfaces with drm.
103Most distros ship with this but it's safest to install a newer version.
104To get the latest code from git:
Brian Paul27915702012-01-13 10:54:22 -0700105 <pre>
106 git clone git://anongit.freedesktop.org/git/mesa/drm
107 </pre>
108<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
109 <pre>
110 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
111 </pre>
112</ul>
113
114
115<h2>Building the Code</h2>
116
117<ul>
118<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.
119 <pre>
120 cd $TOP/drm
Brian Paul133383f2013-01-15 13:00:09 -0700121 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
Brian Paul27915702012-01-13 10:54:22 -0700122 make
123 sudo make install
124 </pre>
125<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
126The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
127and by the Xorg server during accelerated indirect GL rendering.
128The libxatracker library is used exclusively by the X server to do render,
129copy and video acceleration:
130<br>
131The following configure options doesn't build the EGL system.
132<br>
133As before, if you're on a 32-bit system, you should skip the --libdir
134configure option.
135 <pre>
136 cd $TOP/mesa
137 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa
138 make
139 sudo make install
140 </pre>
141
142Note that you may have to install other packages that Mesa depends upon
143if they're not installed in your system. You should be told what's missing.
144<br>
145<br>
146
147<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.
148 <pre>
149 cd $TOP/xf86-video-vmware
150 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
151 make
152 sudo make install
153 </pre>
154<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
155 <pre>
156 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
157 </pre>
158Then
159 <pre>
160 cd $TOP/vmwgfx
161 make
162 sudo make install
163 sudo cp 00-vmwgfx.rules /etc/udev/rules.d
164 sudo depmod -ae
165 </pre>
Brian Pauld83336c2013-01-28 17:44:46 -0700166
167Note: some distros put DRM kernel drivers in different directories.
168For example, sometimes vmwgfx.ko might be found in
169<code>/lib/modules/{version}/extra/vmwgfx.ko</code> or in
170<code>/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko</code>.
171<p>
172After installing vmwgfx.ko you might want to run the following command to
173check that the new kernel module is in the expected place:
174<pre>
175 find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
176</pre>
177If you see the kernel module listed in more than one place, you may need to
178move things around.
179<p>
180Finally, if you update your kernel you'll probably have to rebuild and
181reinstall the vmwgfx.ko module again.
Brian Paul27915702012-01-13 10:54:22 -0700182</ul>
183
184
185Now try to load the kernel module by issuing
186 <pre>
187 sudo modprobe vmwgfx</pre>
188Then type
189 <pre>
190 dmesg</pre>
191to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
192
193<p>
194Then restart the Xserver (or reboot).
195The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
196should now have been replaced with lines starting with "vmwgfx", indicating that
197the new Xorg driver is in use.
198</p>
199
200
201<h2>Running OpenGL Programs</h2>
202
203<p>
204In a shell, run 'glxinfo' and look for the following to verify that the
205driver is working:
206</p>
207
208<pre>
209OpenGL vendor string: VMware, Inc.
210OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
211OpenGL version string: 2.1 Mesa 8.0
212</pre>
213
Andreas Bolldf2be222012-06-12 09:05:22 +0200214<p>
Brian Paul27915702012-01-13 10:54:22 -0700215If you don't see this, try setting this environment variable:
216 <pre>
217 export LIBGL_DEBUG=verbose</pre>
Andreas Bolldf2be222012-06-12 09:05:22 +0200218<p>
Brian Paul27915702012-01-13 10:54:22 -0700219then rerun glxinfo and examine the output for error messages.
220</p>
221
Andreas Bollb5da52a2012-09-18 18:57:02 +0200222</div>
Brian Paul27915702012-01-13 10:54:22 -0700223</body>
224</html>