Page 1 of 1

Specific instructions for enabling 3d acceleration?

Posted: 8. Aug 2012, 17:58
by martyscholes
Wanting to catapult my computing into the 20th century, I have ordered a Sun-branded Nvidia Quadro card for install into a Solaris 11 DL585 G2 Sun Ray server running the default GNOME desktop for multiple users.

While trying to wrap my brain around this, I cannot find specifics about 3D acceleration of Win 7/8 guests with this host configuration, since most 3D acceleration discussion centers around using the 3D card on the console, yet we are using Sun Ray. I have read that back in the day that Sun had some software plugin for Sun Ray which did something with Chromium and VirtualGL. How does all of this work? Will I just plug in the card, boot the server and then the guests (with appropriate GA installed) magically work? I already have the Solaris 11 Nvidia drivers installed. Do I need anything else?

Several questions come to mind:
* Will this even work?
* Will I need additional hardware or software?
* Should the console stay plugged into the existing video card or does it need to be plugged into the 3D card?
* Will the video card magically be shared by all of the guests?
** If the card will be shared, how can I monitor the card to know when it is being overutilized? Solaris already has fantastic tools to monitor CPU, bus, memory network, disk, fibre, etc. utilization. Can I monitor GPU utilization? A GPU specific prstat? Use topas? (sorry, couldn't resist)
** If the card will NOT be shared, then how does VirtualBox decide which guest can use the card? Do the guests compete with native Solaris OpenGL applications?
* What tests can I perform to determine that the card is installed and software is configured correctly?
* Since we use multihead and Xinerama, I understand all 2D Sun Ray acceleration is unavailable. Will I see any gains even if I get this to work?
* Should I just throw out Sun Ray software and VirtualBox and replace it with the complete VDI suite?
* What else should I be asking?

Thanks and apologies if this is covered in detail somewhere,
Marty

Re: Specific instructions for enabling 3d acceleration?

Posted: 11. Aug 2012, 23:33
by martyscholes
Maybe my experience will help out the next guy. The card arrived today, a Quadro FX 1700, I think. Installed with no problems and booted fine.

I will answer some of my own questions.

* Will this even work?
Maybe. It seems that some things have changed. For example, Windows 7 previously had a graphics experience index of 1.0 both for Graphics and Gaming graphics. The test took much longer than previously and now produces an experience index of 2.0 for Graphics and 3.0 for Gaming graphics. I still cannot enable Aero effects. None of the built in Win 7 games will start. World of Warcraft was just installed and started, but it tells me, "Please make sure DirectX 9.0c is installed and your video drivers are up-to-date." Minecraft jar file on Solaris 11 (I think) restarted all Sun Ray sessions. Windows 8 now boots to a black screen if 3D acceleration is enabled. Neither Ubuntu nor Mint seem to know I have 3D graphics available. On the other hand, both Solaris glxgears and glxinfo will run. Previously both failed with an error along the lines of "cannot open RGB display." The OpenGL screensavers now will start but run horribly slow, about 0.5 fps. Previously they would not start.

* Will I need additional hardware or software?
Very likely. It seems the Windows guests have quasi-3D as does the Xnewt Sun Ray X server.

* Should the console stay plugged into the existing video card or does it need to be plugged into the 3D card?
The console must be plugged into the 3D card.

* Will the video card magically be shared by all of the guests?
This appears to be the case.

** If the card will be shared, how can I monitor the card to know when it is being overutilized? Solaris already has fantastic tools to monitor CPU, bus, memory network, disk, fibre, etc. utilization. Can I monitor GPU utilization? A GPU specific prstat? Use topas? (sorry, couldn't resist)
I have no clue.

* What tests can I perform to determine that the card is installed and software is configured correctly?
Still don't know.

* Since we use multihead and Xinerama, I understand all 2D Sun Ray acceleration is unavailable. Will I see any gains even if I get this to work?
So far, the answer is no gains.

If anyone can add to this, please jump in. Once I find a PS/2 mouse, I will try to log into the console and see what happens there.

Thanks,
Marty

Re: Specific instructions for enabling 3d acceleration?

Posted: 13. Aug 2012, 15:51
by martyscholes
I have learned more. It seems that OpenGL => XServer. In other words, an X server has OpenGL, not the host. Running 3D apps on the console worked like a champ and was completely automatic. On Sun Ray, or any remote client, the X server, or X proxy acting as a server (Xnewt in Sun Ray), must have OpenGL. It's not enough that the host has OpenGL support, the X server must have it too.

Sadly, only the console X server had OpenGL support. I found VirtualGL which, through some interposing magic, intercepts the OpenGL stuff from other X servers, e.g. Sun Ray's Xnewt, and redirects those commands to an off-screen area on the console X server, then reads back the image and forwards it to the Sun Ray X server. In the end, the Sun Rays will behave (almost) as if there is a 3D card in them. I was getting some 6 megapixels of throughput, which is sad for a local machine, but amazing for a remote client.

The above also should have implications for RDP connections as well as VNC or any remote connection. The X server used by VirtualBox MUST have OpenGL, or pretend to have OpenGL via something like VirtualGL. This makes me wonder what happens in a headless environment.

After getting all non-VirtualBox Solaris OpenGL application to run on the Sun Rays, and getting everything including VirtualBox to run on the console, I noticed that VirtualBox crashes with a segmentation fault under VirtualGL on the Sun Rays. I already fixed the the secure library path with crle, but VB would segfault every time. Since it was setuid, I could not truss VB when it launched.

I updgraded VB from 4.1.16 to 4.1.18 and nothing changed. I upgraded to the new Nvidia drivers from nvidia.com and ran nvidia-xconfig. At that point, vbiosd was crashing. I was able to recover vbiosd by removing and reinstalling the original drivers. I also lost the console X server and after hours of tinkering, could not bring it back. Fortunately, I had a recent boot environment less than a week old and I document all changes to the system. This morning I booted to the previous boot environment and will replay all of the changes from the past week, except the Nvidia drivers. DO NOT INSTALL THE NVIDIA DRIVERS.

There was another lesson in here about creating a copy of the BE before messing with the server. I got lucky in that a BE was made for me when installing a package recently; I dodged a bullet.

I still do not understand the segfault of VB under VirtualGL.

Re: Specific instructions for enabling 3d acceleration?

Posted: 15. Aug 2012, 15:44
by martyscholes
Another update. I have been in touch with DRC on the VirtualGL list and it is now clear that VirtualBox is crashing under VirtualGL and not VirtualGL crashing. The discussion is located at http://news.gmane.org/gmane.comp.video. ... ualgl.user. Interestingly, the log for the guest is ok, showing the last entry:

Code: Select all

00:00:07.305 Changing the VM state from 'POWERING_ON' to 'RUNNING'.
The VBoxSVC process, on the other hand, is having difficulties. I have attached an example of a failure. The VBOX_E_OBJECT_IN_USE errors happen after the crash takes place.

How can I troubleshoot this further?

Thanks,
Marty