PSVR2 on FW16

Yep, correct. Imagine that you have a DisplayPort cable that’s plugged in on one end into the laptop’s built-in display. The mux chip just does the act of unplugging it from the port on one GPU and plugging it into another. Important here is that this is the “finished” DisplayPort connection which carriest monitor display data.

In this way I am not sure what happens in a non-full-screen scenario really. I would guess that the laptop display would still be served by the iGPU with dGPU rendering the in-window portion and streaming the picture data over PCIe into the iGPU’s framebuffer. But I may be wrong and it may instead start rendering the whole Windows UI on dGPU instead, so nothing at all is done on iGPU in that case. Come to think of it, it’s probably the latter.

(But I want to add here that I am not super familiar with this, so I’m making quite a number of assumptions/educated guesses here, so anyone who claims expertise should override what I’m saying here)

Oh, you definitely can have multiple GPUs on desktop outputting stuff to different monitors. Try it and see how the window that you drag across monitors is not super synchronized :slight_smile:

This is also common in the eGPU scenario as streaming the rendered graphics back over the cable (as PCIe data, not DisplayPort) takes up quite a bit of pretty limited bandwidth, so it’s customary to game on an external display plugged directly into eGPU.

1 Like

Thanks for the information, @Gmanny! I feel like an idiot for saying that you can’t run displays off multiple GPUs inside a computer simultaneously when I literally worked at Microsoft for 15 years, and my dev box was running 3 displays connected to 3 different PCIe GPUs that each had one DVI-I connector. I believe they were Matrox Mystique cards if I’m not mistaken because they gave the smoothest desktop rendering experience.

I’ll just chalk that up to having a senior moment since I’ll be turning 45 this month! :wink: I do remember back in the day dragging Windows between the screens, and they would not transition smoothly when you had two in landscape and one in portrait in the center, making an “H” configuration, which is what I ran with for most of my career as a developer. Only a single GPU in the box will display text modes when booting as the primary, but once you’re in Windows or another operating system that supports drivers, it can boot up the other cards and send data to them, so of course they could output that to the screens.

I think you have some good assumptions on how the Framework is compositing the two GPUs together. If you open the Task Manager in Windows, you can even add the “GPU Engine” column under Processes, and you can see which GPU each application is utilizing. The Framework will happily display all of them on the main display as if it’s just one big happy GPU. So, I think you’re probably right that when things are in windowed mode, whichever GPU is the primary is rendering the desktop, and any contents of a window that is displaying “hardware accelerated” graphics from the dGPU is just being streamed into the frame buffer as if it was the monitor, and it’s getting muxed together by Windows itself. You can even drag it between screens connected to different GPUs, and the contents of the window will continue to be rendered by the actual GPU it started with, supporting this theory.

But, as you said, when the application goes full screen, it can directly connect the GPU that is doing the rendering to the display to maximize performance, so it no longer has to go through the iGPU at all. This also explains why the dGPU USB-C port on the back of the Framework 16 can’t display anything on VR that is running on the dGPU, only things that run on the iGPU. I bet the reason for this has to do with how VR uses two different displays showing 2 different images at the same time instead of a single display like a monitor, which would work with the muxing, whereas the VR doesn’t work with it, so it has to be physically connected to the GPU that is displaying the full-screen graphics.

I’d love to see a Framework engineer jump in here and correct us so we could see how close we are to understanding how the MUX chip works and how it only seems to impact VR when it comes to which USB-C port you plug into on the Framework but doesn’t have any problem with standard displays rendering using both GPUs on whatever is plugged into it. I should try plugging my VR into my main PC and forcing a VR app to the iGPU to see if it has the same problem. Because if it does, then that would confirm that this isn’t even a Framework muxing-specific issue at all and it’s just Windows being Windows. :wink:

Thanks,
Jerry (aka. Barnacules)

Apologies to anyone waiting for more reviews of the PSVR2 on the FW16. Life has been hectic.

