i965/vec4: Make vec4_visitor::implied_mrf_writes() return zero for sends from GRF.
[mesa.git] / docs / vmware-guest.html
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="http://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 Most modern Linux distros include the SVGA3D driver so end users shouldn't
31 be concerned with this information.
32 But if your distro lacks the driver or you want to update to the latest code
33 these instructions explain what to do.
34 </p>
35
36 <p>
37 For more information about the X components see these wiki pages at x.org:
38 </p>
39 <ul>
40 <li><a href="http://wiki.x.org/wiki/vmware">
41 Driver Overview</a>
42 <li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
43 xf86-video-vmware Details</a>
44 </ul>
45
46
47 <h2>Components</h2>
48
49 The 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
57 <p>
58 All of these components reside in the guest Linux virtual machine.
59 On 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
64
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
74 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
75 sudo apt-get install libxcb-glx0-dev libxrender-dev
76 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
81 sudo yum install libXrender-devel.i686
82 sudo yum install automake gcc libtool expat-devel kernel-devel git-core
83 sudo yum install makedepend flex bison
84 </pre>
85 </ul>
86
87 <p>
88 Depending on your Linux distro, other packages may be needed.
89 The configure scripts should tell you what's missing.
90 </p>
91
92
93
94 <h2>Getting the Latest Source Code</h2>
95
96 Begin 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>
110 <li>libdrm, a user-space library that interfaces with drm.
111 Most distros ship with this but it's safest to install a newer version.
112 To get the latest code from git:
113 <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
129 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
130 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.
134 The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
135 and by the Xorg server during accelerated indirect GL rendering.
136 The libxatracker library is used exclusively by the X server to do render,
137 copy and video acceleration:
138 <br>
139 The following configure options doesn't build the EGL system.
140 <br>
141 As before, if you're on a 32-bit system, you should skip the --libdir
142 configure option.
143 <pre>
144 cd $TOP/mesa
145 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa --disable-dri3
146 make
147 sudo make install
148 </pre>
149
150 Note that you may have to install other packages that Mesa depends upon
151 if 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>
166 Then
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>
174
175 Note: some distros put DRM kernel drivers in different directories.
176 For 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>
180 After installing vmwgfx.ko you might want to run the following command to
181 check that the new kernel module is in the expected place:
182 <pre>
183 find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
184 </pre>
185 If you see the kernel module listed in more than one place, you may need to
186 move things around.
187 <p>
188 Finally, if you update your kernel you'll probably have to rebuild and
189 reinstall the vmwgfx.ko module again.
190 </ul>
191
192
193 Now try to load the kernel module by issuing
194 <pre>
195 sudo modprobe vmwgfx</pre>
196 Then type
197 <pre>
198 dmesg</pre>
199 to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
200
201 <p>
202 Then restart the Xserver (or reboot).
203 The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
204 should now have been replaced with lines starting with "vmwgfx", indicating that
205 the new Xorg driver is in use.
206 </p>
207
208
209 <h2>Running OpenGL Programs</h2>
210
211 <p>
212 In a shell, run 'glxinfo' and look for the following to verify that the
213 driver is working:
214 </p>
215
216 <pre>
217 OpenGL vendor string: VMware, Inc.
218 OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
219 OpenGL version string: 2.1 Mesa 8.0
220 </pre>
221
222 <p>
223 If you don't see this, try setting this environment variable:
224 <pre>
225 export LIBGL_DEBUG=verbose</pre>
226 <p>
227 then rerun glxinfo and examine the output for error messages.
228 </p>
229
230 </div>
231 </body>
232 </html>