jamesstringerparsec / Easy-GPU-PV

A Project dedicated to making GPU Partitioning on Windows easier!
4.22k stars 424 forks source link

Client/VM is stuck at 1024x768 #190

Open kingkj52 opened 2 years ago

kingkj52 commented 2 years ago

I've followed the process (have a 3080 Ti), but when connecting in, the VM, in windows display settings, is locked to 1024x768. Even after using the update drivers ps1 file, and using the file to gather driver files into a zip, manually copying them over to C:\Windows, and rebooting, the issue remains. It is acting as if the client has no graphics drivers. Is there a workaround for this, or did I do something wrong?

Swany6mm commented 2 years ago

I don't have a solution, but I've noticed that when you disable the MS Hyper V Adapter, it defaults to an MS Basic Adapter, which can't go any higher. (validate by right clicking Desktop>Display>Advanced Setting).

As of now, I cannot get Parsec to go above 1080p no matter what I do because of this. MS Basic is limited to 768p and the Hyper Visor Display is limited to 1080. I can SEE the nVidia adapter is Device Manager, but other than when I use RDP, I have never been able to get Parsec to go above 1080p (the dummy plug I have goes well above that and works with other Streaming Services)

iwolfking commented 2 years ago

I am not sure the exact cause, but I was able to use Custom Resolution Utility to add a custom resolution and then was able to set the new resolution in Display Settings.

The VM originally was not locked to 1024x768, but after a Windows Update and restart, that is when the issue started occurring.

Swany6mm commented 2 years ago

I tried that out, and after doing some reading in the forums, it wont help. It comes back around to the VM only seeing the Hyper V Video and not the Parsec Video or the actual nVidia GPU, and it can't make changes to the Hyper V setup. I'm starting to toy with the idea of giving VMWare ESXi a try since nVidia opened up their drivers earlier this year. See if that can't get it going since it's a bit more mature regarding GPU sharing/partitioning and Passthrough.

Thank you for the idea though. It was something I didn't even know existed.

klemens-st commented 2 years ago

This issue is easily fixed by installing a virtual display like usbmmidd

The cause of the issue you are experiencing is that ~recent versions of Parsec free edition launch Parsec virtual display only if no monitors are attached while adding virtual displays at will is reserved for paid editions.~ (EDIT: see my comment down this thread) We have two problems here:

  1. Hyper-V always plugs in its virtual display which does not support hardware acceleration, i.e. Parsec virtual display is never activated because there always is a display. Current release of Hyper-V does that even if you disable Hyper-V display in the guest.
  2. When no displays which support Nvidia rendering are connected, GPU driver disables acceleration, and the resolution is capped at 1024x768

The solution is to install a virtual display that is always "plugged in", like the one I mentioned above. This is analogous to using a dummy HDMI plug. You should then set the guest to display only this new virtual display.

Swany6mm commented 2 years ago

I've tried usbmmidd when I first started playing with GPU-P and had the same results, but admit, at this point, it may be worth revisiting with leasons learned.

I do use a dummy plug that is able to do up to 4k, but I've only tasked it with a max of 1440p within other programs, so I do know it is working as intended, but this also may be worth revisting with leasons learned and a different plug just to see if there's something Parsec isn't liking about it? With that said, when I use Parsec to connect directly to the host that only has the dummy plug, it works in 1440. But that is outside the VM and direct connect to the machine and GPU.

Another test I have in mind is I have another 1440 monitor sitting around. Thinking about digging it out and plugging it in with power, but leaving it off as I've read that some have tried that with better luck under differnt situations.

Thank you for the reply. I'll most likely be revisting usbmmidd tonight and remove the dummy plug. Appreciate your input and time!

edit So I tried the usbmmid again. Once installed it did show has having two monitors. I told Windows to display only on the montior (monitor 2) that was attached to the USB Mobile Monitor Virtual Display. I then made sure the Parsec Virtual was disabled/uninstall as well as disabling the Hyper V Video. Now when it boots, device manager shows HV Adapter as shut off, the USB functioning as well as the nvidia GPU. However, the monitor shows that it's attached to a wired display, but it's the MS Basic adapert. Back to it not seeing anything beyond the built in.

When redoing everything, things stay as they are until I reboot, then I lose everything. It's all still there in Device Manager, but I can no longer access it from the desktop

Swany6mm commented 2 years ago

I deployed a test VM using nothing but the scripts for EZ GPU and it still fails to work. I run the usbmmidd again, and again, it shows upand I can change the primary monitor/only show on the correct one, but again, when I reboot, it completely vanishes

Swany6mm commented 2 years ago

I found a band-aid/work around that is working. Don't like it as a perminant solution, so I'll keep researching, but will use this for now. Apologies, I don't knokw the proper way to link in git. I'll put a link to the thread and the actual message I used.

