Releases: VirtualGL/virtualgl
2.1.90 (2.2 beta1)
Assets
- VirtualGL-2.1.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.
Support
Code Quality: Beta
Current Support Category: EOL
Release Notes
Significant changes relative to 2.1.4:
-
Added an option (
VGL_LOGO
) that, when enabled, will cause VirtualGL to display a logo in the bottom right-hand corner of the 3D window. This is meant as a debugging tool to allow users to determine whether or not VirtualGL is active. -
Support for encrypting the VGL Transport with OpenSSL has been removed from the official VirtualGL packages. It was only a marginally useful feature, because VirtualGL also has the ability to tunnel the VGL Transport through SSH. It was necessary to maintain our own static OpenSSL libraries on Linux in order to provide a version of VirtualGL that was compatible across all Linux platforms, and this required us to keep abreast of the latest OpenSSL security fixes, etc. OpenSSL support can easily be re-added by building VirtualGL from source (see BUILDING.md.)
-
Added a framework for creating generic image transport plugins. See server/rrtransport.h for a description of the API.
-
Removed support for the proprietary Sun Ray plugin, since that plugin is no longer available from Sun.
-
For Linux, Mac/Intel, Solaris/x86, and Windows systems, the default build of VirtualGL no longer uses TurboJPEG/IPP (which was based on the proprietary Intel Performance Primitives) or Sun mediaLib. Instead, VirtualGL now uses libjpeg-turbo, a fully open source SIMD-accelerated JPEG codec developed in conjunction with the TigerVNC Project (and based on libjpeg/SIMD.)
As a result of this, it is no longer necessary to install a separate TurboJPEG package on Linux systems.
-
Added a universal 32/64-bit VirtualGL Client binary for OS X. The 32-bit fork works on 10.4 "Tiger" or later, and the 64-bit fork works on 10.5 "Leopard" or later.
-
Added support for encoding rendered frames as I420 YUV and displaying them through X Video. The frames can either be displayed directly to the 2D X server or sent through the VGL Transport for display using the VirtualGL Client. See the User's Guide for more details.
-
Renamed /etc/modprobe.d/virtualgl to /etc/modprobe.d/virtualgl.conf to comply with the Ubuntu standard.
-
Added an environment variable (
VGL_SAMPLES
) and command-line switch (vglrun -ms
) to force VirtualGL to select a multisampled visual or override the level of multisampling selected by the 3D application. -
The
uninstall
script in the Mac binary package should now work on OS X 10.6. -
VirtualGL can now use pixel buffer objects (PBOs) to accelerate the readback of rendered frames. This particularly helps when multiple users are sharing the GPU. See the "Advanced Configuration" section of the User's Guide for more information.
-
On Linux systems, this version of VirtualGL works around the interaction issues between libdlfaker.so and VirtualBox, thus eliminating the need to specify
CR_SYSTEM_GL_PATH
or to run the VirtualBox application usingvglrun -nodl
. -
This version of VirtualGL provides a binary package, documentation, and full support for Cygwin/X.
-
Fixed an error ("free(): invalid pointer") that occurred whenever an application called
XCloseDisplay()
and theVGL_XVENDOR
environment variable was set. -
VirtualGL should now work properly when used with applications that render to framebuffer objects (FBOs.)
-
vglconnect.bat
should now work properly on 64-bit Windows systems. Previously, it would fail if it was installed under the Program Files (x86) directory. -
Added a
-gid
option tovglserver_config
to allow the group ID of the vglusers group to be specified, if that group must be created. -
TCBench should now work properly on OS X.
2.1.4
Assets
- VirtualGL-2.1.4.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.1.4
Release Notes
Significant changes relative to 2.1.3:
-
Fixed a regression in
vglserver_config
that caused a "binary operator expected" error when restricting framebuffer device access to the vglusers group. -
Fixed an issue in
vglserver_config
whereby the device permissions were not being set correctly on SuSE Linux Enterprise Desktop 11. -
VGL should now properly ignore
GLX_BUFFER_SIZE
if an application attempts to specify it when requesting a true color visual. Specifically, this allows the Second Life SnowGlobe client to run properly in VGL and WINE. -
vglserver_config
should now work even if /sbin and /usr/sbin are not in thePATH
. -
The Solaris 10/x86 version of VirtualGL should now work properly with the nVidia 18x.xx series drivers.
-
Fixed a memory leak that occurred when running VirtualGL in quad-buffered stereo mode.
-
The DRI device permissions in RHEL 5 were being overridden whenever a user logged in, because RHEL 5 uses a file in /etc/security/console.perms.d to specify the default DRI permissions rather than using /etc/security/console.perms.
vglserver_config
has been modified to handle this. -
Added an option to
vglconnect
on Linux/Unix to allow it to usegsissh
from the Globus Toolkit instead of the regularssh
program.
2.1.3
Assets
- VirtualGL-2.1.3.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.1.3 and TurboVNC 0.5.1
Release Notes
Significant changes relative to 2.1.2:
-
VirtualGL 2.1.2 printed numerous "Cannot obtain a Pbuffer-enabled 24-bit FB config ..." error messages when starting Google Earth. This has been fixed, and the message has been changed to a warning and clarified. These error messages were printed whenever Google Earth called VirtualGL's interposed version of
glXChooseVisual()
and that function subsequently failed to obtain an appropriate visual for performing 3D rendering. However, this is not necessarily an error, because applications will sometimes callglXChooseVisual()
multiple times until they find a visual with desired attributes. -
Changed the matching criteria in VirtualGL's interposed version of
dlopen()
. In previous versions of VirtualGL, any calls todlopen("*libGL*", ...)
would be replaced with a call todlopen("librrfaker.so", ...)
. This caused problems with VisIt, which has a library named libGLabelPlot.so that was being interposed by mistake. The matching criteria has been changed such thatdlopen()
only overrides calls todlopen("libGL\.*", ...)
ordlopen("*/libGL\.*", ...)
. -
vglserver_config
should now work properly with DRI-compatible graphics drivers (including ATI.) -
VirtualGL's interposed version of
dlopen()
will now modify calls todlopen("libdl*", ...)
as well asdlopen("libGL*", ...)
. This is to work around an interaction issue with v180.xx of the nVidia accelerated 3D drivers and WINE. -
Fixed an interaction issue with QT4 in which VirtualGL would not properly handle window resize events under certain circumstances.
-
Moved
dlopen()
back into a separate faker library (libdlfaker.so.) libdlfaker.so is loaded by default, which should maintain the behavior of VGL 2.1.2. However, it can be disabled by passing an argument of-nodl
tovglrun
. The latter is necessary to make VirtualBox 2.2.x work with VirtualGL. -
vglserver_config
should now work properly on Ubuntu 9.04 when using gdm or kdm. It should also (mostly) work on Fedora 11 (disabling XTEST does not work on Fedora 11 when using gdm.) -
Added fallback logic to VirtualGL's symbol loader, which will now try to directly load the GLX/OpenGL symbols from libGL.so.1 and the X11 symbols from libX11.so.6 if loading those symbols using
dlsym(RTLD_NEXT, ...)
fails. This is to work around an issue with version 18x.xx of the nVidia Linux Display Driver. -
If an application window was destroyed by the window manager, and the application did not explicitly monitor and handle the
WM_DELETE
protocol message, then previous versions of VirtualGL would, when using the X11 Image Transport, generally abort with an X11 BadDrawable error. This occurred because the window was basically being ripped out from underneath VirtualGL's blitter thread without warning. This version of VirtualGL has been modified such that it monitorsWM_DELETE
messages, so VirtualGL can now bow out gracefully if the 3D application window is closed by the window manager but the application does not handleWM_DELETE
. -
Worked around an interaction issue with IDL whereby the application was calling
XGetGeometry()
with the same pointer for every argument, and this was causing VirtualGL to lose the width and height data returned from the "real"XGetGeometry()
function. Subsequently, the Pbuffer corresponding to the main IDL window would become improperly sized, and the rendering area would not appear to update. -
Added an option (
VGL_TRAPX11
) that will cause VirtualGL to gracefully trap X11 errors, print a warning message when these occur, and allow the 3D application to continue running.
2.1.2
Assets
- VirtualGL-2.1.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.1.2 and TurboVNC 0.5.1
Release Notes
Significant changes relative to 2.1.1:
-
Fixed a buffer overrun in TurboJPEG/mediaLib that may have caused problems on Solaris/x86 VirtualGL servers.
-
Integrated libdlfaker.so into librrfaker.so to eliminate the need for invoking
vglrun -dl
. -
Developed a proper uninstaller app for the Mac OS X VirtualGL package.
-
Modified
MAXINST
variable in the SUNWvgl Solaris package, to prevent multiple instances of this package from being installed simultaneously.
2.1.1
Assets
- VirtualGL-2.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.1.1 and TurboVNC 0.5
Release Notes
This release was historically part of the Sun Shared Visualization v1.1.1 product.
Significant changes relative to 2.1:
-
Fixed issues that occurred when displaying to the second or subsequent screens on a multi-screen X server.
-
Updated to the wxWindows Library License v3.1.
-
Added an uncompressed YUV encoding option to the Sun Ray plugin. This provides significantly better performance than DPCM on Sun Ray 1 clients, and it provides significantly better image quality in all cases. YUV encoding will generally use about 50% more network bandwidth than DPCM, all else being equal.
-
Further optimized the Huffman encoder in the mediaLib implementation of TurboJPEG. This should decrease the CPU usage when running VirtualGL on Solaris VirtualGL servers, particularly Solaris/x86 servers running 32-bit applications.
-
vglconnect
now works properly with Cygwin. -
Fixed a regression that caused VirtualGL to remove any part of the
VGL_XVENDOR
string following the first whitespace. -
vglserver_config
now works properly with OpenSolaris systems. -
glXUseXFont()
now works if a Pixmap is the current drawable. -
vglserver_config
now works properly with Debian Linux systems. -
Fixed a typo in
vglconnect
that caused it to leave temporary files lying about. -
Removed the libXm (Motif) dependency in the Solaris/x86 version of VirtualGL. This mainly affected OpenSolaris systems, on which Motif is not available. The libXm dependency was introduced in VirtualGL 2.0.x, because that version of VirtualGL used libXt (X Intrinsics) to generate its popup configuration dialog. Java requires that libXm be loaded ahead of libXt, so it was necessary to explicitly link the VirtualGL Faker with libXm to guarantee that the libraries were loaded in the correct order. Since VirtualGL 2.1.x and later no longer use libXt, the binding to libXm could be safely removed on x86 systems. Note, however, that the libXm binding still has to be included on SPARC systems, because libGL on SPARC depends on libXmu, which depends on libXt.
-
Fixed an issue with GeomView whereby attempting to resize the oldest window in a multi-window view would cause the VirtualGL Client for Exceed to crash.
-
When used to configure a Solaris server for GLX mode with open access (all users being able to access the 3D X server, not just members of the vglusers group),
vglserver_config
was incorrectly placingxhost
commands at the top of/etc/dt/config/Xsetup
instead of at the bottom. This could have led to problems, sincexhost
is not guaranteed to be in thePATH
until the bottom of that script. -
VirtualGL should now build and run cleanly on Ubuntu systems (and possibly other Debian derivatives, although only Ubuntu has been tested.)
-
Certain applications call
glFlush()
thousands of times in rapid succession when rendering to the front buffer, even if no part of the 3D scene has changed. Without going into the gorey details, this caused the VirtualGL pipeline to become overloaded in certain cases, particularly on systems with fast pixel readback. On such systems, every one of theglFlush()
commands resulted in VirtualGL transporting a rendered frame, even if the frame was identical to the previous frame. This resulted in application delays of up to several minutes. This version of VGL includes a mechanism that ensures that no more than 100glFlush()
commands per second will actually result in a rendered frame being transported, and thus strings of rapid-fireglFlush()
commands can no longer overload the pipeline. -
vglserver_config
should now work with openSUSE systems. -
It was discovered that
xhost +LOCAL:
is a better method of enabling 3D X server access to all users of the VirtualGL server. This method works even if TCP connections are disabled in the X server (which is the case on recent Solaris and Linux distributions.)vglserver_config
has thus been modified to use this method rather thanxhost +localhost
. Also, since it is no longer necessary to setDisallowTCP=false
in the GDM configuration file,vglserver_config
now comments out this line if it exists. -
Fixed a deadlock that occurred when using the VirtualGL Sun Ray plugin and ParaView to render multi-context datasets.
-
Fixed an issue with Mac X11 2.1.x on OS X 10.5 "Leopard" whereby
vglconnect
would abort withCould not open log file.
X11 2.1.x uses aDISPLAY
environment of the form/tmp/launch-*/:0
, so it was necessary to remove everything up to the last slash before using this variable to build a unique log file path for the VirtualGL Client. -
Included libgefaker.so in the Solaris VirtualGL packages (oops.)
-
Added an interposed version of
XSolarisGetVisualGamma()
on SPARC servers, so applications that require gamma-corrected visuals can be fooled into thinking that a gamma-corrected visual is available, when in fact VirtualGL's software gamma correction mechanism is being used instead. -
Fixed a bug in the color conversion routines of TurboJPEG/mediaLib that caused the Solaris VirtualGL Client to display incorrect pixels along the right-most edge of the window when 2X or 4X subsampling was used.
2.1
Assets
- VirtualGL-2.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.1 and TurboVNC 0.4
Release Notes
This release was historically part of the Sun Shared Visualization v1.1 product.
Significant changes relative to 2.1 beta1:
-
Windows applications now link statically with OpenSSL, to avoid a dependency on msvcr71.dll that was introduced in the Win32 OpenSSL 0.9.8e DLLs. libeay32.dll and ssleay32.dll have been removed from the Windows package, since they are no longer needed.
-
Implemented a new interposer library (libgefaker.so) which, when active, will interpose on
getenv()
and return NULL whenever an application queries the value of theLD_PRELOAD
environment variable (and, on Solaris, theLD_PRELOAD_32
andLD_PRELOAD_64
environment variables.) This fools an application into thinking that no preloading is occurring. This feature is currently undocumented and is subject to change, but it can be activated in this release by passing an argument of-ge
tovglrun
. -
Extended
VGL_SYNC
functionality to includeglXSwapBuffers()
as well. This works around a couple of interaction issues between VirtualGL and AutoForm. The User's Guide has been updated to explain this new functionality, to include an application recipe for AutoForm, and to include a warning about the performance consequences of usingVGL_SYNC
on a remote X connection. -
Included a short paragraph in the Chromium section of the User's Guide that explains how to use VirtualGL on the render nodes to redirect 3D rendering from a window to a Pbuffer.
-
Documented the patch revision necessary to make Exceed 2008 work properly with VirtualGL. Removed dire warnings.
-
Added full-screen rendering mode to GLXSpheres.
-
Fixed a regression (uninitialized variable) introduced by 2.1 beta1[7].
-
Fixed a logic error that caused the VirtualGL Client to fail when using OpenGL drawing and talking to a legacy (VGL 2.0 or earlier) VirtualGL faker.
-
Fixed a regression that would cause VGL to deadlock when the user closed the 3D application window while using the X11 Image Transport.
-
Fixed an issue whereby
vglserver_config
would fail to detect the presence of GLP because nm was not in the defaultPATH
. -
When running VirtualGL on Enterprise Linux 5 using the 100 series nVidia drivers, a normal exit from a 3D application will result in
glXChannelRectSyncSGIX()
being called after the VirtualGL hashes have already been destructed.glXChannelRectSyncSGIX()
callsXFree()
(an interposed function), and under certain circumstances, the interposed version ofXFree()
was trying (and failing) to access one of the previously destructed VirtualGL hashes. This has been fixed. -
vglclient -kill
now works properly on Solaris systems. -
Fixed a timing snafu in-- and raised the run priority of-- the Windows version of TCBench. This improves the accuracy of TCBench on Windows in high-client-CPU-usage scenarios.
-
Fixed an issue in the interactive mode of GLXSpheres whereby it would use 100% of the CPU when sitting idle. Added an option to GLXSpheres to adjust the polygon count of the scene.
-
Added application recipes for ANSYS and Cedega to the User's Guide. Added notes describing the ANSYS and Pro/E duplicate
glFlush()
issue and workarounds. -
Changed the default value for
VGL_NPROCS
to1
(the performance study indicates that there is no longer any measurable advantage to multithreaded compression on modern hardware with VGL 2.1.) -
Added a
-bench
option tonettest
to allow it to measure actual usage on a given Solaris or Linux network device. This was necessitated by accuracy issues with other open source network monitoring solutions. -
Changed the way global hash tables are allocated in VGL, in order to fix an interaction issue with applications that are built with MainWin.
-
vglclient -kill
now works properly on Mac systems. -
The VirtualGL Configuration dialog now pops up properly when Caps Lock is active.
-
If a previously destroyed GLX context is passed as an argument to
glXMake[Context]Current()
, the function now returns False instead of throwing a fatal exception. This was necessary to make a couple of different commercial applications work properly. -
There was some inconsistency regarding the interface for enabling lossless compression in the Sun Ray Image Transport. The User's Guide listed the interface as
VGL_COMPRESS=srrgb
, whereas the output ofvglrun
listed the interface as-c srlossless
. VirtualGL 2.1rc only responded to the latter. This version of VirtualGL now responds to both interfaces, butVGL_COMPRESS=srrgb
is the correct and documented interface. Any errant references to "srlossless" have been changed.
2.1 beta1
Assets
- VirtualGL-2.1beta1.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.
Support
Code Quality: Beta
Current Support Category: EOL
Release Notes
Significant changes relative to 2.0.1:
-
The VirtualGL Configuration dialog is now implemented using FLTK instead of X Intrinsics. The dialog is also now handled by a separate process (
vglconfig
), to avoid application interaction issues. VirtualGL andvglconfig
communicate changes to the configuration through shared memory.Note that this renders both the
VGL_GUI_XTTHREADINIT
configuration option and the corresponding application recipe for VisConcept unnecessary, and thus both have been removed. -
Added two new scripts (
vglconnect
andvgllogin
) to automate the process of connecting to a VirtualGL server and using the VGL Image Transport (formerly "Direct Mode.")vglconnect
wraps bothvglclient
and SSH. Through the use of command-line arguments,vglconnect
can be configured to forward either the X11 traffic or the VGL Image Transport (or none or both) over the SSH connection.vglconnect
invokesvgllogin
on the server, which configures the server environment with the properVGL_CLIENT
andVGL_PORT
values so that, once connected, no further action is required other than to launch a 3D application withvglrun
. See the User's Guide for more information. -
The VirtualGL Client includes many changes to support
vglconnect
. Rather than listen just on ports 4242 and 4243, the default behavior ofvglclient
is now to find a free listening port in the range of 4200-4299 (it tries 4242 and 4243 first, to maintain backward compatibility.) The VirtualGL Client records its listening port in an X property that is later read by the VirtualGL Faker. This feature allows more than one instance ofvglclient
to run on the same machine. The VirtualGL Client can also detach completely from the console and run as a background daemon, exiting only when the X server resets or whenvglclient
is explicitly killed.Previous versions of VirtualGL required one instance of the VirtualGL Client to talk to all client-side X displays, but this created problems in multi-user environments. Thus, VirtualGL 2.1 runs a separate instance of
vglclient
for each unique X display. This eliminates the need (as well as the ability) to runvglclient
as a root daemon or as a Windows service, and thus those features have been removed.Since
vglclient
is intended to be launched fromvglconnect
, Start Menu links to the VirtualGL Client are no longer included in the Windows package.See the User's Guide for more information about the changes to the VirtualGL Client.
-
The Windows VirtualGL package now includes an optimized version of PuTTY 0.60, which is used by the Windows version of
vglconnect
. When tunneling the VGL Image Transport, this version of PuTTY provides significantly better performance than the stock version of PuTTY 0.60. -
Added a new script (
vglserver_config
) to automate the process of configuring the 3D X server to allow connections from VirtualGL. This script can also be used to configure GLP, for machines that support it. See the User's Guide for more information. -
The VirtualGL Unix packages now include a benchmark called "GLXSpheres", which is an open source look-alike of the old nVidia SphereMark demo. This program is meant to provide an alternative to GLXGears, since the images generated by the latter program contain too much solid color to be a good test of VirtualGL's image pipeline. GLXSpheres also includes modes that can be used to test VirtualGL's support of advanced OpenGL features, such as stereo, overlays, and color index rendering.
-
VirtualGL now works properly with multi-process OpenGL applications that use one process to handle X events and another process to handle 3D rendering. In particular, this eliminates window resize issues with Abaqus/CAE and with the Chromium readback SPU.
-
Added an additional subsampling option to enable grayscale JPEG encoding. This provides additional bandwidth savings over and above chrominance subsampling, since grayscale throws away all chrominance components. It is potentially useful when working with applications that already render grayscale images (medical imaging, etc.)
-
VirtualGL can now encode rendered frames as uncompressed RGB and send those uncompressed frames through the VGL Image Transport. This has two benefits:
- It eliminates the need to use the X11 Image Transport (formerly "Raw Mode") over a network, and
- It provides the ability to send lossless stereo image pairs to a stereo-enabled client.
A gigabit or faster network is recommended when using RGB encoding.
-
Anaglyphic stereo support. When VirtualGL detects that an application has rendered something in stereo, its default behavior is to try using quad- buffered stereo. However, if the client or the image transport do not support quad-buffered stereo, then VirtualGL will fall back to using anaglyphic (red/cyan) stereo. This provides a quick & dirty way to visualize stereo data on clients that do not support "real" stereo rendering.
VirtualGL 2.1 can also be configured to transport only the left eye or right eye images from a stereo application.
-
Changed the way VirtualGL spoils frames. Previous versions would throw out any new frames if the image transport was already busy transporting a previous frame. In this release, VirtualGL instead throws out any untransported frames in the queue and promotes every new frame to the head of the queue. This ensures that the last frame in a rendering sequence will always be transported.
-
Better integration with the Sun Ray plugin. In particular, many of the Sun Ray plugin's configuration options can now be configured through the VirtualGL Configuration dialog.
-
The Mac VirtualGL Client is now fully documented.
-
Included mediaLib Huffman encoding optimizations contributed by Sun. This boosts the performance of VirtualGL on Solaris systems by as much as 30%. This, in combination with mediaLib 2.5, should allow the Solaris/x86 version of VirtualGL to perform as well as the Linux version, all else being equal.
-
Lighting did not work properly for color index applications in prior versions of VGL. This has been fixed.
-
Fixed an interaction issue with the 100 series nVidia drivers, whereby applications that requested a single-buffered RGB visual would sometimes fail to obtain it through VirtualGL. The newer nVidia drivers don't always return an RGB 8/8/8 framebuffer config as the first in the list, so it was necessary for VirtualGL to specify
GLX_RED_SIZE
,GLX_GREEN_SIZE
, andGLX_BLUE_SIZE
when obtaining a framebuffer config on the 3D X server. -
Interframe comparison now works properly with stereo image pairs, and interframe comparison can now be disabled by using the
VGL_INTERFRAME
option.
2.0.1
Assets
- VirtualGL-2.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
User’s Guide for VirtualGL 2.0.1 and TurboVNC 0.3.3
Release Notes
This release was historically part of the Sun Shared Visualization v1.0.1 product.
Significant changes relative to 2.0:
-
The Linux and Solaris versions of VirtualGL are now statically linked with OpenSSL. This fixes an issue whereby a 3D application that uses OpenSSL could override VirtualGL's SSL bindings, thus causing VirtualGL to crash if SSL was enabled (
VGL_SSL=1
orvglrun +s
) and if the application's version of OpenSSL was incompatible with VirtualGL's.This, combined with [5] below, has the added benefit of allowing a single VirtualGL RPM to be used across multiple Linux platforms. It is no longer necessary to use a separate RPM for different versions of Enterprise Linux, SuSE, etc.
-
librrfaker.so and libturbojpeg.so are now being linked with map files (AKA "anonymous version scripts" on Linux.) This is mainly a preventative measure, because it hides any non-global symbols in the shared objects, thus preventing those symbols from accidentally interposing on a symbol in an application or in another shared object. However, this was also necessary to prevent [1] from causing the opposite problem from the one it was intended to fix (without [2], VirtualGL could interpose on an application's SSL bindings rather than vice versa.)
Linux users will need to upgrade to TurboJPEG 1.04.2 (or later) to get this fix. For other platforms, the fix is included in the VGL 2.0.1 packages.
-
librr.so, rr.h, and the rrglxgears.c sample application have been removed from the distribution packages. These demonstrated a strawman API for creating a VGL movie player. The API was somewhat ill-conceived and broken, and it needs to be revisited.
-
VirtualGL's custom version of
glxinfo
is now included in the distribution packages, under /opt/SUNWvgl/bin or /opt/VirtualGL/bin. This version ofglxinfo
supports GLP on SPARC servers and also has the ability to query GLX FB Configs as well as X visuals. -
VGL now uses direct linking to link against libCrun on Solaris and static linking to link against libstdc++ on Linux. This is to prevent a problem similar to [1], in which an application that overrides the default C++
new
anddelete
operators could force VGL to use its customnew
anddelete
operators rather than the default operators provided in libCrun/libstdc++. Specifically, this addresses an issue whereby Pro/E would spuriously crash on multi-processor Solaris/SPARC machines.libstdc++ is statically linked on Linux because Linux has no equivalent of Direct linking, but static linking against libstdc++ has the added benefit of allowing one VirtualGL RPM to be used across multiple Linux platforms.
-
Eliminated the use of the X
DOUBLE-BUFFER
extension in Raw Mode and replaced it instead with X Pixmap drawing. Previously, VGL would try to use theMIT-SHM
extension to draw rendered frames in Raw Mode, then it would fall back to using the XDOUBLE-BUFFER
extension ifMIT-SHM
was not available or could not be used (such as on a remote X connection), then it would fall back to single-buffered drawing ifDOUBLE-BUFFER
could not be used. However, theDOUBLE-BUFFER
extension crashes on some Sun Ray configurations (specifically Xinerama configurations), so VGL 2.0 disabled the use ofDOUBLE-BUFFER
on all Sun Ray configurations to work around this issue. [6] replaces that hack with a more solid fix that ensures that Raw Mode is always double-buffered, even if the XDOUBLE-BUFFER
extension is not available or is not working. Pixmap drawing has the same performance asDOUBLE-BUFFER
.This generally only affects cases in which Raw Mode is used to transmit rendered frames over a network. When Raw Mode is used to transmit rendered frames to an X server on the same machine, it is almost always able to use the
MIT-SHM
X extension. -
Numerous doc changes, including:
- Restructuring the User's Guide to create a more clear delineation between what needs to be done on the server and what needs to be done on the client.
- (Re-)added instructions for how to use VGL with a direct X11 connection, since it has become apparent that that configuration is necessary in some cases.
- Changed procedure for doing Direct Mode SSH tunneling. The previous procedure would not have worked if multiple users were trying to tunnel Direct Mode from the same server. The new procedure requires running a program (see [8] below) that prints out an available TCP port, and using that port on the server end of the SSH tunnel.
- Added application recipe for ANSA 12.1.0.
- Added procedures for using VGL with TurboVNC and for using TurboVNC in general.
- Added information for using VGL with GLP (which, unbelievably, was never really included in the User's Guide. Major oversight on our part.)
-
Modified the
nettest
program such that it finds a free TCP port number and prints out the port number to the console when you pass an argument of-findport
to the program. -
Fixed
glXGetProcAddressARB()
andglXGetProcAddress()
on SPARC platforms. Due to an erroneous#ifdef
statement, these interposed functions were not getting compiled into VirtualGL when VirtualGL was built with Sun OpenGL on SPARC platforms.This, combined with [16], allows Java 2D apps running in VirtualGL on SPARC platforms to successfully use the OpenGL pipeline to perform Java 2D rendering.
-
Sun OpenGL 120812-15 (and later) now includes a
SwapBuffers()
command for GLP, which VirtualGL will now use if available. Some applications that use front buffer drawing (Pro/E and UGS/NX v4, specifically) did not work properly with VirtualGL 2.0 in GLP mode, because the back buffer in the double-buffered Pbuffer was not being swapped. -
Some applications call
XListExtensions()
rather thanXQueryExtension()
to probe for the existence of the GLX extension. Such applications, when displaying to VNC or another X server that lacks the GLX extension, would fail. VirtualGL now interposes onXListExtensions()
and makes sure that the GLX extension is always reported as present. This fixes a specific issue with UGS/NX v4 whereby NX, if run with VirtualGL and TurboVNC, would refuse to use OpenGL to perform its 3D rendering. -
VGL will now print a warning if the GLX context it obtains on the server's display is indirect. This will occur on Solaris if the framebuffer device permissions do not allow read/write access for the current user.
-
Normally, if X11 drawing is the default in the VirtualGL Client (which is the case on non-SPARC systems, on SPARC systems with 2D framebuffers, or on any system if
vglclient
is invoked with the-x
argument), then the VirtualGL Client will only use OpenGL for drawing stereo frames. This fixes a bug whereby the VirtualGL Client would not switch back to X11 drawing (if X11 drawing was the default) after the application ceased rendering in stereo. -
You can now specify a listen port number of 0 to make the VirtualGL Client pick an available port. This is of only marginal use at the moment, since there is no way to make the server automatically connect to that port, but we got this for free as a result of [8].
-
Fixed an issue that was causing the multithreaded tests in
rrfakerut
to crash some of the nVidia 7xxx series drivers.rrfakerut
should now run cleanly on the 7xxx series, but the multithreaded tests still cause the 8xxx series drivers to crash & burn, and they cause the 9xxx series drivers to generate incorrect pixels. Further investigation is needed. -
Fixed two issues that were preventing Java 2D on Solaris/SPARC from properly detecting that OpenGL is available:
glXChooseFBConfig()
now ignores theGLX_VISUAL_ID
attribute. That attribute doesn't really have any meaning in VGL, and passing it through to the 3D X server was causing Java 2D apps to fail.glXGetFBConfigAttrib(..., GLX_DRAWABLE_TYPE, ...)
now always returnsGLX_PIXMAP_BIT|GLX_PBUFFER_BIT|GLX_WINDOW_BIT
, so that Java 2D apps will properly detect that window rendering is available in VirtualGL.
-
vglrun
will now print usage information if you fail to provide an application command to run. -
Upgraded the OpenSSL DLL included with the Windows VirtualGL Client to OpenSSL 0.9.8d (previously 0.9.8c.)
-
VirtualGL now buffers the output from the profiler class so that the profiling output from multiple compression threads doesn't intermingle when redirected to a log file.
-
If the
DISPLAY
environment variable is unset on the VirtualGL server,vglrun
will now set it automatically to{ssh_client}:0.0
(where{ssh_client}
= the IP address of the SSH client.) IfDISPLAY
is set tolocalhost:{n}.0
or{server_hostname}:{n}.0
, VGL assumes that SSH X11 forwarding is in use and setsVGL_CLIENT={ssh_client}:0.0
instead (without modifyingDISPLAY
.)vglrun
prints a warning that it is doing this. You must still explicitly setVGL_CLIENT
orDISPLAY
if you are doing something exotic, such as tunneling VGL's client/server connection through SSH or displaying to an X server with a display number other than 0. But this fix should eliminate the need to setVGL_CLIENT
andDISPLAY
in most cases. Note ...
2.0
Assets
- VirtualGL-2.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.
Support
Code Quality: Stable
Current Support Category: EOL
Documentation
Release Notes
This release was historically part of the Sun Shared Visualization v1.0 product.
Significant changes relative to 2.0 beta3:
-
Included libturbojpeg.dylib in Mac package (so that installing the TurboJPEG package is no longer necessary unless you want to rebuild VGL from source.)
-
Included TCBench and NetTest in the Mac package.
-
Added an internal gamma correction system. This was a last-minute feature addition to address the fact that there was no way to gamma-correct applications that were remotely displayed to non-SPARC clients. SPARC users are accustomed to OpenGL applications being gamma-corrected by default, so VirtualGL now mimics this behavior whenever it is running on a SPARC server, even if the client is not a SPARC machine.
The behavior of the
VGL_GAMMA
environment variable has changed as follows:-
VGL_GAMMA=1
(orvglrun +g
):Enable gamma correction using the best available method. If displaying to a SPARC X server that has gamma-corrected visuals, try to use those gamma-corrected visuals. Otherwise, enable VGL's internal gamma correction system with a gamma correction factor of 2.22.
This is the default when running applications on SPARC VirtualGL servers.
-
VGL_GAMMA=0
(orvglrun -g
):Do not use gamma-corrected visuals (even if available on the X server), and do not use VGL's internal gamma correction system.
This is the default when running applications on non-SPARC VirtualGL servers.
-
VGL_GAMMA={f}
(orvglrun -gamma {f}
):Do not use gamma-corrected visuals (even if available on the client), but enable VGL's internal gamma correction system with a gamma correction factor of {f}.
Enabling the internal gamma correction system increases CPU usage by a few percent, but this has not been shown to affect the overall performance of VGL by a measurable amount.
See the
VGL_GAMMA
entry in Chapter 18 of the User's Guide for more info. -
-
Increased the size of the TurboJPEG compression holding buffer to account for rare cases in which compressing very-high-frequency image tiles (specifically parts of the 3D Studio MAX Viewperf test) with high quality levels (specifically Q99 or above) would produce JPEG images that are larger than the uncompressed input.
Linux users will need to upgrade to TurboJPEG 1.04 (or later) to get this fix. For other platforms, the fix is included in the VGL 2.0 packages.
-
Minor documentation changes, including a change to the recommended OpenGL patches for SPARC VGL servers and an application recipe for SDRC I-DEAS Master Series.
-
Check for exceptions in the
new
operator to prevent VGL from dying ungracefully in out-of-memory situations. -
Fixed a bug in the multithreaded compression code whereby it would use too much memory to hold the image tiles for the second and subsequent compression threads. This led to memory exhaustion if the tile size was set to a low value (such as 16x16 or 32x32.)
2.0 beta3
Assets
- VirtualGL-2.0beta3.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.
Support
Code Quality: Beta
Current Support Category: EOL
Release Notes
Significant changes relative to 2.0 beta2:
-
Solaris packages now include the OpenSSL shared libraries (libssl and libcrypto), thus eliminating the need to install Blastwave OpenSSL on Solaris 9 and prior.
-
Packages now include a convenience script (
vglgenkey
) that will generate an xauth key for the 3D X server. This provides a more secure way of granting access to the 3D X server than usingxhost +localhost
. -
Built and packaged the VirtualGL Client for Mac OS/X (Intel only.) This package is currently undocumented and includes only the VirtualGL Client (no server components), but its usage should be self-explanatory for those familiar with VGL on other platforms (it should work very similarly to the Linux version.)
-
Normally, when running in Raw Mode, VirtualGL will try to use the
MIT-SHM
X extension to draw rendered frames. IfMIT-SHM
is not available or doesn't work (which would be the case if the X connection is remote), then VGL will try to use the XDOUBLE-BUFFER
extension. Failing that, it will fall back to single-buffered drawing. In a Sun Ray environment, the XDOUBLE-BUFFER
extension is unstable when Xinerama is used.DOUBLE-BUFFER
doesn't really double-buffer in a Sun Ray environment anyhow, so this release of VirtualGL disables the use ofDOUBLE-BUFFER
if it detects that it is running in a Sun Ray environment. -
Reformatted User's Guide using Deplate. Numerous other doc changes as well.
-
Extended VGL to support the full GLX 1.4 spec (this involved simply creating a function stub for
glXGetProcAddress()
, but it was necessary to make J2D work under Java 6.) -
Changed the key sequence for the popup configuration dialog (again) to CTRL-SHIFT-F9 to avoid a conflict with Solaris Common Desktop Environment.
-
VGL no longer tries to switch to Direct Mode automatically whenever a stereo frame is rendered. Instead, if running in Raw Mode, it warns that stereo doesn't work in Raw Mode and proceeds to send only the left eye buffer.