Home | History | Annotate | Download | only in docs
      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 <h1>VMware guest GL driver</h1>
     11 
     12 <p>
     13 This page describes how to build, install and use the
     14 <a href="http://www.vmware.com/" target="_parent">VMware</a> guest GL driver
     15 (aka the SVGA or SVGA3D driver) for Linux using the latest source code.
     16 This driver gives a Linux virtual machine access to the host's GPU for
     17 hardware-accelerated 3D.
     18 VMware Workstation running on Linux or Windows and VMware Fusion running on
     19 MacOS are all supported.
     20 </p>
     21 
     22 <p>
     23 End users shouldn't have to go through all these steps once the driver is
     24 included in newer Linux distributions.
     25 </p>
     26 
     27 <p>
     28 For 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">
     32 Driver Overview</a>
     33 <li><a href="http://wiki.x.org/wiki/vmware/vmware3D" target="_parent">
     34 xf86-video-vmware Details</a>
     35 </ul>
     36 
     37 
     38 <h2>Components</h2>
     39 
     40 The 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
     58   sudo apt-get install xserver-xorg-dev x11proto-xinerama-dev libx11-xcb-dev
     59   sudo apt-get install libxcb-glx0-dev libxrender-dev
     60   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
     65   sudo yum install libXrender-devel.i686
     66   sudo yum install automake gcc libtool expat-devel kernel-devel git-core
     67   sudo yum install makedepend flex bison
     68   </pre>
     69 </ul>
     70 
     71 <p>
     72 Depending on your Linux distro, other packages may be needed.
     73 The configure scripts should tell you what's missing.
     74 </p>
     75 
     76 
     77 
     78 <h2>Getting the Latest Source Code</h2>
     79 
     80 Begin 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.
    117 The vmwgfx_dri.so is used by the OpenGL libraries during direct rendering,
    118 and by the Xorg server during accelerated indirect GL rendering.
    119 The libxatracker library is used exclusively by the X server to do render,
    120 copy and video acceleration:
    121 <br>
    122 The following configure options doesn't build the EGL system.
    123 <br>
    124 As before, if you're on a 32-bit system, you should skip the --libdir
    125 configure 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 
    133 Note that you may have to install other packages that Mesa depends upon
    134 if 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>
    149 Then 
    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 
    160 Now try to load the kernel module by issuing
    161   <pre>
    162   sudo modprobe vmwgfx</pre>
    163 Then type 
    164   <pre>
    165   dmesg</pre>
    166 to watch the debug output. It should contain a number of lines prefixed with "[vmwgfx]". 
    167 
    168 <p>
    169 Then restart the Xserver (or reboot).
    170 The lines starting with "vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log
    171 should now have been replaced with lines starting with "vmwgfx", indicating that
    172 the new Xorg driver is in use. 
    173 </p>
    174 
    175 
    176 <h2>Running OpenGL Programs</h2>
    177 
    178 <p>
    179 In a shell, run 'glxinfo' and look for the following to verify that the
    180 driver is working:
    181 </p>
    182 
    183 <pre>
    184 OpenGL vendor string: VMware, Inc.
    185 OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
    186 OpenGL version string: 2.1 Mesa 8.0
    187 </pre>
    188 
    189 <p>
    190 If you don't see this, try setting this environment variable:
    191   <pre>
    192   export LIBGL_DEBUG=verbose</pre>
    193 <p>
    194 then rerun glxinfo and examine the output for error messages.
    195 </p>
    196 
    197 </body>
    198 </html>
    199