VMware guest GL driver
+VMware SVGA3D Guest Driver
This page describes how to build, install and use the -VMware guest GL driver +VMware 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. @@ -30,6 +30,7 @@ MacOS are all supported. With the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3 is supported in the guest. This requires: +
- The VM is configured for virtual hardware version 12.
- The host OS, GPU and graphics driver supports DX11 (Windows) or @@ -37,12 +38,28 @@ This requires:
- On Linux, the vmwgfx kernel module must be version 2.9.0 or later.
- A recent version of Mesa with the updated svga gallium driver.
Otherwise, OpenGL 2.1 is supported.
++With the Fall 2018 Workstation 15 / Fusion 11 releases, additional +features are supported in the driver: +
-
+
- Multisample antialiasing (2x, 4x) +
- GL_ARB/AMD_draw_buffers_blend +
- GL_ARB_sample_shading +
- GL_ARB_texture_cube_map_array +
- GL_ARB_texture_gather +
- GL_ARB_texture_query_lod +
- GL_EXT/OES_draw_buffers_indexed +
+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. +
+OpenGL 3.3 support can be disabled by setting the environment variable SVGA_VGPU10=0. @@ -62,9 +79,9 @@ these instructions explain what to do. For more information about the X components see these wiki pages at x.org:
@@ -82,8 +99,8 @@ The components involved in this include:All of these components reside in the guest Linux virtual machine. On the host, all you're doing is running VMware -Workstation or -Fusion. +Workstation or +Fusion.
@@ -95,7 +112,7 @@ On the host, all you're doing is running VMwaresudo 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 @@ -104,14 +121,14 @@ On the host, all you're doing is running VMwaresudo 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 bisonDepending 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.
@@ -126,7 +143,7 @@ Begin by saving your current directory location:
- 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.
- git clone git://anongit.freedesktop.org/git/mesa/mesa + git clone https://gitlab.freedesktop.org/mesa/mesa.git
- 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.
@@ -136,7 +153,7 @@ Begin by saving your current directory location: Most distros ship with this but it's safest to install a newer version. To get the latest code from git:
- git clone git://anongit.freedesktop.org/git/mesa/drm + git clone https://gitlab.freedesktop.org/mesa/drm.git
- xf86-video-vmware. The chainloading driver, vmware_drv.so, the legacy driver vmwlegacy_drv.so, and the vmwgfx driver vmwgfx_drv.so.
@@ -148,54 +165,91 @@ To get the latest code from git:
Building the Code
-
-
- 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. +
-
+
+Determine where the GL-related libraries reside on your system and set +the LIBDIR environment variable accordingly. +
+For 32-bit Ubuntu systems: ++ export LIBDIR=/usr/lib/i386-linux-gnu +
+For 64-bit Ubuntu systems: ++ export LIBDIR=/usr/lib/x86_64-linux-gnu +
+For 32-bit Fedora systems: ++ export LIBDIR=/usr/lib +
+For 64-bit Fedora systems: ++ export LIBDIR=/usr/lib64 +
+ +
+
+ - Build libdrm:
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
- - Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so xorg driver, the X acceleration library libxatracker. +
-
+
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: -
+ The following configure options doesn't build the EGL system. -
+
-As before, if you're on a 32-bit system, you should skip the --libdir -configure option.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
+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. -
-
-
+ - 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. +
- 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.
cd $TOP/xf86-video-vmware - ./autogen.sh --prefix=/usr --libdir=/usr/lib64 + ./autogen.sh --prefix=/usr --libdir=${LIBDIR} make sudo make install
+ - vmwgfx kernel module. First make sure that any old version of this kernel module is removed from the system by issuing
-
+
+If you're using a Ubuntu OS: +sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko* -
-Then -+
+Build and install: +cd $TOP/vmwgfx make sudo make install - sudo cp 00-vmwgfx.rules /etc/udev/rules.d - sudo depmod -ae -
+ sudo depmod -a ++ sudo update-initramfs -u +
+If you're using a Fedora OS: ++ sudo dracut --force +
+Add 'vmwgfx' to the /etc/modules file: ++ echo vmwgfx | sudo tee -a /etc/modules +
Note: some distros put DRM kernel drivers in different directories. For example, sometimes vmwgfx.ko might be found in @@ -260,7 +314,7 @@ If OpenGL 3.3 is not working (you only get OpenGL 2.1): - Make sure the vmwgfx kernel module is version 2.9.0 or later.
- Check the vmware.log file for errors.
- Run 'dmesg | grep vmwgfx' and look for "DX: yes". - +