docs: Add GL 4.3 support info in mesa docs
Reviewed-by: Charmaine Lee <charmainel@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20964>
This commit is contained in:
@@ -8,55 +8,27 @@ 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 the August 2015 Workstation 12 / Fusion 8 releases, OpenGL 3.3 is
|
||||
supported in the guest. This requires:
|
||||
With VMware Workstation 17 / Fusion 13 releases, OpenGL 4.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
|
||||
OpenGL 4.0 (Linux, Mac)
|
||||
- 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.
|
||||
- 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.
|
||||
|
||||
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)
|
||||
- :ext:`GL_ARB_draw_buffers_blend` / :ext:`GL_AMD_draw_buffers_blend`
|
||||
- :ext:`GL_ARB_sample_shading`
|
||||
- :ext:`GL_ARB_texture_cube_map_array`
|
||||
- :ext:`GL_ARB_texture_gather`
|
||||
- :ext:`GL_ARB_texture_query_lod`
|
||||
- :ext:`GL_EXT_draw_buffers_indexed` / :ext:`GL_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. You will then have OpenGL 2.1 support. This may be useful
|
||||
to work around application bugs (such as incorrect use of the OpenGL 3.x
|
||||
core profile).
|
||||
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.
|
||||
|
||||
For more information about the X components see these wiki pages at
|
||||
x.org:
|
||||
|
||||
- `Driver Overview <https://wiki.x.org/wiki/vmware>`__
|
||||
- `xf86-video-vmware
|
||||
Details <https://wiki.x.org/wiki/vmware/vmware3D>`__
|
||||
|
||||
Components
|
||||
----------
|
||||
|
||||
The components involved in this include:
|
||||
|
||||
- Linux kernel module: vmwgfx
|
||||
- X server 2D driver: xf86-video-vmware
|
||||
- User-space libdrm library
|
||||
- Mesa/Gallium OpenGL driver: "svga"
|
||||
|
||||
@@ -68,30 +40,28 @@ the host, all you're doing is running VMware
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
- Kernel version at least 2.6.25
|
||||
- Xserver version at least 1.7
|
||||
- vmwgfx Kernel module version at least 2.20
|
||||
- Ubuntu: For Ubuntu you need to install a number of build
|
||||
dependencies.
|
||||
|
||||
::
|
||||
|
||||
sudo apt-get install git-core
|
||||
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
|
||||
|
||||
|
||||
- Fedora: For Fedora you also need to install a number of build
|
||||
dependencies.
|
||||
|
||||
::
|
||||
|
||||
sudo yum install mesa-libGL-devel xorg-x11-server-devel xorg-x11-util-macros
|
||||
sudo yum install libXrender-devel.i686
|
||||
sudo yum install ninja-build meson gcc expat-devel kernel-devel git-core
|
||||
sudo yum install makedepend flex bison
|
||||
|
||||
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.
|
||||
@@ -115,15 +85,6 @@ Begin by saving your current directory location:
|
||||
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.
|
||||
|
||||
::
|
||||
|
||||
git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
|
||||
|
||||
|
||||
- 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:
|
||||
@@ -133,43 +94,18 @@ Begin by saving your current directory location:
|
||||
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.
|
||||
|
||||
::
|
||||
|
||||
git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vmware
|
||||
|
||||
|
||||
Building the Code
|
||||
-----------------
|
||||
|
||||
- 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:
|
||||
For 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:
|
||||
|
||||
@@ -181,19 +117,13 @@ Building the Code
|
||||
sudo ninja -C builddir install
|
||||
|
||||
|
||||
- Build Mesa and the vmwgfx_dri.so driver, the vmwgfx_drv.so X.Org
|
||||
driver, the X acceleration library libxatracker. The vmwgfx_dri.so is
|
||||
used by the OpenGL libraries during direct rendering, and by the X.Org
|
||||
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.
|
||||
- Build Mesa:
|
||||
|
||||
::
|
||||
|
||||
cd $TOP/mesa
|
||||
meson builddir --prefix=/usr --libdir=${LIBDIR} -Dgallium-drivers=svga -Dgallium-xa=enabled -Ddri3=disabled
|
||||
meson builddir -Dvulkan-drivers= -Dgallium-drivers=svga -Ddri-drivers= -Dglvnd=true -Dglvnd-vendor-name=mesa
|
||||
|
||||
ninja -C builddir
|
||||
sudo ninja -C builddir install
|
||||
|
||||
@@ -202,91 +132,8 @@ Building the Code
|
||||
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.
|
||||
|
||||
::
|
||||
|
||||
cd $TOP/xf86-video-vmware
|
||||
./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
|
||||
|
||||
::
|
||||
|
||||
sudo rm /lib/modules/`uname -r`/kernel/drivers/gpu/drm/vmwgfx.ko*
|
||||
|
||||
Build and install:
|
||||
|
||||
::
|
||||
|
||||
cd $TOP/vmwgfx
|
||||
make
|
||||
sudo make install
|
||||
sudo depmod -a
|
||||
|
||||
If you're using a Ubuntu OS:
|
||||
|
||||
::
|
||||
|
||||
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 distributions put DRM kernel drivers in different directories.
|
||||
For example, sometimes vmwgfx.ko might be found in
|
||||
``/lib/modules/{version}/extra/vmwgfx.ko`` or in
|
||||
``/lib/modules/{version}/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko``.
|
||||
|
||||
After installing vmwgfx.ko you might want to run the following
|
||||
command to check that the new kernel module is in the expected place:
|
||||
|
||||
::
|
||||
|
||||
find /lib/modules -name vmwgfx.ko -exec ls -l '{}' \;
|
||||
|
||||
If you see the kernel module listed in more than one place, you may
|
||||
need to move things around.
|
||||
|
||||
Finally, if you update your kernel you'll probably have to rebuild
|
||||
and reinstall the vmwgfx.ko module again.
|
||||
|
||||
Now try to load the kernel module by issuing
|
||||
|
||||
::
|
||||
|
||||
sudo modprobe vmwgfx
|
||||
|
||||
Then type
|
||||
|
||||
::
|
||||
|
||||
dmesg
|
||||
|
||||
to watch the debug output. It should contain a number of lines prefixed
|
||||
with "[vmwgfx]".
|
||||
|
||||
Then restart the Xserver (or reboot). The lines starting with
|
||||
"vmwlegacy" or "VMWARE" in the file /var/log/Xorg.0.log should now have
|
||||
been replaced with lines starting with "vmwgfx", indicating that the new
|
||||
Xorg driver is in use.
|
||||
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
|
||||
-----------------------
|
||||
@@ -297,20 +144,11 @@ driver is working:
|
||||
::
|
||||
|
||||
OpenGL vendor string: VMware, Inc.
|
||||
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
|
||||
OpenGL version string: 2.1 Mesa 8.0
|
||||
OpenGL renderer string: SVGA3D; build: RELEASE;
|
||||
OpenGL version string: 4.3 (Compatibilty Profile) Mesa 23.0
|
||||
|
||||
If you don't see this, try setting this environment variable:
|
||||
If OpenGL 4.3 is not working (you only get OpenGL 4.1):
|
||||
|
||||
::
|
||||
|
||||
export LIBGL_DEBUG=verbose
|
||||
|
||||
then rerun glxinfo and examine the output for error messages.
|
||||
|
||||
If OpenGL 3.3 is not working (you only get OpenGL 2.1):
|
||||
|
||||
- Make sure the VM uses hardware version 12.
|
||||
- Make sure the vmwgfx kernel module is version 2.9.0 or later.
|
||||
- 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.
|
||||
- Run 'dmesg \| grep vmwgfx' and look for "DX: yes".
|
||||
|
Reference in New Issue
Block a user