link https://github.com/jamesstringerparsec/Easy-GPU-PV/issues/59

"Ok I think I found a workaround, the trick is to activate a virtual display before the parsec driver. the VM is running windows 11 been access using windows 10. All the steps on the VM: Connect (parsec / hyper-v). Download and install usbmmidd_2 : this is a virtual display that we can control, take a look at the instructions, pretty simple. Activate using "deviceinstaller64 enableidd 1": Now you will have a virtual monitor. Create a task on task manager to run a bat file/command activating the virtual monitor: "deviceinstaller64 enableidd 1" and set it to run on windows start up and admin privileges without the need of the user to be logged in (after creating the task check for advanced settings or something like that). Disable the driver display of hyper-v (if its not already) on device manager. Reboot VM On display settings, disable all monitors that are not using the parsec driver (tip: take a look at refresh rate, parsec is the only one that goes above 60). Just to be sure, reboot VM again to check if the settings are being saved. Have fun.

PS: even the option to use client resolution is working."

klemens-st commented 2 years ago

Yes, usbmmidd needs to be enabled on each boot. I did it by adding a startup script in gpedit.msc but other methods work too.

veazel commented 1 year ago

Well the actual issues is .

When I log into my vm through the same account that is logged into my vm persecs, the persec virtual display Adapter started working, and it shows me the correct resolution ie. 1080p or even allow me to change the resolution of my vm.

But as soon as I disconnect and try to log in from guest persec account. Persec virtual display adapter didn't work. And Microsoft basic display driver seems to be on i.e. 1024x768 resolution gets displayed.

So the actual problem is how persec virtual display Adapter acts on host and guests connect.

Usbmmidd display driver works only if u uninstall and re-install it again and again after each remote session, which is quite annoying.

I hope this makes the issue clear , And help in more trouble shooting.

Also a very thanks for providing this script, can't say it's perfect but still it do open many opportunities.

I hope this issue with persec virtual display adapter will get fixed soon.

Thanks again.

gdias1992 commented 1 year ago

TL;DR

Download USBMMIDD v2 and create a task in Task Scheduler to solve the resolution problem.


startup.ps1 C:\usbmmidd_v2\deviceinstaller64 enableidd 1

In the Task Scheduler create a task that:

P.S².: Don't forget to deactivate all others monitors in the Windows Display Settings (show only on X).

image

Joekraft commented 1 year ago

@gdias1992 thanks for the clear instructions

I'll just add for anyone following them to also be sure to run usbmmidd.bat after downloading USBMMIDD to install the interfaces.

mad-ady commented 1 year ago

I too had the same issue after deploying a new Win 10 VM. The suggestions in this thread helped solve this issue, but - although I can see Nvidia 2060 in the Device Manager (working ok), and now I can change screen resolution, I can't see the GPU section in Task Manager, dxdiag says there is no d3d renderer, and UserBenchmark also fails with no d3d renderer. Any ideas what else I'm missing?

klemens-st commented 1 year ago

As long as GPU acceleration works without issues in your VM you can ignore the problems you mentioned. It is because of how Windows handles partitioned GPUs currently and should not affect performance. But yeah no GeForce Experience or other stuff that normally works with physical cards will work in the VM.

klemens-st commented 1 year ago

If anyone is still using my solution from one of the previous comments: I was not right about virtual displays no longer working on free editions of Parsec. What happened is that when they added the fallback feature, previous virtual display setting was auto removed from the config file. But it still works if you add it back manually to the config file as explained in #204

So no need to use usbmmidd after all :D

augustorubiao commented 1 year ago

I've tried all the above, had some issues and started tinkering the Hyper-V myself, found enhanced session mode activ on user section according to the scresnhots below.

The Hyper-V driver came back to life right after I deactivated it, accepting all resolutions.

Hope this does help someone.

image

image

totalitarian commented 1 year ago

I'm confused what the solution is here. I get 1024x768 in parsec. Should we be editing a config, running a .ps, installing an external driver or something else?

Any help would be appreciated thanks :)

augustorubiao commented 1 year ago

I've ended up using third-party custom resolution software along with a simple batch file running on Windows start to add the custom resolution + disable the Hyper-V Video driver to avoid BSOD.

Unfortunately I am not using the virtual PC right now since I have been having personal issues with RAM. I will try to grab this content for you.

mad-ady commented 1 year ago

I'm confused what the solution is here. I get 1024x768 in parsec. Should we be editing a config, running a .ps, installing an external driver or something else?

Any help would be appreciated thanks :)

