|
|
Log in / Subscribe / Register

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Dave Airlie has posted an introduction to Virgil, a new 3D virtual GPU project for the QEMU emulator, for which he is seeking developer input. The goal, he says, is "a 3D capable virtual GPU for qemu that can be used by Linux and eventually Windows guests to provide OpenGL/Direct3D support inside the guest. It uses an interface based on Gallium/TGSI along with virtio to communicate between guest and host, and it goal is to provided an OpenGL renderer along with a complete Linux driver stack for the guest." Airlie also goes out of his way to be clear that he is recruiting developers, not users, noting "I can't stress this strongly enough, this isn't end user ready, not even close".


to post comments

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 3:53 UTC (Sat) by raven667 (subscriber, #5198) [Link] (13 responses)

How is this different than vmwgfx kernel driver and the SVGA3D virtual hardware from VMware which I believe is also Gallium/TGSI based? Is it possible to use the same kernel driver or substantially share code with it? At the very least the architecture can be examined to find out where the pitfalls are to hopefully avoid them in this implementation.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 9:19 UTC (Sat) by kugel (subscriber, #70540) [Link] (2 responses)

Yeah, I was also wondering if the VMware solution can be re-used. I was wondering that already when VirtualBox announced that it seeks a FOSS Virtual GPU solution a few weeks ago.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 4:33 UTC (Sun) by airlied (subscriber, #9104) [Link] (1 responses)

And the VirtualBox solution is GL based, but I've heard people question how secure it is, and GL is way too large an interface to passthrough safely.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 16:05 UTC (Mon) by raven667 (subscriber, #5198) [Link]

This should benefit from the same effort trying to make WebGL safe, but any big interface across the hypervisor barrier is always suspect.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 4:32 UTC (Sun) by airlied (subscriber, #9104) [Link] (9 responses)

The fact we don't have the source code to the actual virtual GPU, and we would be bound by the vmware interface.

vmwgfx kernel and userspace drivers are only the guest components of the solution, the actual virtual GPU hardware is closed source, and there is no way to make changes to it since its mostly unspecified.

Its also based on DX9 interface, not TGSI or Gallium. The SVGA3D gallium driver can only support GL2.1 due to the DX9 limitations for now. VMware may be doing a new rev of the hw, but why would I want to tie myself to an interface I have no control over.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 13:38 UTC (Sun) by oshepherd (guest, #90163) [Link] (3 responses)

1. DXSI and TGSI are near enough identical! Tungsten Graphics intentionally made this point to simplify things for developers used to DirectX drivers

2. Has anyone even contacted VMWare about future directions? A common interface benefits both parties in reduced guest driver development cost.

SVGA3D is a fully documented and "in the open" interface, with lots of open source samples for interacting with it.

All you've said so far is "VMWare control their interface, so we aren't interested". Well, yeah. They made an interface because they needed one, and they therefore control it by default, but it doesn't seem like anybody has actually talked to them.

Meanwhile inventing your own interface means duplicating a lot of work that has already been done (And is anyone stepping up to, for example, implement a driver - or two (XPDDM and WDDM) - for Windows guests?

Building a new interface is a lot of work. I wouldn't do it if I didn't have to.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 21:17 UTC (Sun) by airlied (subscriber, #9104) [Link]

1. DXSI and TGSI aren't identical though, they are just close, the opcode set is really a union of DXSI and GL programs. Also DX9 is not DX11, their current design is DX9 based, they are internally developing something better, but again non-open development process. So writing an implementation of an interface that is fixed and I can't modify didn't seem like something that would be good value for my employer.

2. VMware haven't shown any interest in open sourcing any parts of their device beyond the Linux guest bits, and lots of code close to Mesa. I've talked to their engineers plenty of times and I've never seen any indication their management would let them open source their virtual GPU design process, or interact with others on it. I invited them to discuss open source virt GPU devices years ago, and they said they couldn't talk specifics.

3. Last I looked the VMware Windows drivers specifically say running their drivers on non-VMware implementations is against the license. That was one of the other reasons I started again, since if we have to write Windows drivers from scratch it may as well be for a device that can actually run DX11.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 8:21 UTC (Mon) by airlied (subscriber, #9104) [Link] (1 responses)

Oh I forgot, so far nobody is stepping up to do anything :-)

I'm doing this on my own for now, if I have to write a Windows driver I'll have to write a Windows driver, I'd rather not though!

But I'd never be happy using a closed Windows driver anyways, so even with the ability to re-use vmware drivers in a perfect world, Red Hat would want an open-source Windows driver. VirtualBox have started on an open source Windows driver, so its not impossible.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 16:15 UTC (Mon) by raven667 (subscriber, #5198) [Link]

It's the Internet! Don't we all get to backseat drive your project 8-)

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 16:12 UTC (Mon) by raven667 (subscriber, #5198) [Link] (4 responses)

I'm not an expert on this, I just read LWN a lot, but isn't the VMware graphics system implemented by Tungsten Graphics and isn't their solution almost entirely based on open source components which are widely used on Linux? It seem that there could be some amount of infrastructure sharing which will hopefully make this easier to implement and take advantage of any operational knowledge VMware has acquired on how this should be designed.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 16:34 UTC (Mon) by Jonno (guest, #49613) [Link] (3 responses)

> isn't their solution almost entirely based on open source components which are widely used on Linux?
No, only the guest driver for Linux is, the host drivers (for any OS) and the Windows guest driver are closed source.

Additionally the guest-to-host protocol is not fully documented publicly (though most of it can be inferred from the Linux guest driver source code), making third-party hacking on the low-level stuff in the guest driver difficult, and making it all but impossible to write a fully compatible host implementation.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 17:34 UTC (Mon) by raven667 (subscriber, #5198) [Link] (2 responses)

I thought that the SVGA3D virtual hardware was just a wrapper around the open source Gallium3D drivers such that the bulk of the complexity is in open source components and that the closed source parts are just the binary protocol glue which holds it together.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 22, 2013 23:14 UTC (Mon) by airlied (subscriber, #9104) [Link] (1 responses)

No its nothing like that.

Though we have no real knowledge of what goes on inside the VMware host application,

The SVGA3D guest drivers just do gallium->DX9 interface conversion and send it to the virtual GPU hardware.

They don't wrap gallium3d drivers inside their VM at all, they talk either OpenGL or D3D to whatever OS they are running on. They have a lot of closed source complexity.

Dave.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 23, 2013 16:29 UTC (Tue) by raven667 (subscriber, #5198) [Link]

Thanks for taking the time to explain, best of luck in your project.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 9:20 UTC (Sat) by ibukanov (subscriber, #3942) [Link] (6 responses)

I wish people would do more research when picking up a project name. From https://code.google.com/p/virgil/ :

Virgil is a fast and light programming language which balances object-oriented, functional, and procedural programming features. It integrates classes, functions, tuples, and type parameters and offers an advanced optimizing compiler for both the JVM and native platforms.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 9:30 UTC (Sat) by ledow (guest, #11753) [Link] (3 responses)

I don't think there's a name in the world that you can use without it already having been used in the industry at least once.

I'd much prefer they follow the usual trademark procedure (so long as it's not in the same area, you can use the same name as another project), and not waste time choosing names and instead get some code written.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 10:11 UTC (Sat) by ibukanov (subscriber, #3942) [Link] (2 responses)

This is mostly an issue of courtesy. Anything related to Linux kernel attracts vastly more attention than some not well known programming language. If the project name would be indeed Virgil, not virgl, as it was pointed out in the comment below, searching for virgil programming and similar terms would bring items related to Virtual GL, not that language.

So popularity should make developers more careful with choosing names. For this reason I was glad when Mozilla changed the name of the browser to Firefox, keeping Firebird database guys and users less troubled. On similar grounds Google sticking with the name Go for their language just showed that language authors cared less about others then they might be given Google's weight.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 4:36 UTC (Sun) by airlied (subscriber, #9104) [Link] (1 responses)

I did a google search and nothing showed up of much interest, so really just because someone niche language has picked a name and has a google code repo, has little bearing. Like really every name is taken on github already, does that actually matter though. Is that language ever going to take over the world?

The drivers are internally named virgl, the project I called virgil as I knew virgl wasn't pronounceable, I could probably call it virgil3d to completely distinguish it from others.

Virgil

Posted Jul 21, 2013 12:59 UTC (Sun) by oldtomas (guest, #72579) [Link]

Actually, I think it's a good name. And I don't see a problem in name collissions.

An elegant solution would be to put a "courtesy link", à la "Looking for Virgil, the programming language?

Contacting them would be nice too.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 9:32 UTC (Sat) by chris.wilson (guest, #42619) [Link] (1 responses)

In the code, the project is referred to as 'virgl' (Virtual GL). I presume using "Virgil" in the announcement was a slip of the tongue.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 20, 2013 9:40 UTC (Sat) by kugel (subscriber, #70540) [Link]

The project website urls also use virgil.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 9:43 UTC (Sun) by gioele (subscriber, #61675) [Link] (2 responses)

How does Virgil interact with Red Hat's Spice protocol for QEMU/KVM?

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 21, 2013 21:18 UTC (Sun) by airlied (subscriber, #9104) [Link] (1 responses)

It doesn't.

This project is a research project to look at a local virtual GPU with 3D capabilities, SPICE/QXL is a 2D remoting project. There is a question about this in the virgil questions page.

If you have a more specific question I can probably answer that.

Airlie: Introducing Virgil - 3D virtual GPU for qemu

Posted Jul 27, 2013 21:06 UTC (Sat) by nix (subscriber, #2304) [Link]

I think the real question was 'will we get 3D support in our spicec sessions out of this?' to which the answer appears to be 'no'. Dammit :/ :/ :/


Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds