Find the answer to your Linux question:
Results 1 to 7 of 7
Hello, I will be getting a new computer soon with SLI 9800s and I really want to run DirectX10 games inside of linux (without dualboot). Is this possible with applications ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Sep 2008
    Posts
    10

    DirectX 10 in linux?


    Hello, I will be getting a new computer soon with SLI 9800s and I really want to run DirectX10 games inside of linux (without dualboot). Is this possible with applications such as Virtual Box, Cedega, or anyothers? And if possible which is the best? I would of course need to buy Vista. Thanks for the help in advance!

  2. #2
    Linux Guru
    Join Date
    Nov 2007
    Location
    Córdoba (Spain)
    Posts
    1,513
    Your best bet is wine, but only for directx9 and previous versions:

    Wine HQ - Wine Status DirectX DLLs

    The support for directx10 is non-existant, and I doubt that will change soon, because the number of titles based on directx10 is not really that big. Only MS likes it.

    The support in cedega for directx is worse for everything but the anticopy stuff. So, that's out of the question. There's no plan to support dx10 in cedega either as far as I know.

    About VM's like virtualbox, I guess you can install dx10 on windows under them. But that will make you no good at all, since you can't use windows drivers on a vm (and that leaves out 3d acceleration).

    So: for dx9 and previous versions use wine, for dx10 your only choiuce is to dual boot.

  3. #3
    Just Joined!
    Join Date
    Sep 2008
    Posts
    10
    Thank you for the quick response but in this thread someone managed to run windows drivers in a vm. Is this problem with only certain drivers?

  4. #4
    Linux Guru
    Join Date
    Nov 2007
    Location
    Córdoba (Spain)
    Posts
    1,513
    Quote Originally Posted by pirate1 View Post
    Thank you for the quick response but in this thread someone managed to run windows drivers in a vm. Is this problem with only certain drivers?
    That really amazes me. I would need more details to tell you anything more about the issue.

    The problem with windows drivers is that they need direct access to the hardware. In linux, there's no such thing. Only the kernel has direct access to the hardware.

    And that's just the first barrier. There's another one: inside a VM, there's no real hardware. VM's virtualize the hardware. For example, they emulate a real BIOS (usually a ROM that's been dumped into a binary file), an VGA BIOS, virtual network cards (which have nothing to do with your real (if any) cards on your computer, a virtual HD using a massive file... and so on.

    So, the OS inside a VM usually has no idea about the real hardware of your physical machine. It only can handle the virtual hardware that the VM is emulating. Of course, there's no way that nvidia or ati are going to allow the usage of their roms, and even if it was possible, you would still need an additional layer to bridge the virtual nvidia card on your VM to the DRI subsystem and the graphics driver on X and the linux kernel.



    About that thread: my guess is that the software installed, and the user is probably using the software of the printer without a problem. But I doubt the driver is really working. Probably the VM is serving an emulated printer, and windows is using some kind of generic driver or something supplied by your VM (and not the original printer driver).

    Without further details I can only guess.

    However, there's always the possibility that there's something new into scene that I am not aware of

  5. #5
    Just Joined!
    Join Date
    Sep 2008
    Posts
    10
    So, if I matched the virtual hardware in the VM with my physcial hardware, I would still need an additional layer to bridge the virtual nvidia card on my VM to the DRI subsystem and the graphics driver on X to the linux kernel.

    Are the DRI subsystem and graphics driver on x the only ones who have access to the kernel?

    What is an nvidia ROM?

    How would I go about creating this additional layer? Do you have any refrences where I can read up more on the process of creating an additional layer?

    Thanks again for your input.

  6. #6
    Linux Guru
    Join Date
    Nov 2007
    Location
    Córdoba (Spain)
    Posts
    1,513
    Quote Originally Posted by pirate1 View Post
    Are the DRI subsystem and graphics driver on x the only ones who have access to the kernel?
    The dri subsystem communicates with drm stuff of the kernel. DRI per sé can't do anything that's a kernel task. It's just an interface, a way that X uses to talk to the graphics kernel module, to as it to do something. The kernel space is a very well delimited zone, and userland applications can't freely access it.

    Apps can ask the kernel to do something, but they can't talk directly to the graphics card, to put an example. To be able to use 3d acceleration inside an VM, let's say, to run doom3, then doom3 would need to talk to an accelerated graphics driver in the VM, then the VM would need a way to speak directly with the kernel driver for nvidia, ati, intel or whatever chip you have, so the calls can be accelerated by that driver.

    What is an nvidia ROM?
    A rom is a read only memory, I was using it to speak about the firmware of an nvidia card (choose any other brand, it doesn't really matter). VM's usually use a ROM BIOS taken from a regular vga card. To put an example: I think that qemu (a famous VM) uses a Cirrus Logic VGA BIOS. So, when you fire up a qemu VM, you can see your VM booting like if it had a Cirrus Logic graphics card. Those are simple cards, and giving support for them is relatively simple. Before you ask: no, you can't just dump a BIOS from a 3d card and rock on your VM.

    How would I go about creating this additional layer? Do you have any refrences where I can read up more on the process of creating an additional layer?
    That'd involve tons of coding and kernel hacking. It's way above my knowledge. I never programmed a VM, and my knowledge about the linux kernel and device driver programming is not the best around either. You would need to know very well the host and the guest OS at kernel API level, since you would probably need to program a different driver for each one, or at least, a driver for the guest OS (windows) and a layer to communicate the VM with the graphics driver on your Linux kernel.

    As far as I know, vmware was doing something in these lines (so if you are interested, google for vmware 3d acceleration). I know it was experimental for quite a long time, and never worked well. It's long since I reviewed it so the things might have changed, I don't really know. I am sorry that I didn't think of that before, but better late than never (I don't know it's current state, it might just not work either).

    However, if you want performance, a virtual machine like vmware is never the best option, unless you don't mind wasting machine resources uselessly. It's also true that the machines nowadays have lots of power to waste... So it's up to you.

  7. #7
    Just Joined!
    Join Date
    Sep 2008
    Posts
    10
    Well thanks allot for the clarifcation, I will definitely look into vmware 3d acceleration. I guess I will either have to dual boot or learn C so I can hack the kernal which isn't unlikely. I hate the idea of wasting resources uselessly, efficiency is a goal we should all strive for.

    Ps. How did you become so knowledgable? (PM)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •