302 lines
8.5 KiB
HTML
302 lines
8.5 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
<title>VMware guest GL driver</title>
|
|
<link rel="stylesheet" type="text/css" href="mesa.css">
|
|
</head>
|
|
<body>
|
|
|
|
<div class="header">
|
|
<h1>The Mesa 3D Graphics Library</h1>
|
|
</div>
|
|
|
|
<iframe src="contents.html"></iframe>
|
|
<div class="content">
|
|
|
|
<h1>VMware guest GL driver</h1>
|
|
|
|
<p>
|
|
This page describes how to build, install and use the
|
|
<a href="http://www.vmware.com/">VMware</a> guest GL driver
|
|
(aka the SVGA or SVGA3D driver) for Linux using the latest source code.
|
|
This driver gives a Linux virtual machine access to the host's GPU for
|
|
hardware-accelerated 3D.
|
|
VMware Workstation running on Linux or Windows and VMware Fusion running on
|
|
MacOS are all supported.
|
|
</p>
|
|
|
|
<p>
|
|
With the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3
|
|
is supported in the guest.
|
|
This requires:
|
|
<ul>
|
|
<li>The VM is configured for virtual hardware version 12.
|
|
<li>The host OS, GPU and graphics driver supports DX11 (Windows) or
|
|
OpenGL 4.0 (Linux, Mac)
|
|
<li>On Linux, the vmwgfx kernel module must be version 2.9.0 or later.
|
|
<li>A recent version of Mesa with the updated svga gallium driver.
|
|
</ul>
|
|
</p>
|
|
|
|
<p>
|
|
Otherwise, OpenGL 2.1 is supported.
|
|
</p>
|
|
|
|
<p>
|
|
OpenGL 3.3 support can be disabled by setting the environment variable
|
|
SVGA_VGPU10=0.
|
|
You will then have OpenGL 2.1 support.
|
|
This may be useful to work around application bugs (such as incorrect use
|
|
of the OpenGL 3.x core profile).
|
|
</p>
|
|
|
|
<p>
|
|
Most modern Linux distros include the SVGA3D driver so end users shouldn't
|
|
be concerned with this information.
|
|
But if your distro lacks the driver or you want to update to the latest code
|
|
these instructions explain what to do.
|
|
</p>
|
|
|
|
<p>
|
|
For more information about the X components see these wiki pages at x.org:
|
|
</p>
|
|
<ul>
|
|
<li><a href="http://wiki.x.org/wiki/vmware">
|
|
Driver Overview</a>
|
|
<li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
|
|
xf86-video-vmware Details</a>
|
|
</ul>
|
|
|
|
|
|
<h2>Components</h2>
|
|
|
|
The components involved in this include:
|
|
<ul>
|
|
<li>Linux kernel module: vmwgfx
|
|
<li>X server 2D driver: xf86-video-vmware
|
|
<li>User-space libdrm library
|
|
<li>Mesa/gallium OpenGL driver: "svga"
|
|
</ul>
|
|
|
|
<p>
|
|
All of these components reside in the guest Linux virtual machine.
|
|
On the host, all you're doing is running VMware
|
|
<a href="http://www.vmware.com/products/workstation/">Workstation</a> or
|
|
<a href="http://www.vmware.com/products/fusion/">Fusion</a>.
|
|
</p>
|
|
|
|
|
|
<h2>Prerequisites</h2>
|
|
|
|
<ul>
|
|
<li>Kernel version at least 2.6.25
|
|
<li>Xserver version at least 1.7
|
|
<li>Ubuntu: For ubuntu you need to install a number of build dependencies.
|
|
<pre>
|
|
sudo apt-get install git-core
|
|
sudo apt-get install automake libtool libpthread-stubs0-dev
|
|
sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
|
|
sudo apt-get install libxcb-glx0-dev libxrender-dev
|
|
sudo apt-get build-dep libgl1-mesa-dri libxcb-glx0-dev
|
|
</pre>
|
|
<li>Fedora: For Fedora you also need to install a number of build dependencies.
|
|
<pre>
|
|
sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
|
|
sudo yum install libXrender-devel.i686
|
|
sudo yum install automake gcc libtool expat-devel kernel-devel git-core
|
|
sudo yum install makedepend flex bison
|
|
</pre>
|
|
</ul>
|
|
|
|
<p>
|
|
Depending on your Linux distro, other packages may be needed.
|
|
The configure scripts should tell you what's missing.
|
|
</p>
|
|
|
|
|
|
|
|
<h2>Getting the Latest Source Code</h2>
|
|
|
|
Begin by saving your current directory location:
|
|
<pre>
|
|
export TOP=$PWD
|
|
</pre>
|
|
|
|
<ul>
|
|
<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.
|
|
<pre>
|
|
git clone git://anongit.freedesktop.org/git/mesa/mesa
|
|
</pre>
|
|
<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.
|
|
<pre>
|
|
git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
|
|
</pre>
|
|
<li>libdrm, a user-space library that interfaces with drm.
|
|
Most distros ship with this but it's safest to install a newer version.
|
|
To get the latest code from git:
|
|
<pre>
|
|
git clone git://anongit.freedesktop.org/git/mesa/drm
|
|
</pre>
|
|
<li>xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
|
|
<pre>
|
|
git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
|
|
</pre>
|
|
</ul>
|
|
|
|
|
|
<h2>Building the Code</h2>
|
|
|
|
<ul>
|
|
<li>
|
|
Determine where the GL-related libraries reside on your system and set
|
|
the LIBDIR environment variable accordingly.
|
|
<br><br>
|
|
For 32-bit Ubuntu systems:
|
|
<pre>
|
|
export LIBDIR=/usr/lib/i386-linux-gnu
|
|
</pre>
|
|
For 64-bit Ubuntu systems:
|
|
<pre>
|
|
export LIBDIR=/usr/lib/x86_64-linux-gnu
|
|
</pre>
|
|
For 32-bit Fedora systems:
|
|
<pre>
|
|
export LIBDIR=/usr/lib
|
|
</pre>
|
|
For 64-bit Fedora systems:
|
|
<pre>
|
|
export LIBDIR=/usr/lib64
|
|
</pre>
|
|
|
|
</li>
|
|
|
|
<li>Build libdrm:
|
|
<pre>
|
|
cd $TOP/drm
|
|
./autogen.sh --prefix=/usr --libdir=${LIBDIR}
|
|
make
|
|
sudo make install
|
|
</pre>
|
|
<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
|
|
The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
|
|
and by the Xorg server during accelerated indirect GL rendering.
|
|
The libxatracker library is used exclusively by the X server to do render,
|
|
copy and video acceleration:
|
|
<br>
|
|
The following configure options doesn't build the EGL system.
|
|
<pre>
|
|
cd $TOP/mesa
|
|
./autogen.sh --prefix=/usr --libdir=${LIBDIR} --with-gallium-drivers=svga --with-dri-drivers=swrast --enable-xa --disable-dri3 --enable-glx-tls
|
|
make
|
|
sudo make install
|
|
</pre>
|
|
|
|
Note that you may have to install other packages that Mesa depends upon
|
|
if they're not installed in your system. You should be told what's missing.
|
|
<br>
|
|
<br>
|
|
|
|
<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.
|
|
<pre>
|
|
cd $TOP/xf86-video-vmware
|
|
./autogen.sh --prefix=/usr --libdir=${LIBDIR}
|
|
make
|
|
sudo make install
|
|
</pre>
|
|
|
|
<li>vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
|
|
<pre>
|
|
sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
|
|
</pre>
|
|
Build and install:
|
|
<pre>
|
|
cd $TOP/vmwgfx
|
|
make
|
|
sudo make install
|
|
sudo depmod -a
|
|
</pre>
|
|
If you're using a Ubuntu OS:
|
|
<pre>
|
|
sudo update-initramfs -u
|
|
</pre>
|
|
If you're using a Fedora OS:
|
|
<pre>
|
|
sudo dracut --force
|
|
</pre>
|
|
Add 'vmwgfx' to the /etc/modules file:
|
|
<pre>
|
|
echo vmwgfx | sudo tee -a /etc/modules
|
|
</pre>
|
|
|
|
Note: some distros put DRM kernel drivers in different directories.
|
|
For example, sometimes vmwgfx.ko might be found in
|
|
<code>/lib/modules/{version}/extra/vmwgfx.ko</code> or in
|
|
<code>/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko</code>.
|
|
<p>
|
|
After installing vmwgfx.ko you might want to run the following command to
|
|
check that the new kernel module is in the expected place:
|
|
<pre>
|
|
find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
|
|
</pre>
|
|
If you see the kernel module listed in more than one place, you may need to
|
|
move things around.
|
|
<p>
|
|
Finally, if you update your kernel you'll probably have to rebuild and
|
|
reinstall the vmwgfx.ko module again.
|
|
</ul>
|
|
|
|
|
|
Now try to load the kernel module by issuing
|
|
<pre>
|
|
sudo modprobe vmwgfx</pre>
|
|
Then type
|
|
<pre>
|
|
dmesg</pre>
|
|
to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]".
|
|
|
|
<p>
|
|
Then restart the Xserver (or reboot).
|
|
The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
|
|
should now have been replaced with lines starting with "vmwgfx", indicating that
|
|
the new Xorg driver is in use.
|
|
</p>
|
|
|
|
|
|
<h2>Running OpenGL Programs</h2>
|
|
|
|
<p>
|
|
In a shell, run 'glxinfo' and look for the following to verify that the
|
|
driver is working:
|
|
</p>
|
|
|
|
<pre>
|
|
OpenGL vendor string: VMware, Inc.
|
|
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
|
|
OpenGL version string: 2.1 Mesa 8.0
|
|
</pre>
|
|
|
|
<p>
|
|
If you don't see this, try setting this environment variable:
|
|
<pre>
|
|
export LIBGL_DEBUG=verbose</pre>
|
|
<p>
|
|
then rerun glxinfo and examine the output for error messages.
|
|
</p>
|
|
|
|
<p>
|
|
If OpenGL 3.3 is not working (you only get OpenGL 2.1):
|
|
</p>
|
|
<ul>
|
|
<li>Make sure the VM uses hardware version 12.
|
|
<li>Make sure the vmwgfx kernel module is version 2.9.0 or later.
|
|
<li>Check the vmware.log file for errors.
|
|
<li>Run 'dmesg | grep vmwgfx' and look for "DX: yes".
|
|
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|