Return to Level1Techs.com

Window games on linux questions - vkd3d for nvidia rtx support ? and other quest


#1

Now that nvidia are releasing new GPUs, it has occurred to me that games that leverage ray tracing will be starting to appear. At least during the next 2 years. Problems is:

How to run them on linux?

Well I looked into this further and discovered that dxvk is only meant for dx10 and dx11.

But Microsoft’s Direct-X based Raytracing API seems to be written as an extension to dx12.

Problem: dxvk does not support dx12. Therefor it cannot support Microsoft’s form of raytracing APIs (for the new nvidia cards). That is likely what new windows games will be using that support raytracing.

(They could be written in vulkan instead, of course, then that would not be such a problem here, and I’m not sure how good / appealing vulkan’s ray tracing api is for windows games devs, vs the microsoft one).

Then I found this lutris forum thread, which was quite illuminating:

It seems to say that vkd3d is the conversion layer for dx12 to vulkan (on linux). And that it is being done by the wine project.

However there is no github repo, and little information about it. Other than it’s rather new, and not finished yet to any standard that’s going to be broadly useful. Without specifically programming those games to ‘go around’ the missing bits.

The other thing is there does not seem to be such a great deal of community involvelment around wine’s vkd3d project. At least when compared to dxvk anyhow. So is it really our best bet, for dx 12 support on linux ?

Nevermind the raytracing extensions yet. I would assume that means the goal is still rather far off into the future?

Or is there also another different / competing linux project aiming for the same dx12 compatibility goals? That I did not come across? For example will the more popular dxvk project be adding dx12 support at some point in the future? Seems not?

—> Does this mean that our best bet is running a windows virtual machine instead?

Then I have some follow up question(s):

If I need 2 gpus for running under a vm, then can the linux one be a gt 1030, if the vm is using an nvidia rtx gpu? Or will having 2 nvidia gpus cause some typs of a drivers conflict? Or the gt 1030 not be powerful enough, to cope with coping over the framebuffers, and all that?

Or can I make the host gpu the intel igp graphics? Would that be better than the gt1030, or is it impossible to use intel igp in the first place, in this scenario?


#2

I think you’re a bit confused. All the big hassle is about real-time ray tracing instead of using shaders. Not ray tracing in general. You do not need api’s to do ray tracing. It can be done in like 50 loc in c++ for simple geometric shapes.

Once the drivers support them, that’s all we’ll have to do. Same as before. I’m not sure how Nvidia does their stuff under the hood as its just a binary blob though. Not sure what magic they include.

Yes, as most developers don’t write their own game engines from scratch. It will still be several years before its probably widely adopted, and at the least, there would be games who have a fallback. If they only made games which support the that-year GPU then there would be few customers. Stuff has to reach back like 5 years of compatibility.

It’s not like every game will suddenly switch over to RTX and use DX12; most games still don’t even use DX12. So I think you’re just worrying about a non-existent problem.


To answer your passthru questions: no you don’t need two discrete GPU’s. You can use the iGPU on the host and just pass one to the guest. If you are using a system with no iGPU then you will indeed need two.

Check out the looking glass thread for resources.


#3

Nvidia is working on raytracing extensions for Vulkan (http://on-demand.gputechconf.com/gtc/2018/presentation/s8521-advanced-graphics-extensions-for-vulkan.pdf). They are also making sure that the extension is very similar to how it’s done in DirectX so that games can be easily ported. So all that needs to happen is for the vkd3d developers to map DirectX raytracing to Vulkan raytracing.

Btw. games won’t replace rasterization with raytracing anytime soon. All that will happen is that some select effects will be accelerated in hardware. The games will fall back to a slower/worse looking approximation on older hardware.


#4

Thanks for these replies. - Indeed, it is very encouraging to hear that the Ray Tracing APIs will be similar to each other (between Direct X and Vulkan).

So then my question mostly becomes about —> general DX12 support on linux. Rather than specifically about ray tracing. Because we can be fairly confident that if DX12 is supported well enough, than the raytracing extensions will be too.


#5

DirectX is a HAL created by Microsoft. They own this. Unless they decide to port it to linux then on the MS platform it shall stay.

IIRC <=DX11 on linux was reverse engineered or the patents wore off.


#6

As written by the OP in the first post the wine developers are already working on a DX12 -> Vulkan wrapper.