I have tested and successfully used the PSVR2 exactly once, though for a good many hours. My setup was pretty much exactly as described by Sony with some Framework touches. A standard DisplayPort cable plugged in to a Framework DisplayPort adapter in the dGPU USB-C port, USB-A cable plugged into a Framework USB-A adapter in port 3 (front-left port), and the power plugged into the wall. I had previously paired the controllers, and upon powering them up, they both connected without any issue. The headset gave me some very brief issues and I’m not sure if it was the USB-C cable from the headset or the DisplayPort cable/adapter combo sticking out of the back of the laptop, but fiddling with both got the headset itself working (though I suspect it was the USB-C cable plugged into the Sony adapter, as the headset didn’t seem to be powering up). Once the headset did powerup, initial setup went well, and I was soon in SteamVR for the first time.

Once in SteamVR, it was relatively quick and easy to get setup and familiarized with the controls, movement options, and, most importantly, start playing PC VR games! Half-Life: Alyx! I lost track of time playing, and accidentally played until ~2AM.

Some of my thoughts on the experience, both PSVR2 specific and general PC VR:

  • I don’t think you need anything special (apart from the PSVR2 Adapter) in order to use the headset. I used a standard DisplayPort cable and a Framework DisplayPort adapter and it worked well. That being said, just because it did work, doesn’t mean I’d encourage others to do it too. The adapter hanging off the back of the laptop was a bit more precarious than I’d like, and adding a large, stiff DisplayPort cable didn’t improve how precarious things felt. @Barnacules_Nerdgasm’s suggested USB-C → DisplayPort cable isn’t necessary, but is something I’m likely to get.

  • The PSVR2 adapter is powered with a tiny 5V, 3A barrel jack. I believe FW16 supports 15W of output via USB-A or USB-C on most of the ports (though not the dGPU port, if memory serves). I’d like to try to make an adapter that is USB (probably A, because soldering to that pinout is significantly easier) to the tiny barrel jack, or remove the barrel jack and swap it for a USB-C port, so that the adapter can simply be powered by the laptop (or a multiport USB wall charger). If it uses 1 USB-A port for data, 1 USB-C port on the dGPU for video, and 1 USB port (either A or C) for power, while not being as compact and single cable as the headset connecting to the PS5, it would be a little bit tidier and more compact than the current implementation.

  • It works well enough that I lost track of time for a few hours.

  • Normally, I game with the FW16 on a balanced power profile, and while plugged into a 100W Anker charger. Under normal usage, getting a few hours of gameplay in before the laptop complains of low battery is common, with most play sessions not getting close to low battery levels. When playing Half-Life: Alyx, I used the 180W Framework charger (holy crap, it gets toasty), and turned the power profile up to performance mode in the hopes of getting as much performance as possible. If memory serves, I only stopped playing due to a low battery warning, though I didn’t have it fully charged when I started. I think the battery didn’t last as long as usual, though I really wasn’t paying that close of attention to it.

  • My experience with VR before this was Google Cardboard/Daydream, PSVR, and PSVR2. While I’d very much like the full features of the PSVR2 (eyetracking, foveated rendering, improved haptics in both the controllers and headset, and especially HDR support), the current level of support doesn’t disappoint me. Apart from the mura, which was somehow more noticeable to me on PC vs PS5. Not deal breaking, but, sadly, more noticeable.

1 Like

Beware that USB-A ports have lower power limits that USB-C.

Edit: But there are cables which expose power leads from USB-C plug

1 Like

When you played Halflife Alyx with the PSVR2 adapter plugged into the DP adapter on the side of your FW16 did you open Task Manager to see which GPU the game was running on? You can right click on any column header under Processes and enable the column GPU engine and it will show which GPU it’s running on.

With all of the testing I conducted with the PSVR2 plugged into the DP module on the side of the FW16 it would always run the game on the iGPU which would be laggy and slow and never achieve the full framerate of the headset or it would give me an error saying “You must plug the headset into the GPU that the game is running on” when Windows would select the dGPU as the target when running more intense games. For instance if I ran Beat Saber by default then everything worked fine but the framerate just wasn’t great and it would have little hiccups and microstutters. However, if I ran something like Microsoft Flight Sim 2020 in VR mode or HalfLife Alyx it would run it on the dGPU when Windows was configured to pick the GPU automatically depending on the game and then I would just see “Loading” through the VR headset in the Steam menu area while the game would be up and playing in the preview on the laptop screen and the error would be showing saying the headset needs to be plugged into the GPU that it’s running on.

