Forum

Dx9 tex > dx11 tex

Vux said it was possible to convert a dx9 texture to a dx11 texture by using a dx9Texture handle with the FromSharedTexture(DX11)

I’m sure I tried it successfully at the time but it’s not working now.

Anyone else tried this?

b30.2

yes. just tried. works for dx9texture but not for videotexture. do you get an error in tty?

but true, it would not always work. see https://github.com/mrvux/dx11-vvvv/pull/42

thanks J… no text …

I have successfully used this on a fairly large multi-display system. However, on some textures (trying GPU splines at the moment) performance drops considerably (I can clearly monitor that by having pre and post render windows open). Are there any good practices regarding the source DX9 renderer with regards to performance onto DX11? I’m out of ideas here :(

Also, does the FPS of the DX9 get overridden by DX11? I need my final renderer to output at 50Hz.

that one is implemented already. and it works for me (as advertised).

Thanks for that. I am guessing that’s what I’m using already (to be precise, I am using not a texture conversion but layer conversion). I write “guessing” because, being a newbie, I’ve never compiled my own stuff, and my attempts at installing Visual Studio have failed (tried different installers). Anyway, that’s probably for another forum. Thanks for the pointer, though.

I highly recommend NOT to run dx9 and dx11 in the same instance. I can give explanations but that would be a long post, feel free to ask and I’ll add in there :)

Best bet if you want to have both is to use vvvv.exe /allowmultiple and have one vvvv with dx9 and one vvvv with dx11.

The reason why I’m trying it is because I went quite far down the DX11 route only to find that many shaders and effects were not ported yet. Running two instances of vvvv could have implications regarding network control, I’m thinking, so that leaves me in a tight spot. So far I have encountered is some rendering and performance issues within some DX9 subpatches, but that’s all. How can one toggle between two instances?

I can’t find a good explanation on how to change between two instances of vvvv. Can this be done seamlessly? (I need to switch between fullscreen renderers).

You wouldn’t actually toggle the two instances, just render to a texture on instance 1 (dx9) and share this texture with the second instance where you can put it on a quad for example.

@@vux please give that lengthy explanation :)

Right gonna need a bit of time to prepare that (please note if I could change node background color, it would be easier to make graphical explanations, no hint to devvvvs ;)

Well, I had actually been doing it the other way around, where the main patch had a DX11 renderer and the DX9 subpatches were treated like so:

This worked but it was a bit quirky (and performance was poorer than running the same DX9 patches standalone). Apart from the perfomance issues stated, I encountered the following:

  • The issue mentioned here: https://discourse.vvvv.org/
  • Some of the DX9 subpatches would render the first time I switched, but then stopped rendering after switching back (however this could be for reasons particular to those DX9 patches).

But, after @vux’s warning above, I’ve put them on the shelf until I understand how to solve the issue…

Made a little demo.
Just unzip directly to your vvvv-folder.
DoubleClick bat-file.
(Needs AddOns and DX11)

Demo.7z (3.0 kB)

Nice! First test looks good. Thank you.

I’ve unchecked the “solutions”, as it does not work here for me (and something that only works sometimes is not a real solution!).

I always get a zero output from the Info (EX9.Texture) Shared Handle pin; is that a bug? Thanks!

SharedDX9DX11.v4p (14.6 kB)

are you running with /dx9ex?

DOH! Forgot that /dx9ex was needed. That works MUCH better, thank you sir!

@bjoern I just tried your demo, it works out of the box if you copy it into vvvv main directory. Thx!
I just wanted to mention that you can also share a texture back into the same instance (/dx9ex enabled for sure). Just in case somebody wants to feed DX9 output into DX11 without starting two instances.

Until all stuff is converted to DX11 it would be great to have a single node that does the conversion.

@meierhans: that will be part of the next dx11 release, see: https://github.com/mrvux/dx11-vvvv-girlpower/pull/17