VirtualGL / TurboVNC Survey Results Version 1, 3/17/2008 -- The VirtualGL Project

This report and all associated illustrations are licensed under the Creative Commons Attribution 3.0 License. Any works which contain material derived from this document must cite The VirtualGL Project as the source of the material and list the current URL for the VirtualGL web site.

Between December, 2007 and March, 2008, a survey of the VirtualGL community was conducted to ascertain which features and platforms were of interest to current and future users of VirtualGL and TurboVNC. The larger purpose of this survey was to steer the future development of VirtualGL and TurboVNC based on user input.

1 Statistics 49 users responded to the survey, with 32 complete responses. When listing percentage breakdowns for each response to a question, this report computes the percentages relative to the total number of complete responses for that question.

2 Responses

2.1 Server Platform “Please select the server platform(s) that you currently use or plan to use with VirtualGL/TurboVNC”

Platform Number of Respondees (%) /x86 25 / 46 (54%) ● Enterprise Linux 3 (x86) 2 / 46 (4.3%) ● Enterprise Linux 4 (x86) 5 / 46 (11%) ● Enterprise Linux 5 (x86) 6 / 46 (13%) ● Fedora Core 4 (x86) 1 / 46 (2.2%) ● Fedora Core 7 (x86) 1 / 46 (2.2%) ● Fedora Core 8 (x86) 4 / 46 (8.7%) ● SuSE Linux Enterprise 9 (x86) 1 / 46 (2.2%)

1 Platform Number of Respondees (%) ● SuSE Linux Enterprise 10 (x86) 2 / 46 (4.3%) ● Ubuntu (x86) 7 / 46 (15%) ● Debian (x86) 5 / 46 (11%) ● Gentoo (x86) 1 / 46 (2.2%) Linux/x86-64 33 / 46 (72%) ● Enterprise Linux 3 (x86-64) 2 / 46 (4.3%) ● Enterprise Linux 4 (x86-64) 11 / 46 (24%) ● Enterprise Linux 5 (x86-64) 11 / 46 (24%) ● Fedora Core 8 (x86-64) 2 / 46 (4.3%) ● SuSE Linux Enterprise 9 (x86-64) 1 / 46 (2.2%) ● SuSE Linux Enterprise 10 (x86-64) 5 / 46 (11%) ● Ubuntu (x86-64) 9 / 46 (20%) ● Debian (x86-64) 7 / 46 (15%) ● Gentoo (x86-64) 1 / 46 (2.2%) Linux/IA-64 1 / 46 (2.2%) Solaris/SPARC 1 / 46 (2.2%) ● Solaris 10 (SPARC) 1 / 46 (2.2%) Solaris/x64 1 / 46 (2.2%) ● Solaris 10 (x64) 1 / 46 (2.2%) HP-UX 1 / 46 (2.2%) Windows (TurboVNC only) 5 / 46 (11%) OS/X * 3 / 46 (6.5%)

* This was a curious response, given that neither VirtualGL nor TurboVNC can use OS/X as a server platform.

2 2.2 Client Platform “Please select the client platform(s) that you currently use or plan to use with VirtualGL/TurboVNC”

