blob: 1fe4a059fa922d4e7812cfa54fc01e503a7acd26 [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
Brian Paul27915702012-01-13 10:54:22 -070010<h1>VMware guest GL driver</h1>
11
12<p>
Brian Paul7028e6d2012-02-09 18:06:06 -070013This page describes how to build, install and use the
14<a href="http://www.vmware.com/" target="_parent">VMware</a> guest GL driver
Brian Paul27915702012-01-13 10:54:22 -070015(aka the SVGA or SVGA3D driver) for Linux using the latest source code.
16This driver gives a Linux virtual machine access to the host's GPU for
17hardware-accelerated 3D.
18VMware Workstation running on Linux or Windows and VMware Fusion running on
19MacOS are all supported.
20</p>
21
22<p>
23End users shouldn't have to go through all these steps once the driver is
24included in newer Linux distributions.
25</p>
26
Brian Paul548526f2012-01-13 13:45:58 -070027<p>
28For more information about the X components see these wiki pages at x.org:
29</p>
30<ul>
31<li><a href="http://wiki.x.org/wiki/vmware" target="_parent">
32Driver Overview</a>
33<li><a href="http://wiki.x.org/wiki/vmware/vmware3D" target="_parent">
34xf86-video-vmware Details</a>
35</ul>
Brian Paul27915702012-01-13 10:54:22 -070036
37
38<h2>Components</h2>
39
40The components involved in this include:
41<ul>
42<li>Linux kernel module: vmwgfx
43<li>X server 2D driver: xf86-video-vmware
44<li>User-space libdrm library
45<li>Mesa/gallium OpenGL driver: "svga"
46</ul>
47
48
49<h2>Prerequisites</h2>
50
51<ul>
52<li>Kernel version at least 2.6.25
53<li>Xserver version at least 1.7
54<li>Ubuntu: For ubuntu you need to install a number of build dependencies.
55 <pre>
56 sudo apt-get install git-core
57 sudo apt-get install automake libtool libpthread-stubs0-dev
Brian Paul481011f2012-01-16 09:59:20 -070058 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
59 sudo apt-get install libxcb-glx0-dev libxrender-dev
Brian Paul27915702012-01-13 10:54:22 -070060 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
61 </pre>
62<li>Fedora: For Fedora you also need to install a number of build dependencies.
63 <pre>
64 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
Brian Paul481011f2012-01-16 09:59:20 -070065 sudo yum install libXrender-devel.i686
Brian Paul27915702012-01-13 10:54:22 -070066 sudo yum install automake gcc libtool expat-devel kernel-devel git-core
Brian Paul481011f2012-01-16 09:59:20 -070067 sudo yum install makedepend flex bison
Brian Paul27915702012-01-13 10:54:22 -070068 </pre>
69</ul>
70
71<p>
72Depending on your Linux distro, other packages may be needed.
73The configure scripts should tell you what's missing.
74</p>
75
76
77
78<h2>Getting the Latest Source Code</h2>
79
80Begin by saving your current directory location:
81 <pre>
82 export TOP=$PWD
83 </pre>
84
85<ul>
86<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.
87 <pre>
88 git clone git://anongit.freedesktop.org/git/mesa/mesa
89 </pre>
90<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.
91 <pre>
92 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
93 </pre>
94
95<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:
96 <pre>
97 git clone git://anongit.freedesktop.org/git/mesa/drm
98 </pre>
99<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
100 <pre>
101 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
102 </pre>
103</ul>
104
105
106<h2>Building the Code</h2>
107
108<ul>
109<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.
110 <pre>
111 cd $TOP/drm
112 ./autogen.sh --prefix=/usr --enable-vmwgfx-experimental-api --libdir=/usr/lib64
113 make
114 sudo make install
115 </pre>
116<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
117The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
118and by the Xorg server during accelerated indirect GL rendering.
119The libxatracker library is used exclusively by the X server to do render,
120copy and video acceleration:
121<br>
122The following configure options doesn't build the EGL system.
123<br>
124As before, if you're on a 32-bit system, you should skip the --libdir
125configure option.
126 <pre>
127 cd $TOP/mesa
128 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa
129 make
130 sudo make install
131 </pre>
132
133Note that you may have to install other packages that Mesa depends upon
134if they're not installed in your system. You should be told what's missing.
135<br>
136<br>
137
138<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.
139 <pre>
140 cd $TOP/xf86-video-vmware
141 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
142 make
143 sudo make install
144 </pre>
145<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
146 <pre>
147 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
148 </pre>
149Then
150 <pre>
151 cd $TOP/vmwgfx
152 make
153 sudo make install
154 sudo cp 00-vmwgfx.rules /etc/udev/rules.d
155 sudo depmod -ae
156 </pre>
157</ul>
158
159
160Now try to load the kernel module by issuing
161 <pre>
162 sudo modprobe vmwgfx</pre>
163Then type
164 <pre>
165 dmesg</pre>
166to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
167
168<p>
169Then restart the Xserver (or reboot).
170The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
171should now have been replaced with lines starting with "vmwgfx", indicating that
172the new Xorg driver is in use.
173</p>
174
175
176<h2>Running OpenGL Programs</h2>
177
178<p>
179In a shell, run 'glxinfo' and look for the following to verify that the
180driver is working:
181</p>
182
183<pre>
184OpenGL vendor string: VMware, Inc.
185OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
186OpenGL version string: 2.1 Mesa 8.0
187</pre>
188
Andreas Bolldf2be222012-06-12 09:05:22 +0200189<p>
Brian Paul27915702012-01-13 10:54:22 -0700190If you don't see this, try setting this environment variable:
191 <pre>
192 export LIBGL_DEBUG=verbose</pre>
Andreas Bolldf2be222012-06-12 09:05:22 +0200193<p>
Brian Paul27915702012-01-13 10:54:22 -0700194then rerun glxinfo and examine the output for error messages.
195</p>
196
197
198
199</body>
200</html>