illnyang / nvlax

Future-proof NvENC & NvFBC patcher (Linux/Windows)
GNU General Public License v3.0
159 stars 18 forks source link

Bypassing other limitations #3

Closed ninbura closed 6 months ago

ninbura commented 2 years ago

Not sure how else to contact you, may not be the right place to ask this but it feels related.

NVENC isn't the only artificial limitation imposed on consumer end NVIDIA GPUs, another one I'm running into is a cap on the amount of unique displays you can have connected to a single GPU. NVIDIA has put that cap at 4, which even applies when using MST DisplayPort splitters or daisy chaining. Seems fairly similar to the NVENC cap as the same limitation is not imposed on Quadro GPUs of the same architecture.

I'm wondering if a patch can be similarly created to bypass this limitation.

illnyang commented 2 years ago

Unfortunately, I don't have 4+ displays at hand to find out what the error message is when you try to plug them. Take a look at lax_fbc.cc to see what I mean - I look for the error message itself and work my way up from there. If you happen to know a string that I should be looking for I'd be more than thankful.

farchord commented 2 years ago

Slightly off subject, but I'd really like to see your 'More than 4 displays' setup, must be awesome!

ninbura commented 2 years ago

Take a look at lax_fbc.cc to see what I mean

I'm not sure I understand, I searched my entire drive for lax_fbc.cc and no file came up. But I'd be more to happy to provide any information I can. PS I'm on Windows 11 right now, and I'm fairly familiar with WSL2 which I use for development.

Slightly off subject, but I'd really like to see your 'More than 4 displays' setup, must be awesome!

You can kind of see it in my profile picture but here's a picture 😅

Gonna be hard to decipher what's going on, but the setup is actually composed of 3 PCs, that's why there are more screens than you'd think.

Kyhze commented 2 years ago

I could very well be wrong, but I would assume that this kind of limitations wasn't implemented at the driver level by Nvidia, but rather on the VBIOS side of things... Which could be patched theorically, but that would be an entirely new project, in my opinion.

ninbura commented 2 years ago

Interesting, could you explain your reasoning? Because it's tied to a hardware video output?

Just seemed fairly similar to the NVENC cap to me.

Kyhze commented 2 years ago

Yes, that is my reasoning behind it. For example I also know Nvidia has fixed DisplayPort issues via firmware (read: VBIOS) updates in the past. Besides, it sounds like an "easy" bypass if it was indeed handled on the driver side, so I find it more likely that Nvidia would lock this down in a more "secure" manner, through VBIOS instead. And also yes, since it seems closer to the hardware than the drivers ring, VBIOS again sounds like the most likely place to look in order to unlock this. But again, I could be completely wrong about all this! It just seems more logical to me.

ninbura commented 2 years ago

The only "evidence" I've come across that would suggest it's the driver is someone online mentioning that there used to be a total resolution cap on his GTX 1080, but after updating to a newer driver at some point the display cap came in.

But then it could be a driver thing for older cards and a VBIOS thing for newer cards, either way I'm interested to find out.

Kyhze commented 2 years ago

You have to also consider that HDMI/DisplayPort/DVI norms can only support so much, when it comes to maximum resolution and number of displays they can physically drive. At the end of the day, it's down to signal strength and bandwidth limitations. It's hard to tell where to look exactly, but all of these possibilities have to be considered.

farchord commented 2 years ago

There's also the fact that each card has different types of outputs in varying quantities. For some reason, my card that I just bought at a so-not-inflated price (Feel the sarcasm...) has 6 outputs but you can't use 6 screens, it just allows you to use various combinaisons. I also kinda doubt it's set on a driver level considering the nvidia driver is one size fits all.

Kyhze commented 2 years ago

Yup, that's also true. It could also simply be a limitation on the PCB somewhere for G/RTX cards as opposed to Quadros using the same GPU dies. I know Nvidia has a few tricks for setting PCI IDs with pull up/down configurations directly on the PCB, and as such, differenciate consummer grade GPUs from Quadros (along with different VBIOSes, and drivers as well). Source: http://www.eevblog.com/forum/chat/hacking-nvidia-cards-into-their-professional-counterparts/msg207550/#msg207550

tl;dr: There's a lot more parameters to take into consideration than the drivers alone.

illnyang commented 2 years ago

I'm not sure I understand, I searched my entire drive for lax_fbc.cc and no file came up.

nvlax/src/lax_fbc.cc