If it’s not too much trouble, could you post a screen shot of your Task Manager showing the GPU engine column with Half-Life Alyx process showing so I can see which GPU Windows claims the game is running on. Also, if you have Beat Saber can you try booting that up and see if you get the strange error I was getting where SteamVR says “You must plug into the primary GPU” since it should default to iGPU for that game untill you go into Windows settings and force it to the dGPU.

Example of forcing the GPU the game runs on in Windows when 2 GPU’s present

Because ideally, I would absolutely love to run my PSVR2 adapter using the DP port on the side of the FW16 so I don’t need the USB-C to DP cable at all. But, I spent days trying everything I could possibly think of and I could never get a game running on the dGPU to show up in the VR headset that was plugged into the DP module on the side of the FW16 which links to the iGPU. It would only show games in the headset that were running on the much slower iGPU and if the game went to the dGPU because Windows detected it was more demanding than it would just who the SteamVR hub in the headset with “Loading [Game]” showing on the screen even though the game was already loaded and working in the SteamVR preview window showing on the laptop.

So technically you can use SteamVR with DP module on side of the FW16 for PSVR2 experience so long as the game you’re running defaults to the iGPU because the laptop isn’t plugged in or is in a low power profile setting while plugged in or you force the game to the iGPU using the System>Display>Graphics menu in Windows 11. But, if @takaides actually got a VR game running on the dGPU and displaying through the DP module on the side of the FW16 I would very much like to try and replicate that experience so that USB-C to DP cable is no longer needed hanging off the back of the laptop.

I laughed when I read you talking about how you lost track of time playing Halflife Alyx. Yes, you absolutely lose track of time until either you wife, girlfriend or loss of power pulls you out of the game. It’s absolutely additive and I honestly hope they make another one in the future because it still stands today as one of the best and most immersive VR experiences I’ve ever had. The fact you were able to run it makes me think it had to be on the dGPU since i don’t think the iGPU would be able to play it at any acceptable framerate even on the lowest graphics settings but I haven’t tried myself so I’m not really sure. The onboard iGPU is pretty capable for 3D graphics being able to almost play Beat Saber at ~70FPS with default graphics settings and it also handles RecRoom no problem.

As for the low power problem you were encountering, I have also noticed a few interesting things myself. Like for instance when I plug in the 180 watt power adapter into the FW16 and torture the CPU/dGPU using http://iprep.info/gpu it will always show 100% power remaining down in the Windows 11 task tray until I unplug the USB-C power adapter and then it will update to show the true percentage remaining. I found that when the CPU/dGPU is being fully hit 100% it drains the battery at about 5% every 15-30 minutes which isn’t bad and would give you quite a bit of runtime if you start from 100% before you do whatever it is you’re doing but it does mean that the laptop will die no matter what you do if you run at 100% for a prolonged period of time. I think they are coming out with a 240 watt power adapter soon that will resolve this problem by providing enough power that the battery doesn’t need to be touched. I also wonder if the 100% issue I see in Windows 11 has to do with Microsoft making a bad assumption that the battery can also be depleted while plugged into a wall so it just shows 100% and never updates from the battery status again until the charge state changes. But I’m curious if you’ve also observed this issue yourself?

And last but not least I wonder if the mura issue you were noticing with the PSVR2 had to possibly do with the games running on the iGPU instead of the dGPU which would disable a lot of the features the dGPU has to increase image quality. Because when running on the dGPU I got way better image quality vs. iGPU just with default graphics settings in every game I tried.

