Subversion Repositories Kolibri OS

Rev

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