2012-06-12 08:05:03 +01:00
<!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 >
2012-01-13 17:54:22 +00:00
< body >
< h1 > VMware guest GL driver< / h1 >
< p >
2012-02-10 01:06:06 +00:00
This page describes how to build, install and use the
< a href = "http://www.vmware.com/" target = "_parent" > VMware< / a > guest GL driver
2012-01-13 17:54:22 +00:00
(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 >
End users shouldn't have to go through all these steps once the driver is
included in newer Linux distributions.
< / p >
2012-01-13 20:45:58 +00:00
< 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" target = "_parent" >
Driver Overview< / a >
< li > < a href = "http://wiki.x.org/wiki/vmware/vmware3D" target = "_parent" >
xf86-video-vmware Details< / a >
< / ul >
2012-01-13 17:54:22 +00:00
< 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 >
< 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
2012-01-16 16:59:20 +00:00
sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
sudo apt-get install libxcb-glx0-dev libxrender-dev
2012-01-13 17:54:22 +00:00
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
2012-01-16 16:59:20 +00:00
sudo yum install libXrender-devel.i686
2012-01-13 17:54:22 +00:00
sudo yum install automake gcc libtool expat-devel kernel-devel git-core
2012-01-16 16:59:20 +00:00
sudo yum install makedepend flex bison
2012-01-13 17:54:22 +00:00
< / 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 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:
< 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 > 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.
< pre >
cd $TOP/drm
./autogen.sh --prefix=/usr --enable-vmwgfx-experimental-api --libdir=/usr/lib64
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.
< br >
As before, if you're on a 32-bit system, you should skip the --libdir
configure option.
< pre >
cd $TOP/mesa
./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa
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. If you're building for a 32-bit system, you will not be needing the --libdir=/usr/lib64 option to autogen.
< pre >
cd $TOP/xf86-video-vmware
./autogen.sh --prefix=/usr --libdir=/usr/lib64
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 >
Then
< pre >
cd $TOP/vmwgfx
make
sudo make install
sudo cp 00-vmwgfx.rules /etc/udev/rules.d
sudo depmod -ae
< / pre >
< / 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 >
2012-06-12 08:05:22 +01:00
< p >
2012-01-13 17:54:22 +00:00
If you don't see this, try setting this environment variable:
< pre >
export LIBGL_DEBUG=verbose< / pre >
2012-06-12 08:05:22 +01:00
< p >
2012-01-13 17:54:22 +00:00
then rerun glxinfo and examine the output for error messages.
< / p >
< / body >
< / html >