<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>VMware guest GL driver</title>
+ <title>VMware SVGA3D Guest Driver</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<div class="header">
- <h1>The Mesa 3D Graphics Library</h1>
+ The Mesa 3D Graphics Library
</div>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>VMware guest GL driver</h1>
+<h1>VMware SVGA3D Guest Driver</h1>
<p>
This page describes how to build, install and use the
-<a href="http://www.vmware.com/">VMware</a> guest GL driver
+<a href="https://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.
With the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3
is supported in the guest.
This requires:
+</p>
<ul>
<li>The VM is configured for virtual hardware version 12.
<li>The host OS, GPU and graphics driver supports DX11 (Windows) or
<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>
+With the Fall 2018 Workstation 15 / Fusion 11 releases, additional
+features are supported in the driver:
+<ul>
+<li>Multisample antialiasing (2x, 4x)
+<li>GL_ARB/AMD_draw_buffers_blend
+<li>GL_ARB_sample_shading
+<li>GL_ARB_texture_cube_map_array
+<li>GL_ARB_texture_gather
+<li>GL_ARB_texture_query_lod
+<li>GL_EXT/OES_draw_buffers_indexed
+</ul>
+<p>
+This requires version 2.15.0 or later of the vmwgfx kernel module and
+the VM must be configured for hardware version 16 or later.
+</p>
+
<p>
OpenGL 3.3 support can be disabled by setting the environment variable
SVGA_VGPU10=0.
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">
+<li><a href="https://wiki.x.org/wiki/vmware">
Driver Overview</a>
-<li><a href="http://wiki.x.org/wiki/vmware/vmware3D">
+<li><a href="https://wiki.x.org/wiki/vmware/vmware3D">
xf86-video-vmware Details</a>
</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>.
+<a href="https://www.vmware.com/products/workstation/">Workstation</a> or
+<a href="https://www.vmware.com/products/fusion/">Fusion</a>.
</p>
<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 ninja-build meson 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>
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 ninja-build meson gcc 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.
+Meson should tell you what's missing.
</p>
<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
+ git clone https://gitlab.freedesktop.org/mesa/mesa.git
</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>
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
+ git clone https://gitlab.freedesktop.org/mesa/drm.git
</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>
<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.
+<li>
+<p>
+Determine where the GL-related libraries reside on your system and set
+the LIBDIR environment variable accordingly.
+</p>
+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=/usr/lib64
- make
- sudo make install
+ meson builddir --prefix=/usr --libdir=${LIBDIR}
+ ninja -C builddir
+ sudo ninja -C builddir install
</pre>
-<li>Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker.
+<li>
+<p>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>
+</p>
+
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 --disable-dri3
- make
- sudo make install
+ meson builddir --prefix=/usr --libdir=${LIBDIR} -Dgallium-drivers=svga -Ddri-drivers=swrast -Dgallium-xa=true -Ddri3=false
+ ninja -C builddir
+ sudo ninja -C builddir install
</pre>
+<p>
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>
+</p>
-<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.
+<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=/usr/lib64
+ ./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>
+<pre>
sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
- </pre>
-Then
- <pre>
+</pre>
+Build and install:
+<pre>
cd $TOP/vmwgfx
make
sudo make install
- sudo cp 00-vmwgfx.rules /etc/udev/rules.d
- sudo depmod -ae
- </pre>
+ 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
<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".
-
+</ul>
</div>
</body>