Sorry for not having the time to reply sooner. I'm currently using the usbhimdd_v2 solution discussed above. The display is activated on logon via a scheduled task. I do have resolution problem when connecting via parsec -one instance comes up at 1024x768. So I applied a second "fix". I downloaded a command-line utility called qres.exe that allows me to set the resolution via script - something like qres.exe /x:1920 /y:1080. I do start it with a 5s delay after enabling the display, but it doesn't always work. So I keep it as a desktop shortcut handy (for various resolutions) that I activate manually. The downside is - if I disconnect and reconnect from parsec, it reverts to 1024x768, and I need to run the script manually.

klemens-st commented 1 year ago

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

MungbeanOuO commented 1 year ago

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

Just tested it, and this tweak didn't work.

klemens-st commented 1 year ago

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

Just tested it, and this tweak didn't work.

Share your config file

MungbeanOuO commented 1 year ago

Share your config file

I removed it in User\Install.ps1 according to that article $configfile += "host_virtual_monitors = 1" $configfile += "host_privacy_mode = 1" Then added $configfile += "host_virtual_monitor_fallback = 1" image

After that recreate a new VM. After the VM restarts, it returns to 1024x768. I have confirmed that the parameters in C:\ProgramData\Parsec\config.txt still exist. image

I have also tried closing parsec and restarting them after closing parsec.exe from the task manager, but the situation remains the same. Currently using usbmmidd_2 to connect through parsec, but I don't know how to adjust the refresh rate, which is a pity.

klemens-st commented 1 year ago

Ok try the following:

klemens-st commented 1 year ago

This has to be done after the vm is created. The config has to include host_virtual_monitors = 1

Kodikuu commented 1 year ago

Do not modify the configs set by the script, they are required.

On Sat, 25 Feb 2023, 14:24 Klemens Starybrat, @.***> wrote:

This has to be done after the vm is created. The config has to include host_virtual_monitors = 1

— Reply to this email directly, view it on GitHub https://github.com/jamesstringerparsec/Easy-GPU-PV/issues/190#issuecomment-1445130458, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6U6B2U3KG6KUWAG5Y4N4LWZIIYBANCNFSM556OYSAQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

klemens-st commented 1 year ago

@Kodikuu Im referring to your answer to my question which has worked for me fine. It should also work for others in this thread.

Kodikuu commented 1 year ago

Yes, in the config itself, after setup of a VM that no longer has that setting set.

The script already sets this, and host_privacy_mode. Both of which are needed. Do not modify the configs set by the script.

The thread you linked was a test of a new setting which failed.

MungbeanOuO commented 1 year ago

The script was changed back and it finally worked, but there are many details that need to be done to make the virtual display driver work properly. Or maybe my computer is weird. 1. After the Windows update in the VM, I encountered the problem that I could not log in automatically and the password was wrong. I don’t have a better solution for this, so I just re-created a VM. 2. When the VM enters the desktop for the first time, the browser or a certain application screen (for example, discord) on the physical machine may freeze. If you interact with that window, the entire screen will freeze. My solution is to re-plug the display output of the physical machine . 3. The host_virtual_monitors = 1 and host_privacy_mode = 1 entered by the script may disappear from the config when connecting to parsec for the first time, and they need to be added together with host_virtual_monitor_fallback = 1 to call out the virtual monitor normally. I don't know if I should update the VM's system, but I'm used to doing it. However, the update and restart will conflict with the parsec virtual display driver and config, which will cause the shutdown to be stuck or the first point. This part still needs more testing to see what the correct order of execution is. 4. The parsec remote screen cannot operate the operating system application (such as task manager). My solution is to close the parsec application and restart the VM.

The above are the problems and solutions I generally encountered during the setting process. My English is not good, so I used machine translation for my reply. Please forgive me if there are any typos. image

H4M5TER commented 1 year ago

This happened when I connect the VM using another Parsec account, which means the privacy mode can't be enabled and virtual monitor won't be created. Also #59 is worth reading.

I tried the usbmmidd solution but it's not good enough. I tried to use a DP dummy plug but not worked. It would be nice if Parsec would fix this. Or is there anyway to keep the Parsec VDA from disappearing?

mikekachar commented 1 year ago

All; I had this issue as well, and I wasn't accepting the fact to have to install a 3rd party software to fix it. Running VirtualBox on a flavor of Debian, with a Windows 11 VM. VirtualBox downloaded/installed from Oracle's VirtualBox website. Windows 11 wasn't changing out of 1024 x 768 resolution, but all other installed VM's were fine.

After a lot of looking around, I came across a Reddit post reply, done by u/cantfind105keys, which solved everything for me! It reads as follows:

1. Go to the download page of your VirtualBox version, which is https://download.virtualbox.org/virtualbox/7.0.6/ , (NOTE: If you have the latest version of VirtualBox (v7.0.8), then it would be here.) _2. Manually download VBoxGuestAdditions_7.0.6.iso from there,

  1. Check it downloaded OK using the checksums in SHA256SUMS,
  2. Manually insert the drive in the VM. If the VM is running, it’s in the Devices > Optical Drives > Choose a disk file menu, then select the iso you just downloaded._