Platform Number of Respondees (%) Linux/x86 25 / 39 (64%) ● Enterprise Linux 4 (x86) 3 / 39 (7.7%) ● Enterprise Linux 5 (x86) 5 / 39 (13%) ● Fedora Core 7 (x86) 1 / 39 (2.6%) ● Fedora Core 8 (x86) 3 / 39 (7.7%) ● SuSE Linux Enterprise 9 (x86) 1 / 39 (2.6%) ● SuSE Linux Enterprise 10 (x86) 3 / 39 (7.7%) ● Ubuntu (x86) 11 / 39 (28%) ● Debian (x86) 6 / 39 (15%) ● Gentoo (x86) 1 / 39 (2.6%) ● FoundryLinux (x86) 1 / 39 (2.6%) Linux/x86-64 26 / 39 (67%) ● Enterprise Linux 3 (x86-64) 1 / 39 (2.6%) ● Enterprise Linux 4 (x86-64) 10 / 39 (26%) ● Enterprise Linux 5 (x86-64) 8 / 39 (21%) ● Fedora Core 8 (x86-64) 2 / 39 (5.1%) ● SuSE Linux Enterprise 9 (x86-64) 1 / 39 (2.6%) ● SuSE Linux Enterprise 10 (x86-64) 3 / 39 (7.7%) ● Ubuntu (x86-64) 10 / 39 (26%) ● Debian (x86-64) 5 / 39 (13%) ● Gentoo (x86-64) 1 / 39 (2.6%) Max OS/X 9 / 39 (23%) ● 10.4 “Tiger” 6 / 39 (15%) ● 10.5 “Leopard” 7 / 39 (18%) Solaris/SPARC 2 / 39 (5.1%) ● Solaris 10 (SPARC) 2 / 39 (5.1%) ● Solaris 11 (SPARC) 1 / 39 (2.6%) Solaris/x64 1 / 39 (2.6%)

3 Platform Number of Respondees (%) ● Solaris 10 (x64) 1 / 39 (2.6%) ● Solaris 11 (x64) 1 / 39 (2.6%) 2 3 / 39 (7.7%) Windows/32-bit 23 / 39 (59%) ● Windows 2000 (32-bit) 3 / 39 (7.7%) ● Windows XP (32-bit) 21 / 39 (54%) ● Windows Vista (32-bit) 9 / 39 (23%) Windows/64-bit 17 / 39 (44%) ● Windows XP (64-bit) 15 / 39 (38%) ● Windows Vista (64-bit) 10 / 39 (26%) HP-UX 1 / 39 (2.6%)

2.3 Sun Ray Plugin “Do you currently use or plan to use the proprietary VirtualGL Sun Ray plugin (available for free download as part of the Sun Shared Visualization product)?”

Of the three users who responded that they used or planned to use Sun Ray clients, one responded “Yes” to this question and another responded “No” (the third did not respond.)

2.4 Network Types “Which of the following network types do you currently use (or plan to use) when connecting to your VirtualGL/TurboVNC servers?”

Network Type Number of Respondees (%) 10 Gigabits/sec local-area network 5 / 37 (14%) 10 Gigabits/sec wide-area network 1 / 37 (2.7%) 1 Gigabits/sec local-area network 25 / 37 (68%) 1 Gigabits/sec wide-area network 6 / 37 (16%) 100 Megabits/sec local-area network 19 / 37 (51%) 100 Megabits/sec wide-area network 10 / 37 (27%) Wireless-B 6 / 37 (16%) Wireless-G 17 / 37 (46%)

4 Network Type Number of Respondees (%) Wireless-N 9 / 37 (24%) 10 Megabits/sec local-area network 5 / 37 (14%) 10 Megabits/sec wide-area network 10 / 37 (27%) (including high-speed cable) Standard cable modem (1-6 Megabits/sec) 7 / 37 (19%) DSL (1-3 Megabits/sec) 8 / 37 (22%) Satellite 1 / 37 (2.7%) Local (same host) connection 1 / 37 (2.7%) InfiniBand 1 / 37 (2.7%)

All 37 respondees currently use (or plan to use) VirtualGL or TurboVNC on a local-area network. 18 of the 37 respondees (49%) currently use (or plan to use) VirtualGL or TurboVNC on a wide-area network.

2.5 VirtualGL Versions “Which VirtualGL version(s) do you currently use or plan to use?”

VGL Version Number of Respondees (%) VirtualGL 2.0 final 3 / 36 (8.3%) VirtualGL 2.0.1 11 / 36 (31%) VirtualGL 2.1 beta 10 / 36 (28%) VirtualGL 2.1 final 27 / 36 (75%)

2.6 X Servers “Which of the following X servers/X proxies do you currently use (or plan to use) to display the output of applications running in VirtualGL?”

