Dx11 multiscreen fullscreen without Eyefinity / Surround

Hi there!

background: I need to display hd resolution content to eight outputs at a time. I’ve got two nvidia cards capable of doing so. However, the NVidia driver does not allow me to group the outputs together on both cards - it would work on one, but not on two.

So usually, I’d group the outputs together and have one renderer per card to go fullscreen with (fullscreen over all four outputs).

Since this is not possible, I’m left with two solutions:

  1. Have a separate renderer for each output, leaving me with eight renderers, which (probably) results in having a lot of resources eight times on the cards (it was like that in dx9 as far as I remember).
  2. Not use fullscreen, but have one renderer per card and simply set each window to span over four desktops. Drawback: no real fullscreen, hence no VSync.

Are there other drawbacks to method 2? Also, I’ve seen previously that the fullscreen function in the dx11 pack does not actually make use of fullscreen windows, hence also does not have VSync. Is that still the case?

Any other ideas / ways to do it better?
I guess I could also render to two big textures, and then split those up amongst individual renderers… but I really think that’s going to be more costly then any of the two methods.

Thanks a lot!
dominikkoller

How about 2 dx11todx9 textures to two fullscreen renderers

Using two cards is likely to cause trouble, tried this myself and couldn’t get it to work properly.

Just use one card and two mst hubs 1-4.

are you talking about dx11 or dx9?
in case it’s dx11 and you don’t have any special node except for the packs you’re not of real fullscreen with v-sync anyways.

with two cards you will end up with doubling (at least double) all the resources anyways.

gut feeling says do the rendering in one (or two, per card) renderers with the final output resolution and distribute the final texture to all outputs. with nvidia cards i tested 3 in surround and one single vs all single desktops a couple of years ago and 3-1 setup was speedier.

bjoerns solution is the safest and the most predictable. but make sure you got a real good graphics card to handle the fillrate.

@sunep I can’t go fullscreen as fullscreen will always only fill one output, and I don’t want four renderers using all their own separate resources. If I was after VSync, yeah that or custom dx11 nodes would be what I’d have to do.

@bjoern thought about that. I’ve got experience with amd multicard setup - bad experience, but we got it to work in the end. Maybe you’re right and this is just the right solution… I’ll report back on what worked and what didn’t.

@woei thanks, in this case it’s good to know there’s no VSync in current dx11 nodes - gives me a reason not to worry about it.
By ‘distribute the final texture to all outputs’ do you mean simply having one renderer spanned over four screens (per card) or do you mean rendering to a texture and then, in a separate renderpass, fullscreenquad+proper texturetransform it to one renderer per output? Is there significant drawback in sizing one renderer over multiple screens (all of which belong to the same card)?

Thanks a lot! I’ll post what worked for me.

@sunep I can’t go fullscreen as fullscreen will always only fill one output, and I don’t want four renderers using all their own separate resources. If I was after VSync, yeah that or custom dx11 nodes would be what I’d have to do.

@bjoern thought about that. I’ve got experience with amd multicard setup - bad experience, but we got it to work in the end. Maybe you’re right and this is just the right solution… I’ll report back on what worked and what didn’t.

@woei thanks, in this case it’s good to know there’s no VSync in current dx11 nodes - gives me a reason not to worry about it.
By ‘distribute the final texture to all outputs’ do you mean simply having one renderer spanned over four screens (per card) or do you mean rendering to a texture and then, in a separate renderpass, fullscreenquad+proper texturetransform it to one renderer per output? Is there significant drawback in sizing one renderer over multiple screens (all of which belong to the same card)?

Thanks a lot! I’ll post what worked for me.

You can use the experimental Renderer (DX11 Form) to get “real fullscreen” + vsync in dx11. It won’t show up in the nodelist though. Just go to packs\dx11\nodes\plugins\experimental and drag that dll onto your patch.

I think you will have to render at least two textures (one per card).
Remember we tried two cards one texture for Amsterdam? Since the cards didn’t share their memory directly – even in a crossfire setup – the texture had to be “passed through cpu/ram” which was sloooow.

Just wondering how one would go about rendering those two textures, is it possible to assign renderers to certain devices in dx11?

For 2 textures I’d suggest 2 instances, one outputing to each card. You could also consider scalers and a 4k output from each card and zooming into quadrents of each output for the 4 outputs percard

Hey Dominik,
are you on win 10? there is some problems related to surround.
https://forums.geforce.com/default/topic/860380/nvidia-surround/windows-10-surround-not-fully-working/