NOTE: Make sure to check your VirtualBox version number, and place the end of the URL with your version number (or go up the Parent Directory and find your version). Also, you may need to manually add an extra CD-Rom drive for your VM, if you don't already have an extra one that's empty, so you can mount the .iso.

Hope this helps someone on here, and/or down the line.

klemens-st commented 1 year ago

@MungbeanOuO

After the Windows update in the VM, I encountered the problem that I could not log in automatically and the password was wrong. I don’t have a better solution for this, so I just re-created a VM.

It happened to me only once, no idea what the reason was. Never happened again.

The host_virtual_monitors = 1 and host_privacy_mode = 1 entered by the script may disappear from the config when connecting to parsec for the first time, and they need to be added together with host_virtual_monitor_fallback = 1 to call out the virtual monitor normally.

Yes, this is exactly what I was referring to in my previous comment, this is what @Kodikuu pointed me to in another thread but it happens to be the correct solution for the problem in this thread.

The parsec remote screen cannot operate the operating system application (such as task manager). My solution is to close the parsec application and restart the VM.

Strange, the VM installs parsec on the system, not per user. I never encountered this problem.

@mikekachar In this thread we are helping other make this work in Hyper-V (which it does, without problems if set up correctly)

db00t commented 1 year ago

I activated Microsoft Hyper-V Video in device manager on VM and got my 1920x1080 resolution back.

lucasfirl commented 1 year ago

This fixed it for me!

CarbonicKevin commented 1 year ago

For a fix that worked for me:

https://github.com/jamesstringerparsec/Easy-GPU-PV/issues/59#issuecomment-1615955872

ColdCactus commented 8 months ago

I activated Microsoft Hyper-V Video in device manager on VM and got my 1920x1080 resolution back.

Bam, fixed! Awesome!

I don't know for sure why it got deactivated, but I might have forgotten to keep Guest Services turned off in hopes of fixing some strange cursor lag (only on the physical computer, not via parsec...).

timminator commented 2 months ago

I came across this problem aswell. Using the hyper-v adapter as mentioned in other posts was not an option for me due to its resolution and refresh rates limits. usbmmid_v2 was also not a viable option due to its lack of hardware cursor support causing a double cursor when connecting through Parsec. So i decided to improve this project and created my own fork. You can find it under the following link:

https://github.com/timminator/Enhanced-GPU-PV

It now adds a virtual display on startup to the VM by taking advantage of another project of mine and it will stay connected until your next shutdown/restart. The virtual display is also based on the Parsec Virtual Display Driver, which means that the advantages of a high resolution and high refresh rate up to 4K@240Hz can still be utilized. This resolves the aforementioned issues and problems raised in this thread without having to make any compromises.

If you're interested, try it out and if you're happy with it, i would appreciate a star rating :-)

I hope other people will find it valuable aswell!

Uj947nXmRqV2nRaWshKtHzTvckUUpD commented 2 months ago

I came across this problem aswell. Using the hyper-v adapter as mentioned in other posts was not an option for me due to its resolution and refresh rates limits. usbmmid_v2 was also not a viable option due to its lack of hardware cursor support causing a double cursor when connecting through Parsec. So i decided to improve this project and created my own fork. You can find it under the following link:

https://github.com/timminator/Enhanced-GPU-PV

It now adds a virtual display on startup to the VM by taking advantage of another project of mine and it will stay connected until your next shutdown/restart. The virtual display is also based on the Parsec Virtual Display Driver, which means that the advantages of a high resolution and high refresh rate up to 4K@240Hz can still be utilized. This resolves the aforementioned issues and problems raised in this thread without having to make any compromises.

If you're interested, try it out and if you're happy with it, i would appreciate a star rating :-)

I hope other people will find it valuable aswell!

Hi, is your project supporting HDR on windows 11? Thank you

timminator commented 2 months ago

Hi, is your project supporting HDR on windows 11? Thank you

Unfortunately, the Parsec Virtual Display Driver used in this project does not currently support HDR.

Uj947nXmRqV2nRaWshKtHzTvckUUpD commented 2 months ago

Hi, is your project supporting HDR on windows 11? Thank you

Unfortunately, the Parsec Virtual Display Driver used in this project does not currently support HDR.

i am using this driver instead which allows custom res, fps and HDR on win 11 https://github.com/itsmikethetech/Virtual-Display-Driver

timminator commented 1 month ago

I updated my project mentioned in a post before. It now allows the user to also install the Virtual Display Driver with HDR. It also adds the option to use Sunshine instead of Parsec. If anyone is interested, please check it out!