cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
230 lines
7.0 KiB
ReStructuredText
230 lines
7.0 KiB
ReStructuredText
VMware SVGA3D
|
|
=============
|
|
|
|
This page describes how to build, install and use the
|
|
`VMware <https://www.vmware.com/>`__ 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. VMware Workstation running on Linux or Windows
|
|
and VMware Fusion running on MacOS are all supported.
|
|
|
|
With VMware Workstation 17 / Fusion 13 releases, OpenGL 4.3 is
|
|
supported in the guest. This requires
|
|
|
|
- The vmwgfx kernel module version 2.20 or later
|
|
- The VM needs to be configured to hardware version 20 or later.
|
|
- MESA 22.0 or later should be installed.
|
|
|
|
You can disable GL4.3 support using environment variable SVGA_GL43=0 or
|
|
lowering hardware version.
|
|
|
|
Most modern Linux distributions include the SVGA3D driver so end users
|
|
shouldn't be concerned with this information. But if your distributions
|
|
lacks the driver or you want to update to the latest code these
|
|
instructions explain what to do.
|
|
|
|
Getting VMware Workstation Pro for Linux
|
|
----------------------------------------
|
|
|
|
Before you can run Mesa on an SVGA3D device in a VM, you need to actually have
|
|
a hypervisor that supports SVGA3D in its entirety. Such hypervisors are VMware's
|
|
Workstaton Pro (Linux, Windows) and Fusion (macOS). Here we list the steps to
|
|
get VMware Workstation Pro running on Linux.
|
|
|
|
- Step 1: Find VMware Workstation Pro to download
|
|
|
|
- Step 1.1: Create a broadcom.com account
|
|
|
|
* Go to https://support.broadcom.com and click "log in" at the top-right
|
|
* Create an account
|
|
* Go to your email to verify your account
|
|
* Log in to your account
|
|
|
|
- Step 1.2: Once logged in, navigate to the Free Downloads section
|
|
|
|
* Follow link to Free Downloads section https://support.broadcom.com/group/ecx/free-downloads
|
|
|
|
- Step 1.3: Select your VMware Workstation Pro release
|
|
|
|
* In the search box type "VMware Workstation Pro", wait for results to show up
|
|
* Select "VMware Workstation Pro"
|
|
* Select version 17 (as of this writing) platform -- Linux or Windows
|
|
* Select the desired full version -- 17.6.3 as of this writing
|
|
|
|
- Step 1.4: Accept the Terms & Conditions and download
|
|
|
|
* There's a checkbox for this above the file list - tick it
|
|
* Click the cloud-download button-icon for the Linux version at the bottom of the list
|
|
* You will now be prompted to enter your full name and address for export controls
|
|
* It will probably return you to the base support page now, so repeat steps 1.2, 1.3, 1.4
|
|
* You are now downloading the vmware workstation bundle
|
|
|
|
- Step 2: Install VMware Workstation Pro
|
|
|
|
* It is advisable to uninstall any previous version first; check for potentially installed *vmware-workstation*
|
|
|
|
::
|
|
|
|
sudo ./VMware-Workstation-Full-17.6.3-24583834.x86_64.bundle -l
|
|
|
|
* If present, proceed to uninstall it; make sure to keep your old configuration if asked!
|
|
|
|
::
|
|
|
|
sudo ./VMware-Workstation-Full-17.6.3-24583834.x86_64.bundle --uninstall-component=vmware-workstation
|
|
|
|
* Provide kernel headers for Workstation kernel modules built by the bundle setup script
|
|
* On Ubuntu
|
|
|
|
::
|
|
|
|
sudo apt-get install linux-headers-$(uname -r)
|
|
|
|
* On Fedora
|
|
|
|
::
|
|
|
|
sudo dnf install linux-devel-$(uname -r)
|
|
|
|
* Run the following to install the package
|
|
|
|
::
|
|
|
|
sudo ./VMware-Workstation-Full-17.6.3-24583834.x86_64.bundle
|
|
|
|
- Step 3: Run VMware Workstation Pro
|
|
|
|
::
|
|
|
|
/usr/bin/vmware
|
|
|
|
|
|
Components
|
|
----------
|
|
|
|
The components involved in this include:
|
|
|
|
- Linux kernel module: vmwgfx
|
|
- User-space libdrm library
|
|
- Mesa/Gallium OpenGL driver: "svga"
|
|
|
|
All of these components reside in the guest Linux virtual machine. On
|
|
the host, all you're doing is running VMware
|
|
`Fusion or Workstation <https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion>`__.
|
|
|
|
Prerequisites
|
|
-------------
|
|
|
|
- vmwgfx Kernel module version at least 2.20
|
|
- Ubuntu: For Ubuntu you need to install a number of build
|
|
dependencies.
|
|
|
|
::
|
|
|
|
sudo apt-get install autoconf automake libtool flex bison zstd
|
|
sudo apt-get install build-essential g++ git
|
|
sudo apt-get install libexpat1-dev libpciaccess-dev \
|
|
libpthread-stubs0-dev \
|
|
libudev-dev libx11-xcb-dev \
|
|
libxcb-dri2-0-dev libxcb-dri3-dev
|
|
sudo apt-get install libxcb-glx0-dev libxcb-present-dev \
|
|
libxcb-shm0-dev libxcb-xfixes0-dev
|
|
sudo apt-get install libxdamage-dev libxext-dev \
|
|
libxfixes-dev libxkbcommon-dev
|
|
sudo apt-get install libxml2-dev libxrandr-dev \
|
|
libxshmfence-dev libxxf86vm-dev
|
|
sudo apt-get install mesa-utils meson ninja-build \
|
|
pkg-config python3-mako python3-setuptools
|
|
sudo apt-get install x11proto-dri2-dev x11proto-gl-dev \
|
|
xutils-dev libglvnd-dev
|
|
|
|
Depending on your Linux distribution, other packages may be needed. Meson
|
|
should tell you what's missing.
|
|
|
|
Getting the Latest Source Code
|
|
------------------------------
|
|
|
|
Begin by saving your current directory location:
|
|
|
|
::
|
|
|
|
export TOP=$PWD
|
|
|
|
|
|
- Mesa/Gallium main 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 https://gitlab.freedesktop.org/mesa/mesa.git
|
|
|
|
|
|
- libdrm, a user-space library that interfaces with DRM. Most
|
|
distributions ship with this but it's safest to install a newer
|
|
version. To get the latest code from Git:
|
|
|
|
::
|
|
|
|
git clone https://gitlab.freedesktop.org/mesa/drm.git
|
|
|
|
|
|
Building the Code
|
|
-----------------
|
|
|
|
- Determine where the GL-related libraries reside on your system and
|
|
set the LIBDIR environment variable accordingly.
|
|
|
|
For Ubuntu systems:
|
|
|
|
::
|
|
|
|
export LIBDIR=/usr/lib/x86_64-linux-gnu
|
|
|
|
|
|
- Build libdrm:
|
|
|
|
::
|
|
|
|
cd $TOP/drm
|
|
meson builddir --prefix=/usr --libdir=${LIBDIR}
|
|
meson compile -C builddir
|
|
sudo meson install -C builddir
|
|
|
|
|
|
- Build Mesa:
|
|
|
|
::
|
|
|
|
cd $TOP/mesa
|
|
meson builddir -Dvulkan-drivers= -Dgallium-drivers=svga -Ddri-drivers= -Dglvnd=enabled -Dglvnd-vendor-name=mesa
|
|
|
|
meson compile -C builddir
|
|
sudo meson install -C builddir
|
|
|
|
|
|
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.
|
|
|
|
The generated vmwgfx_dri.so is used by the OpenGL libraries during direct rendering, and by the X.Org
|
|
server during accelerated indirect GL rendering.
|
|
|
|
Running OpenGL Programs
|
|
-----------------------
|
|
|
|
In a shell, run 'glxinfo' and look for the following to verify that the
|
|
driver is working:
|
|
|
|
::
|
|
|
|
OpenGL vendor string: VMware, Inc.
|
|
OpenGL renderer string: SVGA3D; build: RELEASE;
|
|
OpenGL version string: 4.3 (Compatibility Profile) Mesa 23.0
|
|
|
|
If OpenGL 4.3 is not working (you only get OpenGL 4.1):
|
|
|
|
- Make sure the VM uses hardware version 20 or later.
|
|
- Make sure the vmwgfx kernel module is version 2.20.0 or later.
|
|
- Check the vmware.log file for errors.
|