1*61046927SAndroid Build Coastguard WorkerVMware SVGA3D 2*61046927SAndroid Build Coastguard Worker============= 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard WorkerThis page describes how to build, install and use the 5*61046927SAndroid Build Coastguard Worker`VMware <https://www.vmware.com/>`__ guest GL driver (aka the SVGA or 6*61046927SAndroid Build Coastguard WorkerSVGA3D driver) for Linux using the latest source code. This driver gives 7*61046927SAndroid Build Coastguard Workera Linux virtual machine access to the host's GPU for 8*61046927SAndroid Build Coastguard Workerhardware-accelerated 3D. VMware Workstation running on Linux or Windows 9*61046927SAndroid Build Coastguard Workerand VMware Fusion running on MacOS are all supported. 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard WorkerWith VMware Workstation 17 / Fusion 13 releases, OpenGL 4.3 is 12*61046927SAndroid Build Coastguard Workersupported in the guest. This requires 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker- The vmwgfx kernel module version 2.20 or later 15*61046927SAndroid Build Coastguard Worker- The VM needs to be configured to hardware version 20 or later. 16*61046927SAndroid Build Coastguard Worker- MESA 22.0 or later should be installed. 17*61046927SAndroid Build Coastguard Worker 18*61046927SAndroid Build Coastguard WorkerYou can disable GL4.3 support using environment variable SVGA_GL43=0 or 19*61046927SAndroid Build Coastguard Workerlowering hardware version. 20*61046927SAndroid Build Coastguard Worker 21*61046927SAndroid Build Coastguard WorkerMost modern Linux distributions include the SVGA3D driver so end users 22*61046927SAndroid Build Coastguard Workershouldn't be concerned with this information. But if your distributions 23*61046927SAndroid Build Coastguard Workerlacks the driver or you want to update to the latest code these 24*61046927SAndroid Build Coastguard Workerinstructions explain what to do. 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard WorkerComponents 27*61046927SAndroid Build Coastguard Worker---------- 28*61046927SAndroid Build Coastguard Worker 29*61046927SAndroid Build Coastguard WorkerThe components involved in this include: 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker- Linux kernel module: vmwgfx 32*61046927SAndroid Build Coastguard Worker- User-space libdrm library 33*61046927SAndroid Build Coastguard Worker- Mesa/Gallium OpenGL driver: "svga" 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard WorkerAll of these components reside in the guest Linux virtual machine. On 36*61046927SAndroid Build Coastguard Workerthe host, all you're doing is running VMware 37*61046927SAndroid Build Coastguard Worker`Fusion or Workstation <https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion>`__. 38*61046927SAndroid Build Coastguard Worker 39*61046927SAndroid Build Coastguard WorkerPrerequisites 40*61046927SAndroid Build Coastguard Worker------------- 41*61046927SAndroid Build Coastguard Worker 42*61046927SAndroid Build Coastguard Worker- vmwgfx Kernel module version at least 2.20 43*61046927SAndroid Build Coastguard Worker- Ubuntu: For Ubuntu you need to install a number of build 44*61046927SAndroid Build Coastguard Worker dependencies. 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker :: 47*61046927SAndroid Build Coastguard Worker 48*61046927SAndroid Build Coastguard Worker sudo apt-get install autoconf automake libtool flex bison zstd 49*61046927SAndroid Build Coastguard Worker sudo apt-get install build-essential g++ git 50*61046927SAndroid Build Coastguard Worker sudo apt-get install libexpat1-dev libpciaccess-dev \ 51*61046927SAndroid Build Coastguard Worker libpthread-stubs0-dev \ 52*61046927SAndroid Build Coastguard Worker libudev-dev libx11-xcb-dev \ 53*61046927SAndroid Build Coastguard Worker libxcb-dri2-0-dev libxcb-dri3-dev 54*61046927SAndroid Build Coastguard Worker sudo apt-get install libxcb-glx0-dev libxcb-present-dev \ 55*61046927SAndroid Build Coastguard Worker libxcb-shm0-dev libxcb-xfixes0-dev 56*61046927SAndroid Build Coastguard Worker sudo apt-get install libxdamage-dev libxext-dev \ 57*61046927SAndroid Build Coastguard Worker libxfixes-dev libxkbcommon-dev 58*61046927SAndroid Build Coastguard Worker sudo apt-get install libxml2-dev libxrandr-dev \ 59*61046927SAndroid Build Coastguard Worker libxshmfence-dev libxxf86vm-dev 60*61046927SAndroid Build Coastguard Worker sudo apt-get install mesa-utils meson ninja-build \ 61*61046927SAndroid Build Coastguard Worker pkg-config python3-mako python3-setuptools 62*61046927SAndroid Build Coastguard Worker sudo apt-get install x11proto-dri2-dev x11proto-gl-dev \ 63*61046927SAndroid Build Coastguard Worker xutils-dev libglvnd-dev 64*61046927SAndroid Build Coastguard Worker 65*61046927SAndroid Build Coastguard WorkerDepending on your Linux distribution, other packages may be needed. Meson 66*61046927SAndroid Build Coastguard Workershould tell you what's missing. 67*61046927SAndroid Build Coastguard Worker 68*61046927SAndroid Build Coastguard WorkerGetting the Latest Source Code 69*61046927SAndroid Build Coastguard Worker------------------------------ 70*61046927SAndroid Build Coastguard Worker 71*61046927SAndroid Build Coastguard WorkerBegin by saving your current directory location: 72*61046927SAndroid Build Coastguard Worker 73*61046927SAndroid Build Coastguard Worker:: 74*61046927SAndroid Build Coastguard Worker 75*61046927SAndroid Build Coastguard Worker export TOP=$PWD 76*61046927SAndroid Build Coastguard Worker 77*61046927SAndroid Build Coastguard Worker 78*61046927SAndroid Build Coastguard Worker- Mesa/Gallium main branch. This code is used to build libGL, and the 79*61046927SAndroid Build Coastguard Worker direct rendering svga driver for libGL, vmwgfx_dri.so, and the X 80*61046927SAndroid Build Coastguard Worker acceleration library libxatracker.so.x.x.x. 81*61046927SAndroid Build Coastguard Worker 82*61046927SAndroid Build Coastguard Worker :: 83*61046927SAndroid Build Coastguard Worker 84*61046927SAndroid Build Coastguard Worker git clone https://gitlab.freedesktop.org/mesa/mesa.git 85*61046927SAndroid Build Coastguard Worker 86*61046927SAndroid Build Coastguard Worker 87*61046927SAndroid Build Coastguard Worker- libdrm, a user-space library that interfaces with DRM. Most 88*61046927SAndroid Build Coastguard Worker distributions ship with this but it's safest to install a newer 89*61046927SAndroid Build Coastguard Worker version. To get the latest code from Git: 90*61046927SAndroid Build Coastguard Worker 91*61046927SAndroid Build Coastguard Worker :: 92*61046927SAndroid Build Coastguard Worker 93*61046927SAndroid Build Coastguard Worker git clone https://gitlab.freedesktop.org/mesa/drm.git 94*61046927SAndroid Build Coastguard Worker 95*61046927SAndroid Build Coastguard Worker 96*61046927SAndroid Build Coastguard WorkerBuilding the Code 97*61046927SAndroid Build Coastguard Worker----------------- 98*61046927SAndroid Build Coastguard Worker 99*61046927SAndroid Build Coastguard Worker- Determine where the GL-related libraries reside on your system and 100*61046927SAndroid Build Coastguard Worker set the LIBDIR environment variable accordingly. 101*61046927SAndroid Build Coastguard Worker 102*61046927SAndroid Build Coastguard Worker For Ubuntu systems: 103*61046927SAndroid Build Coastguard Worker 104*61046927SAndroid Build Coastguard Worker :: 105*61046927SAndroid Build Coastguard Worker 106*61046927SAndroid Build Coastguard Worker export LIBDIR=/usr/lib/x86_64-linux-gnu 107*61046927SAndroid Build Coastguard Worker 108*61046927SAndroid Build Coastguard Worker 109*61046927SAndroid Build Coastguard Worker- Build libdrm: 110*61046927SAndroid Build Coastguard Worker 111*61046927SAndroid Build Coastguard Worker :: 112*61046927SAndroid Build Coastguard Worker 113*61046927SAndroid Build Coastguard Worker cd $TOP/drm 114*61046927SAndroid Build Coastguard Worker meson builddir --prefix=/usr --libdir=${LIBDIR} 115*61046927SAndroid Build Coastguard Worker meson compile -C builddir 116*61046927SAndroid Build Coastguard Worker sudo meson install -C builddir 117*61046927SAndroid Build Coastguard Worker 118*61046927SAndroid Build Coastguard Worker 119*61046927SAndroid Build Coastguard Worker- Build Mesa: 120*61046927SAndroid Build Coastguard Worker 121*61046927SAndroid Build Coastguard Worker :: 122*61046927SAndroid Build Coastguard Worker 123*61046927SAndroid Build Coastguard Worker cd $TOP/mesa 124*61046927SAndroid Build Coastguard Worker meson builddir -Dvulkan-drivers= -Dgallium-drivers=svga -Ddri-drivers= -Dglvnd=enabled -Dglvnd-vendor-name=mesa 125*61046927SAndroid Build Coastguard Worker 126*61046927SAndroid Build Coastguard Worker meson compile -C builddir 127*61046927SAndroid Build Coastguard Worker sudo meson install -C builddir 128*61046927SAndroid Build Coastguard Worker 129*61046927SAndroid Build Coastguard Worker 130*61046927SAndroid Build Coastguard Worker Note that you may have to install other packages that Mesa depends 131*61046927SAndroid Build Coastguard Worker upon if they're not installed in your system. You should be told 132*61046927SAndroid Build Coastguard Worker what's missing. 133*61046927SAndroid Build Coastguard Worker 134*61046927SAndroid Build Coastguard Worker The generated vmwgfx_dri.so is used by the OpenGL libraries during direct rendering, and by the X.Org 135*61046927SAndroid Build Coastguard Worker server during accelerated indirect GL rendering. 136*61046927SAndroid Build Coastguard Worker 137*61046927SAndroid Build Coastguard WorkerRunning OpenGL Programs 138*61046927SAndroid Build Coastguard Worker----------------------- 139*61046927SAndroid Build Coastguard Worker 140*61046927SAndroid Build Coastguard WorkerIn a shell, run 'glxinfo' and look for the following to verify that the 141*61046927SAndroid Build Coastguard Workerdriver is working: 142*61046927SAndroid Build Coastguard Worker 143*61046927SAndroid Build Coastguard Worker:: 144*61046927SAndroid Build Coastguard Worker 145*61046927SAndroid Build Coastguard Worker OpenGL vendor string: VMware, Inc. 146*61046927SAndroid Build Coastguard Worker OpenGL renderer string: SVGA3D; build: RELEASE; 147*61046927SAndroid Build Coastguard Worker OpenGL version string: 4.3 (Compatibility Profile) Mesa 23.0 148*61046927SAndroid Build Coastguard Worker 149*61046927SAndroid Build Coastguard WorkerIf OpenGL 4.3 is not working (you only get OpenGL 4.1): 150*61046927SAndroid Build Coastguard Worker 151*61046927SAndroid Build Coastguard Worker- Make sure the VM uses hardware version 20 or later. 152*61046927SAndroid Build Coastguard Worker- Make sure the vmwgfx kernel module is version 2.20.0 or later. 153*61046927SAndroid Build Coastguard Worker- Check the vmware.log file for errors. 154