Releases: VirtualGL/virtualgl
3.1.1
Assets
- VirtualGL-3.1.1.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 3.0.2.
Support
Code Quality: Stable
Current Support Category: Active
Documentation
User’s Guide for VirtualGL 3.1.1
Release Notes
Significant changes relative to 3.1:
-
The EGL back end now supports OpenGL applications, including ANSYS Fluent, that use multiple X11 Display handles to render to the same GLX drawable.
-
The VirtualGL Faker now works around an issue whereby applications using the GtkGLArea widget with GTK v3.15.2 through v4.3.1 failed with "No available configurations for the given [RGBA] pixel format" if GTK v3.15.2 through v4.3.1 had previously been initialized on the 2D X server without VirtualGL.
-
As required by the EGL spec, the interposed
eglSwapBuffers()
function now flushes the current OpenGL context if the surface being swapped is bound to that context. This fixes a flickering issue that occurred with recent versions of Firefox. -
It is no longer necessary to enable the EGL back end in order to use VirtualGL with 3D applications that use the EGL/X11 API. If the GLX back end is enabled, then the EGL/X11 interposer will now use the 3D X server.
-
Fixed an issue in the VirtualGL Faker that caused random characters and other elements of the Firefox browser window to disappear when the window was resized.
-
Fixed an issue in VirtualGL's
dlopen()
interposer (libdlfaker.so) that interfered with the correct operation of ANGLE (Almost Native Graphics Layer Engine.)
3.1
Assets
- VirtualGL-3.1.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.5.1.
Packaging Changes
- The macOS package is now a universal binary that supports both Intel and Apple silicon CPUs.
Support
Code Quality: Stable
Current Support Category: Active
Documentation
User’s Guide for VirtualGL 3.1
Release Notes
Significant changes relative to 3.1 beta1:
-
Fixed an issue in the EGL back end whereby textures and other OpenGL objects were not automatically destroyed along with the context and drawable in which the objects were created.
-
Added an environment variable (
VGL_EXITFUNCTION
) that, when set to_exit
orabort
, causes the VirtualGL Faker to call the specified function rather thanexit()
when a non-recoverable error occurs. -
Fixed an issue whereby the interposed
eglCreatePlatformWindowSurface()
andeglCreatePlatformWindowSurfaceEXT()
functions incorrectly treated the native window argument as an X window handle rather than a pointer to an X window handle. This caused a segfault in VLC when using the OpenGL video output module. -
vglserver_config
now works properly with SUSE Linux Enterprise/openSUSE Leap 15. -
If the GLX back end is in use, then the interposed
eglGetDisplay()
andeglGetPlatformDisplay()
functions now returnEGL_NO_DISPLAY
rather than throwing a fatal error. This allows applications such as Firefox to fail gracefully or to fall back and use the GLX API if EGL/X11 is unavailable. -
Fixed an issue whereby the VirtualGL Configuration dialog did not pop up if the X keyboard extension was enabled on the 2D X server.
-
The VirtualGL Faker no longer probes the 2D X server for stereo visuals unless the VGL Transport or a transport plugin will be used. Even if the 2D X server has stereo visuals, they will never be used with the X11 and XV Transports. Probing the 2D X server for stereo visuals causes problems with certain OpenGL implementations and with applications, such as Tecplot 360, that include static builds of Mesa. An undocumented environment variable (
VGL_PROBEGLX
) can be used to override the default behavior. -
When using the EGL back end, interposed
XQueryExtension(..., "GLX", ...)
andglXQueryExtension()
function calls now returnFalse
, rather than throwing a fatal error, if the 2D X server does not have a GLX extension. (The EGL back end uses the 2D X server's GLX extension for GLX error handling.) This allows applications, such as Chrome/Chromium, to fail gracefully or use a different API (such as EGL/X11) if the VirtualGL Faker is unable to emulate GLX. -
The VirtualGL Client now runs on Macs with Apple silicon CPUs (without requiring Rosetta 2.)
3.0.90 (3.1 beta1)
Assets
- VirtualGL-3.0.90.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.4.
Support
Code Quality: Beta
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 3.1 (Beta)
Release Notes
Significant changes relative to 3.0.2:
-
The
vglconnect -x
andvglconnect -k
options have been retired in this version of VirtualGL and will continue to be maintained in the 3.0.x branch on a break/fix basis only. Those options, which had been undocumented since VirtualGL 2.6.1, were a throwback to the early days of VirtualGL when SSH was not universally available and SSH X11 forwarding sometimes introduced a performance penalty.vglconnect -x
did not work with most modern operating systems, since most modern operating systems disable X11 TCP connections by default. -
SSL encryption of the VGL Transport has been retired in this version of VirtualGL and will continue to be maintained in the 3.0.x branch on a break/fix basis only. That feature, which had not been included in official VirtualGL packages since VirtualGL 2.1.x, was not widely used. Furthermore, SSL encryption of the VGL Transport had no performance advantages over SSH tunneling on modern systems, and it had some security disadvantages due to its reliance on the RSA key exchange algorithm (which made it incompatible with TLS v1.3.)
-
When using the EGL back end, VirtualGL now supports 3D applications (including recent versions of Google Chrome/Chromium and Mozilla Firefox) that use the EGL/X11 API instead of the GLX API. As of this writing, VirtualGL does not support EGL pixmap surfaces or front buffer/single buffer rendering with EGL window surfaces.
-
On Un*x and Mac clients,
vglconnect
now uses the OpenSSHControlMaster
option to avoid the need to authenticate with the server multiple times when tunneling the VGL Transport through SSH. -
vglconnect
now accepts a new command-line argument (-v
) that, when combined with-s
, causes VirtualGL to be preloaded into all processes launched in the remote shell, thus eliminating the need to invokevglrun
.
3.0.2
Assets
- VirtualGL-3.0.2.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.4.
Packaging Changes
- The RPM packages now contain SHA-256 header and payload digests. This fixes an issue whereby the RPM signatures could not be verified on Red Hat Enterprise Linux with FIPS mode enabled. The RPM packages now require GLIBC 2.17 or later.
Support
Code Quality: Stable
Current Support Category: Maintenance
Documentation
User’s Guide for VirtualGL 3.0.2
Release Notes
Significant changes relative to 3.0.1:
-
Fixed an issue whereby
vglserver_config
failed to unload thenvidia
module when using recent versions of nVidia's proprietary drivers. In some cases, this led to incorrect device permissions for /dev/nvidia* after the display manager was restarted. -
Fixed compilation errors when building with libX11 1.8.x.
-
When using the EGL back end, a GPU can now be specified by an EGL device ID of the form
egl{n}
, where{n}
is a zero-based index, or by a DRI device path. A list of valid EGL device IDs and their associated DRI device paths can be obtained by running/opt/VirtualGL/bin/eglinfo -e
. -
Fixed an issue in the EGL back end whereby
glBindFramebuffer()
, when used to bind the default framebuffer, did not restore the previous draw/read buffer state for the default framebuffer. This issue was known to cause flickering in Webots when rendering a camera view, and it may have affected other applications as well.
3.0.1
Assets
- VirtualGL-3.0.1.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.3.
Support
Code Quality: Stable
Current Support Category: Maintenance
Documentation
User’s Guide for VirtualGL 3.0.1
Release Notes
Significant changes relative to 3.0:
-
GLXSpheres now includes an option (
-si
) that can be used to specify the swap interval via theGLX_EXT_swap_control
andGLX_SGI_swap_control
extensions. -
Fixed an issue in the EGL back end whereby
glXCreateContextAttribsARB()
always returned NULL ifGLX_RENDER_TYPE
was specified in the attribute list. This issue was known to affect JOGL applications but may have affected other applications as well. -
The EGL back end now supports the
GLX_EXT_framebuffer_sRGB
extension, which is necessary for OpenGL 3.0 conformance. This fixes an issue whereby frames rendered by 3D applications using the sRGB color space appeared too dark. -
The VirtualGL Faker now interposes XCB window creation and destruction functions. This fixes an issue whereby, if an X window was created using the XCB API and subsequently attached to an OpenGL context using
glXMake[Context]Current()
, the off-screen buffer and other faker resources associated with that window were not freed until the 3D application exited or closed the X display connection associated with the window. This issue was known to affect Qt5 applications. -
vglserver_config
should now work properly with SDDM if its scripts are installed in /etc/sddm, which is the case when SDDM is installed through EPEL. -
Fixed several issues in the EGL back end that caused OpenGL errors to be generated by the interposed
glXMake*Current()
andglXSwapBuffers()
functions. These OpenGL errors sometimes caused fatal errors when closing Qt applications, and they may have affected other types of applications and use cases as well.
2.6.6 ESR
Extended Support release for project sponsors
Official binaries, source tarball, and change log are available at:
https://github.com/VirtualGL/virtualgl.esr/releases/tag/2.6.6-esr
3.0
Assets
- VirtualGL-3.0.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.2.
Packaging Changes
- Linux/AArch64 RPM and DEB packages are now provided.
- The RPM packages now contain SHA-256 signatures. This fixes an issue whereby the RPM signatures could not be verified on Red Hat Enterprise Linux 9 when using its default crypto policy, which restricts the use of the SHA-1 algorithm.
Support
Code Quality: Stable
Current Support Category: Maintenance
Release Sponsors
This release was made possible via generous financial contributions from:
Documentation
User’s Guide for VirtualGL 3.0
Release Notes
Significant changes relative to 3.0 beta1:
-
Worked around an issue with Red Hat Enterprise Linux 8 and work-alike operating systems whereby, if X11 forwarding was enabled by default in the SSH client,
vglconnect -s
would hang while making a preliminary SSH connection to find a free port on a server running one of those operating systems. -
Fixed an issue in the EGL back end whereby
glReadPixels()
did not work with multisampled drawables. -
Fixed an issue in the EGL back end whereby the
glGet*()
functions sometimes returned an incorrect value forGL_DRAW_BUFFER0
throughGL_DRAW_BUFFER15
if the correct value wasGL_NONE
. -
The VirtualGL Faker now interposes the
glXGetCurrentDisplayEXT()
function, which is part of theGLX_EXT_import_context
extension. (TheGLX_EXT_import_context
extension can be used with the GLX back end if the underlying OpenGL library and 3D X server support the extension and if indirect OpenGL contexts are enabled usingVGL_ALLOWINDIRECT
.) -
Fixed an issue in the EGL back end whereby the
glXChooseFBConfig()
function returned no FB configs if theGLX_DRAWABLE_TYPE
attribute was set toGLX_DONT_CARE
. -
Fixed an issue in the EGL back end whereby the
glXSwapBuffers()
function erroneously swapped the buffers of double-buffered Pixmaps. -
Fixed an issue in the EGL back end that caused the bounding box in 3D Slicer to be displayed on top of the rendered volume when "Display ROI" and depth peeling were both enabled.
-
The EGL back end now supports OpenGL applications that simultaneously make the same GLX drawable current in more than one thread. As a consequence, the EGL back end now requires the
EGL_KHR_no_config_context
andEGL_KHR_surfaceless_context
extensions. -
Fixed an issue in the EGL back end whereby the OpenGL 4.5 and
GL_EXT_direct_state_access
named framebuffer functions did not work properly with the default framebuffer unless it was currently bound. -
Fixed issues in the EGL back end whereby
glGetFramebufferAttachmentParameteriv()
,glGetFramebufferParameteriv(..., GL_DOUBLEBUFFER, ...)
,glGetFramebufferParameteriv(..., GL_STEREO, ...)
, andglGetNamedFramebufferParameteriv()
did not return correct values for the default framebuffer and wherebyglGet*(GL_DOUBLEBUFFER, ...)
andglGet*(GL_STEREO, ...)
did not return correct values for framebuffer objects. -
By default, VirtualGL now generates a 2048-bit RSA key for use with SSL encryption. This fixes an error ("ee key too small") that occurred when attempting to launch the VirtualGL Client on systems configured with a default SSL/TLS security level of 2. A new CMake variable (
VGL_SSLKEYLENGTH
) can be used to restore the behavior of previous releases of VirtualGL (generating a 1024-bit RSA key) or to increase the key length for additional security. -
VirtualGL's built-in SSL encryption feature now works with OpenSSL v1.1.1 and later.
2.6.95 (3.0 rc1)
Assets
- VirtualGL-2.6.95.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.1.
Support
Code Quality: Release Candidate
Current Support Category: EOL
Release Sponsors
This release was made possible via generous financial contributions from:
Documentation
User’s Guide for VirtualGL 3.0 (Release Candidate)
Release Notes
Significant changes relative to 3.0 beta1:
-
Worked around an issue with Red Hat Enterprise Linux 8 and work-alike operating systems whereby, if X11 forwarding was enabled by default in the SSH client,
vglconnect -s
would hang while making a preliminary SSH connection to find a free port on a server running one of those operating systems. -
Fixed an issue in the EGL back end whereby
glReadPixels()
did not work with multisampled drawables. -
Fixed an issue in the EGL back end whereby the
glGet*()
functions sometimes returned an incorrect value forGL_DRAW_BUFFER0
throughGL_DRAW_BUFFER15
if the correct value wasGL_NONE
. -
The VirtualGL Faker now interposes the
glXGetCurrentDisplayEXT()
function, which is part of theGLX_EXT_import_context
extension. (TheGLX_EXT_import_context
extension can be used with the GLX back end if the underlying OpenGL library and 3D X server support the extension and if indirect OpenGL contexts are enabled usingVGL_ALLOWINDIRECT
.) -
Fixed an issue in the EGL back end whereby the
glXChooseFBConfig()
function returned no FB configs if theGLX_DRAWABLE_TYPE
attribute was set toGLX_DONT_CARE
. -
Fixed an issue in the EGL back end whereby the
glXSwapBuffers()
function erroneously swapped the buffers of double-buffered Pixmaps. -
Fixed an issue in the EGL back end that caused the bounding box in 3D Slicer to be displayed on top of the rendered volume when "Display ROI" and depth peeling were both enabled.
-
The EGL back end now supports OpenGL applications that simultaneously make the same GLX drawable current in more than one thread. As a consequence, the EGL back end now requires the
EGL_KHR_no_config_context
andEGL_KHR_surfaceless_context
extensions.
2.6.90 (3.0 beta1)
Assets
- VirtualGL-2.6.90.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.1.0.
Support
Code Quality: Beta
Current Support Category: EOL
Release Sponsors
This release was made possible via generous financial contributions from:
Documentation
User’s Guide for VirtualGL 3.0 (Beta)
Release Notes
Significant changes relative to 2.6.5:
-
Support for transparent overlay visuals has been retired in this version of VirtualGL. That feature will continue to be maintained in the 2.6.x branch on a break/fix basis only. Most applications that once used transparent overlay visuals used them with color index rendering, which was removed in OpenGL 3.1 in 2009. Thus, almost all applications that render overlays now do so using other mechanisms. Furthermore, the need for VirtualGL to hand off the rendering of transparent overlay visuals to the 2D X server has always limited the usefulness of the feature, and the discontinuation of the VirtualGL Client for Exceed relegated the feature to Un*x clients (with workstation-class GPUs) and the VGL Transport only. Given that nVidia's implementation of transparent overlay visuals requires disabling the X Composite extension, which cannot be done in many modern Linux distributions, that further limited the feature to the point of uselessness.
-
The VirtualGL Faker now assigns various permutations of common OpenGL rendering attributes to the available 2D X server visuals. This maximizes the chances that "visual hunting" 3D applications (applications that use X11 functions to obtain a list of 2D X server visuals, then iterate through the list with
glXGetConfig()
until they find a visual with a desired set of OpenGL rendering attributes) will find a suitable visual.VGL_DEFAULTFBCONFIG
can still be used to assign a specified set of OpenGL rendering attributes to all 2D X server visuals, although the usefulness of that feature is now very limited. -
The VirtualGL Faker now includes an EGL back end that optionally emulates the GLX API using a combination of the EGL API (with the
EGL_EXT_platform_device
extension) and OpenGL renderbuffer objects (RBOs.) On supported platforms, the EGL back end allows the VirtualGL Faker to be used without a 3D X server. The EGL back end can be activated by setting theVGL_DISPLAY
environment variable to the path of a DRI device, such as /dev/dri/card0, or by passing that device path tovglrun
using the-d
argument. Some obsolete OpenGL and GLX features are not supported by the EGL back end:glXCopyContext()
- Accumulation buffers
- Aux buffers
- Indirect OpenGL contexts
The EGL back end also does not currently support the following GLX extensions:
GLX_ARB_create_context_robustness
GLX_ARB_fbconfig_float
GLX_EXT_create_context_es2_profile
GLX_EXT_fbconfig_packed_float
GLX_EXT_framebuffer_sRGB
GLX_EXT_import_context
GLX_EXT_texture_from_pixmap
GLX_NV_float_buffer
Those extensions are supported by the GLX back end if the 3D X server supports them. The EGL back end also requires a 2D X server with a GLX extension.
-
Fixed an issue whereby, when the 2D X server was using a "traditional" window manager (such as TWM) or no window manager and the X11 Transport was not using the
MIT-SHM
X extension (because the extension was unavailable or explicitly disabled/bypassed, because the X connection was remote, or because the 3D application and the 2D X server did not share an IPC namespace), unhandled X NoExpose events would continue to queue up in Xlib until the 3D application exited or the available memory on the VirtualGL server was exhausted.
2.6.5
Assets
- VirtualGL-2.6.5.tar.gz is the official source tarball for this release. The automatically generated "Source code" assets are not supported.
- Refer to https://VirtualGL.org/Downloads/DigitalSignatures for information regarding the methods used to sign the files in this release and instructions for verifying the signatures.
- The binary packages were built with libjpeg-turbo 2.0.6.
Support
Code Quality: Stable
Current Support Category: Extended
Documentation
User’s Guide for VirtualGL 2.6.5
Release Notes
Significant changes relative to 2.6.4:
-
Fixed a race condition that sometimes caused various fatal errors in the interposed
glXMakeContextCurrent()
function if both GLX drawable IDs passed to that function were the same window handle and the corresponding X window was simultaneously resized in another thread. -
Fixed an oversight whereby the addresses of the interposed
glDrawBuffers()
,glGetString()
, andglGetStringi()
functions introduced in 2.6.3[2] and 2.6.4[1] were not returned from the interposedglXGetProcAddress()
andglXGetProcAddressARB()
functions. -
VirtualGL now works properly with 3D applications that use the
glNamedFramebufferDrawBuffer()
andglNamedFramebufferDrawBuffers()
functions (OpenGL 4.5) or theglFramebufferDrawBufferEXT()
andglFramebufferDrawBuffersEXT()
functions (GL_EXT_direct_state_access
) and render to the front buffer. -
Fixed a BadRequest X11 error that occurred when attempting to use the X11 Transport with a remote X connection.
-
Worked around an issue with certain GLX implementations that list 10-bit-per-component FB configs ahead of 8-bit-per-component FB configs and incorrectly set
GLX_DRAWABLE_TYPE|=GLX_PIXMAP_BIT
for those 10-bpc FB configs, even though they have no X visuals attached. This caused VirtualGL's interposedglXChooseVisual()
function to choose one of the 10-bpc FB configs behind the scenes, which made it impossible to use the VGL Transport. -
Fixed an issue whereby, when using the X11 Transport, a vertically flipped image of a previously-rendered frame was sometimes displayed if the 3D application called
glFlush()
while the front buffer was the active drawing buffer and the render mode wasGL_FEEDBACK
orGL_SELECT
. -
vglserver_config
now works properly if invoked with a relative path (for example,cd /opt/VirtualGL/bin; sudo ./vglserver_config
.) -
Worked around a limitation in the AMDGPU drivers that prevented recent versions of Google Chrome from enabling GPU acceleration when used with VirtualGL.