X Server Type Number of Respondees (%) Built-in X server on Linux//Mac clients 26 / 36 (72%) Hummingbird Exceed / Exceed 3D 5 / 36 (14%) ● Hummingbird Exceed 2006 1 / 36 (2.8%) ● Hummingbird Exceed 2007 2 / 36 (5.6%) ● Hummingbird Exceed 2008 1 / 36 (2.8%)

5 X Server Type Number of Respondees (%) TurboVNC 25 / 36 (69%) ● TurboVNC 0.3.2 2 / 36 (5.6%) ● TurboVNC 0.3.3 10 / 36 (28%) ● TurboVNC 0.4 18 / 36 (50%) Sun Ray Server Software 2 / 36 (5.6%) RealVNC 6 / 36 (17%) NX or FreeNX 10 / 36 (28%) TightVNC 14 / 36 (39%) /X 1 / 36 (2.8%) UltraVNC 1 / 36 (2.8%)

2.7 TurboVNC Java/Web Viewer Of the 25 respondees who currently use or plan to use TurboVNC, six (24%) said that they currently use or plan to use the TurboVNC Java/Web Viewer.

2.8 Building VirtualGL/TurboVNC from Source Code “Do you currently build VirtualGL or TurboVNC from source code?”

10 out of 34 respondees (29%) said that they currently build VirtualGL or TurboVNC from source code. Seven of these were Ubuntu, Gentoo, or Debian users, which likely explains why they build VGL / TurboVNC from source. Curiously, one person who claimed to build VGL / TurboVNC from source was also one of the three people who claimed to be using VGL / TurboVNC on Mac OS X servers. Hmmm ... Is there something going on that we should know about?

2.9 New Platforms “What new platforms (if any) should VirtualGL and TurboVNC support?”

New Platform Number of Respondees Native 64-bit TurboVNC 1 Gentoo 2 Debian 2 Ubuntu 2 Windows VirtualGL server 3

6 2.10 Application Types “What types of applications do you currently use or plan to use with VirtualGL/TurboVNC?”

Applications Number of Respondees (%) 2D Apps (TurboVNC) 2 / 34 CAD / CAE Applications 18 / 34 ● Abaqus 3 / 34 ● Altair HyperWorks 3 / 34 ● ANSA 1 / 34 ● Ansoft HFSS 2 / 34 ● Ansoft Maxwell 3D 1 / 34 ● ANSYS 2 / 34 ● ANSYS CFX 2 / 34 ● ANSYS Fluent 1 / 34 ● ANSYS Icepak 1 / 34 ● ANSYS Multiphysics 1 / 34 ● Magsoft Flux3D 1 / 34 ● MSC.Patran 1 / 34 ● MSC.MARC 1 / 34 ● SEMulator3D 1 / 34 ● SolidWorks 1 / 34 ● STAR-CD 1 / 34 Digital Content Creation / 3D Animation Applications 11 / 34 ● Autodesk Maya 1 / 34 ● Blender 2 / 34 ● Pixologic ZBrush 1 / 34 ● wondertouch particleIllusion 1 / 34 ● Hash Animation Master 1 / 34 Medical Visualization Applications 4 / 34 Oil & Gas Applications 4 / 34 Research / In-House / Scientific Visualization Applications 16 / 34 ● MATLAB 1 / 34

7 Applications Number of Respondees (%) ● IDL 1 / 34 ● VisIt 1 / 34 Games 13 / 34 Parallel Rendering Applications 9 / 34 Educational / Training Applications 2 / 34 3D Application Development / Testing 1 / 34 Other ● Java / Java3D 1 / 34 ● / Cedega (Emulation of Win32 3D Applications) 2 / 34 ● Google Earth 1 / 34 ● 1 / 34

2.11 Performance / Quality Trade-Offs Users were asked to rate the importance of the following four things on a scale of 0 (Not Important) to 4 (Very Important / Critical):

● “Obtaining the absolute best performance for your 3D application”