TL;DR - Could you run Half-Life Alyx with PSVR2 plugged into DP on side of laptop via DP module and check the GPU engine column under Task manager for the Half-Life Alyx process and then do it again with the USB-C to DP cable coming out of the back USB-C connector on the FW16 laptop? I want to verify that you’re seeing dGPU in the GPU engine column for both configurations. Also, if you use System>Display>Graphics in Windows 11 to force Half-Life Alyx to the iGPU will it show up in the headset when you run the game while connect to the USB-C port on the back of the laptop and vice versa when plugged into the DP on the side of the laptop with Half-Life Alyx forced to dGPU? If you’re able to confirm that you’re able to see both iGPU and dGPU games through either USB-C on back or DP on the side of the laptop in the headset then I’ve gotta figure out how in the heck you’re hardware configuration is different from mine so I can replicate your same results since I would love to ditch the USB-C to DP cable if I can. :+1:

I looked at the cables that you linked too, and it looks like they just put out 5V at 3A which is the same power a USB-A port puts out. I think this is just the default voltage that any USB-C port sends out to start the negotiation with the device and it will only send more power upon request from the device itself.

Cable from Amazon that can only send 5V at 3A

I think for takaides idea to work they would need to pull a lot more power than that which would require a handshake with the USB-C controller to request more power. I found this cable over on AdaFruit that looks like it has a programable chip inside that can be programmed with an included programmer unit to send any voltage up to 20V at 2A giving a total power of 40 watts available. I don’t know if that is enough for the PSVR2 headset off the top of my head but I’m sure if this cable exists there are others out there that supporter higher power output. But this cable could easily be housed in a 3D printed module that could just slide into the side of the framework directly into the nested USB-C port in the back after it’s been programmed for the correct voltage to the barrel jack. And you could easily buy a barrel jack converter to get it to the right size and polarity for the PSVR2 box. Honestly, this would be a super cool module that people would actually use if @takaides makes it!

Re-programmable USB Type-C PD to 2.1/5.5mm Barrel Jack (LINK)

If you end up making one of these @takaides and it works let me know. I’d like to use something like this myself. It would be fun to play Beat Saber out in the front yard on a nice day fully unplugged! :wink:

When you played Halflife Alyx with the PSVR2 adapter plugged into the DP adapter on the side of your FW16 did you open Task Manager to see which GPU the game was running on?

Apologies if I was unclear, but I also used the port on the back of the laptop, not the side. I did pull the DisplayPort adapter from the side of the laptop, but only used it in the back dGPU port. I do happen to generally always run task manager, but I was distracted by VR and never checked the task manager during VR use.

Well, they want to power the PSVR PC adapter, which they said themselves requires rather 5V 3A:


Their idea, as I read it, is to have a way to power the PSVR PC adapter from the laptop, i.e. to not require an external power brick, but rather have a solution which just plugs into the laptop fully. Or at least that’s what I would do. So this is where we stop being able to rely on any USB Power Delivery, as the laptop can output only 5 volts, no power delivery negotiation possible.

And my point with proposing a USB-C cord was that they mentioned not wanting to solder tiny USB-C headers.

The cord makes the soldering work much less involved.

and also that power delivery through a USB-A expansion card is limited by the card, so it might not output enough power:

thusly starting with USB-C for that project is much preferred.

I’m actually shocked that the PSRV2 adapter needs that little power. It really is starting to make me wonder why in the hell the headset can’t take power directly from the USB-C port and not need the adapter at all?! :man_shrugging:

I think, it just comes down to user experience: USB ports are rarely rated for power officially, and it wouldn’t be nice for people to plug the headset into a USB port only to get it shutting down at points because the port can’t supply enough power.

I’m using external SSDs which get their power from a USB port they’re plugged into, and it’s a pretty frustrating experience to see the drive reboot in the middle of heavy usage because the port I’m plugging it into couldn’t handle the drive’s power draw.

I assume that’s the main issue.

Also, if I really wanted to muck around with the circuit, I’d love to have USB-PD passthrough, so I’d plug the power adapter for the laptop into the PSVR2 adapter (in an appropriately labeled PD-IN USB-C port), grab ~15-18W off of that, and send the rest to the laptop through the currently existing USB-C cable tail.

That won’t work with the Framework 16, assuming the user wants to plug the PSVR2 adapter into the dGPU; it can’t do any power in, let alone PD-IN. And honestly, adding a PD controller/power circuit seems like a lot of effort if the whole point is simplifying it… Though, I’m now curious if there’s any data pins to spare on the FW 16 interposer.

1 Like