blob: ac5f03c9c6b967c351ad52fc117e500457214c21 [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.
32</p>
33
Brian Paul548526f2012-01-13 13:45:58 -070034<p>
35For more information about the X components see these wiki pages at x.org:
36</p>
37<ul>
Andreas Bolla73c59b2012-09-18 19:31:28 +020038<li><a href="http://wiki.x.org/wiki/vmware">
Brian Paul548526f2012-01-13 13:45:58 -070039Driver Overview</a>
Andreas Bolla73c59b2012-09-18 19:31:28 +020040<li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
Brian Paul548526f2012-01-13 13:45:58 -070041xf86-video-vmware Details</a>
42</ul>
Brian Paul27915702012-01-13 10:54:22 -070043
44
45<h2>Components</h2>
46
47The components involved in this include:
48<ul>
49<li>Linux kernel module: vmwgfx
50<li>X server 2D driver: xf86-video-vmware
51<li>User-space libdrm library
52<li>Mesa/gallium OpenGL driver: "svga"
53</ul>
54
55
56<h2>Prerequisites</h2>
57
58<ul>
59<li>Kernel version at least 2.6.25
60<li>Xserver version at least 1.7
61<li>Ubuntu: For ubuntu you need to install a number of build dependencies.
62 <pre>
63 sudo apt-get install git-core
64 sudo apt-get install automake libtool libpthread-stubs0-dev
Brian Paul481011f2012-01-16 09:59:20 -070065 sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
66 sudo apt-get install libxcb-glx0-dev libxrender-dev
Brian Paul27915702012-01-13 10:54:22 -070067 sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
68 </pre>
69<li>Fedora: For Fedora you also need to install a number of build dependencies.
70 <pre>
71 sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
Brian Paul481011f2012-01-16 09:59:20 -070072 sudo yum install libXrender-devel.i686
Brian Paul27915702012-01-13 10:54:22 -070073 sudo yum install automake gcc libtool expat-devel kernel-devel git-core
Brian Paul481011f2012-01-16 09:59:20 -070074 sudo yum install makedepend flex bison
Brian Paul27915702012-01-13 10:54:22 -070075 </pre>
76</ul>
77
78<p>
79Depending on your Linux distro, other packages may be needed.
80The configure scripts should tell you what's missing.
81</p>
82
83
84
85<h2>Getting the Latest Source Code</h2>
86
87Begin by saving your current directory location:
88 <pre>
89 export TOP=$PWD
90 </pre>
91
92<ul>
93<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.
94 <pre>
95 git clone git://anongit.freedesktop.org/git/mesa/mesa
96 </pre>
97<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.
98 <pre>
99 git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
100 </pre>
Brian Paul133383f2013-01-15 13:00:09 -0700101<li>libdrm, a user-space library that interfaces with drm.
102Most distros ship with this but it's safest to install a newer version.
103To get the latest code from git:
Brian Paul27915702012-01-13 10:54:22 -0700104 <pre>
105 git clone git://anongit.freedesktop.org/git/mesa/drm
106 </pre>
107<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
108 <pre>
109 git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
110 </pre>
111</ul>
112
113
114<h2>Building the Code</h2>
115
116<ul>
117<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.
118 <pre>
119 cd $TOP/drm
Brian Paul133383f2013-01-15 13:00:09 -0700120 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
Brian Paul27915702012-01-13 10:54:22 -0700121 make
122 sudo make install
123 </pre>
124<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
125The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
126and by the Xorg server during accelerated indirect GL rendering.
127The libxatracker library is used exclusively by the X server to do render,
128copy and video acceleration:
129<br>
130The following configure options doesn't build the EGL system.
131<br>
132As before, if you're on a 32-bit system, you should skip the --libdir
133configure option.
134 <pre>
135 cd $TOP/mesa
136 ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa
137 make
138 sudo make install
139 </pre>
140
141Note that you may have to install other packages that Mesa depends upon
142if they're not installed in your system. You should be told what's missing.
143<br>
144<br>
145
146<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.
147 <pre>
148 cd $TOP/xf86-video-vmware
149 ./autogen.sh --prefix=/usr --libdir=/usr/lib64
150 make
151 sudo make install
152 </pre>
153<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
154 <pre>
155 sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
156 </pre>
157Then
158 <pre>
159 cd $TOP/vmwgfx
160 make
161 sudo make install
162 sudo cp 00-vmwgfx.rules /etc/udev/rules.d
163 sudo depmod -ae
164 </pre>
165</ul>
166
167
168Now try to load the kernel module by issuing
169 <pre>
170 sudo modprobe vmwgfx</pre>
171Then type
172 <pre>
173 dmesg</pre>
174to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
175
176<p>
177Then restart the Xserver (or reboot).
178The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
179should now have been replaced with lines starting with "vmwgfx", indicating that
180the new Xorg driver is in use.
181</p>
182
183
184<h2>Running OpenGL Programs</h2>
185
186<p>
187In a shell, run 'glxinfo' and look for the following to verify that the
188driver is working:
189</p>
190
191<pre>
192OpenGL vendor string: VMware, Inc.
193OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
194OpenGL version string: 2.1 Mesa 8.0
195</pre>
196
Andreas Bolldf2be222012-06-12 09:05:22 +0200197<p>
Brian Paul27915702012-01-13 10:54:22 -0700198If you don't see this, try setting this environment variable:
199 <pre>
200 export LIBGL_DEBUG=verbose</pre>
Andreas Bolldf2be222012-06-12 09:05:22 +0200201<p>
Brian Paul27915702012-01-13 10:54:22 -0700202then rerun glxinfo and examine the output for error messages.
203</p>
204
Andreas Bollb5da52a2012-09-18 18:57:02 +0200205</div>
Brian Paul27915702012-01-13 10:54:22 -0700206</body>
207</html>