“Very Important / Critical” (4): 12 / 32 (38%) “Important” (3): 13 / 32 (41%) “Somewhat Important” (2): 4 / 32 (13%) “Not Very Important” (1): 3 / 32 (9.4%)

Average: 3.1 (high importance)

● “Mathematically lossless image quality”

“Very Important / Critical” (4): 1 / 32 (3.1%) “Important” (3): 7 / 32 (22%) “Somewhat Important” (2): 10 / 32 (31%) “Not Very Important” (1): 7 / 32 (22%) “Not Important at all” (0): 5 / 32 (16%)

Average: 1.6 (low to medium importance)

8 ● “Seamless windows (each application window appears as a separate client window)”

“Very Important / Critical” (4): 2 / 32 (6.3%) “Important” (3): 10 / 32 (31%) “Somewhat Important” (2): 11 / 32 (34%) “Not Very Important” (1): 2 / 32 (6.3%) “Not Important at all” (0): 6 / 32 (19%)

Average: 1.9 (medium importance)

● “Stability / reliability of the system”

“Very Important / Critical” (4): 25 / 32 (78%) “Important” (3): 5 / 32 (16%) “Somewhat Important” (2): 2 / 32 (6.3%)

Average: 3.7 (very high importance)

2.12 Usage of Current Features “Which of the following features (if any) do you currently use or plan to use with VirtualGL/TurboVNC?”

Feature Number of Respondees (%) Quad-buffered stereo rendering 4 / 32 (13%) Anaglyphic stereo rendering 3 / 32 (9.4%) Transparent 8-bit overlay rendering 7 / 32 (22%) 8-bit color index rendering 2 / 32 (6.3%) The VirtualGL Configuration popup dialog 10 / 32 (31%) GLP (SPARC only) 1 / 32 (3.1%) VirtualGL's built-in SSL encryption 7 / 32 (22%) Tunneling VirtualGL / TurboVNC through SSh 13 / 32 (41%) RGB (lossless) encoding 9 / 32 (28%) Lossless Refresh (TurboVNC) 6 / 32 (19%) Multi-threaded image compression 12 / 32 (38%) Frame rate governor 9 / 32 (28%)

9 2.13 Interest in New Features Users were asked to rate their interest in the following proposed new features on a scale of 0 (Not Interested) to 2 (Very Interested):

● “Better performing ("Turbo") version of NX/FreeNX”

Very Interested (2): 8 / 32 (25%) Somewhat Interested (1): 11 / 32 (34%) Not Interested (0): 5 / 32 (16%)

Average: 0.84 (low to medium interest)

● “Migrating TurboVNC from the TightVNC code base to the RealVNC code base”

Very Interested (2): 8 / 32 (25%) Somewhat Interested (1): 11 / 32 (34%) Not Interested (0): 5 / 32 (16%)

Average: 0.84 (low to medium interest)

● “Better performing hardware

Very Interested (2): 11 / 32 (34%) Somewhat Interested (1): 10 / 32 (31%) Not Interested (0): 4 / 32 (13%)

Average: 1.0 (medium interest)

● “The ability to record a movie of VirtualGL's output and play it back later”

Very Interested (2): 10 / 32 (31%) Somewhat Interested (1): 14 / 32 (44%) Not Interested (0): 3 / 32 (9.4%)

Average: 1.1 (medium interest)

“What other new features/fixes (if any) would you like to see us add to VirtualGL/TurboVNC?”

● TurboVNC Windows server loses one row of pixels + tooltips don't work

Response: If this is TurboVNC specific, then we can probably fix it. If it is inherited from TightVNC, then we probably can't. Will investigate further.

10 ● Define “special keys”

Response: Not sure what was meant by this.

● Eliminate the need for vglrun. Other solutions have the ability to launch 3D applications without a wrapper script.

