xref: /aosp_15_r20/external/mesa3d/docs/drivers/svga3d.rst (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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