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