Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

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