Response: The other solutions that can run 3D applications without a wrapper script are either using screen scraping or indirect OpenGL rendering. Refer to the VirtualGL Background article (http://www.virtualgl.org/About/Background) for more information on the trade-offs of these types of solutions. The main disadvantage of screen scraping is that it can't support more than one simultaneous user on a server. The main disadvantage of indirect OpenGL rendering is that it doesn't allow a direct connection to the graphics card, and thus it can slow down the transfer of texture and geometry data. Indirect OpenGL rendering can also introduce incompatibilities when applications rely on a particular OpenGL extension that isn't supported by the X proxy. We chose to base our solution on the concept of GLX forking with in-process GLX interception, because this provides the best possible 3D performance and compatibility. But unfortunately, this method of remote 3D requires a wrapper/launcher script.

● How-to document for using TurboVNC with VNC Session Manager.

Response: Have been meaning to look into this before now, but haven't had time.

● Fix/workaround for issues encountered with Mainsoft-based apps

Response: This has been fixed and is in VirtualGL 2.1rc and VirtualGL 2.1 final.

● Seamless windows in TurboVNC

Response: In a perfect world ... The problem is that the RFB protocol is image-based, not window-based. At the RFB server level, VNC has no idea which pixels correspond to which window. It would require so much hacking to VNC to make this work that it wouldn't be VNC anymore. Accelerating NX is a much healthier prospect, since NX supports a seamless window mode.

● Equivalent of GLP on Linux

Response: We want this too. Badly. In fact, we have a proposal for the use of the EGL API to serve this purpose. But convincing the 3D graphics hardware vendors is the real trick.

● Improve ease of use and installation

Response: This is always a goal. We made vast improvements between VGL 2.0.x and 2.1 in this respect, but there is still more to be done.

11 ● Video acceleration (MPEG, Xvid/DivX, H.264)

Response: Not sure what was meant by this.

● Use of the GPU for compression/decompression

Response: We want this too. It might be difficult to develop a JPEG algorithm that performs well on the GPU, but at the very least, it should be straightforward to use the GPU for YUV conversion. Any volunteers?

● Better cooperation with TightVNC

Response: We're working on it ...

2.14 Proposed Actions For the most part, users seemed to be happy with VirtualGL and TurboVNC. There were a few areas which were highlighted as deficient. Based on these areas, we propose the following future directions for VirtualGL and TurboVNC development.

● Provide better support for users of Debian-based platforms, including perhaps shipping .deb or .tgz binaries.

● Provide a 64-bit native Linux version of TurboVNC.

● Provide better support for high-latency networks (through performance enhancements to TurboVNC and a possible accelerated version of NX.)

● Work with TightVNC group to port some or all of Turbo enhancements into their code base.

● Try to accelerate NX so that it performs at least in the same ballpark as TurboVNC.

● Evaluate NX as a potential replacement for Exceed on Windows clients.

● Investigate providing a rudimentary Windows server solution, based on TurboVNC.

RealVNC Integration

While this survey was being conducted, we spent some time exploring the possibility of integrating the TurboVNC enhancements into the RealVNC code base. This line of research did not pan out, however, largely due to the fact that the TurboVNC enhancements rely on the TightVNC enhancements, which do not yet exist in RealVNC.

However, we have approached the TightVNC Group about the potential for integrating the TurboVNC enhancements into their evolving (1.5) code base, which is based on RealVNC. We believe that it should be possible to integrate most of the Turbo enhancements back into TightVNC, although possibly

12 not all. The ideal goal would be to build TurboVNC and TightVNC from the same source.

NX Integration

We are actively investigating the possibility of using NX as an additional X proxy. The current issue is that NX's performance is limited by a large amount of CPU overhead on both server and client. We are looking into ways of working around this.

Only one respondee claimed to use Hummingbird Exceed as an X server and also claimed to take advantage of the quad-buffered stereo or transparent overlay features in VirtualGL, and it wasn't clear whether that user was taking advantage of those features in Exceed or in another X server. If NX could be accelerated to the point that it was as fast as TurboVNC, it would provide a viable replacement for Exceed on Windows clients, since NX supports seamless windows. The potential lack of quad- buffered stereo and transparent overlay support in such a Windows client solution seems to be a non- issue among the VirtualGL community.

13