New To The Forum? Click Here To Read The How To Guide. -- Developers Click Here.

AMD Ryzen Threadripper plus Oculus Home equals high CPU usage.

carbonFibreOptikcarbonFibreOptik Posts: 13
Virtual Boy (or Girl)
So I just got done building a Ryzen 1950x Threadripper box.  It uses the Asus Zenith Extreme motherboard.  It uses G.Skill Trident Z RGB RAM, 4x8GB sticks in quad channel.  Everything is updated and running steady.  Every app or game I throw at this thing fails to make it use more than 20% CPU for working tasks (though 95% for passives, like video rendering, which is expected).  Then I decided to set up my Rift again, so I could get back to pre-vis modeling in Medium and the occasional game, thinking the RAM and CPU bottlenecks of my old i7 4930K rig would be a thing of the past.

Boy was I wrong.

The Sensors (three of them) seem to work just fine.  Plug in the Rift HMD while Home is closed, still fine.  Open Home with the HMD plugged in, then laugh as the CPU jumps between 50% and 90% usage.  It's enough to make devices like mice and keyboards lag, prevent apps from loading and rendering properly, and generally locks up the whole system.  Unplug the HMB or close Home and you drop back down to 3-10% like you'd expect.

The truly concerning element?  The Oculus runtimes do not tally up to the bump in CPU usage.  If I'm at 50% all of a sudden, I'll see the OVRServer_x64 process max at 10% and the Home runtime hit maybe 25%, with the rest of the system at about 3% total.  A service that isn't tied to a process might be using the rest, maybe?  It baffles the mind.

The same issues happen if launching a game directly, only the game process is what has the huge CPU usage increase.  This leads me to believe anything running the SDK or runtimes is affected.

In the HMD, the view renders smoothly, but tracking is extremely broken (accurate, but maybe updating five times a second) and ASW is very evidently kicking in to fill in the gaps.  On the PC view of any apps or games, the app/game is running perfectly smooth and having no issues.  Tracking is perfect in the 2D window, just choppy to the extreme in the HMD.  Again, this seems like an issue with the backend and not apps themselves.

I have tried disabling SMT/hyperthreading, disabling cores, switching on the AMD game compatibility mode in Ryzen Master (unique to Threadripper CPUs), and even base-clocking my RAM down to 2166MHz in case it was a latency issue from the XMP upclock.  Game Mode helped a smidgen, but at the expense of the CPU now ranging from 80% to 100%.  Nothing else had any effect.

I realize this is a new processor and a new motherboard to go with it.  They released very recently and are expensive, so not many people have them.  That's my issue though, that not enough people own a 1950X and a Rift.  I have no clue if this is a localized issue or something that Oculus needs to address with an update.  That's where you guys come into frame.  If you have a Ryzen system, preferably one with 8+ physical cores (I think my high 16 core, 32 thread count may be partially to blame), please speak up with your results.  If there's a fix or specific setting needed, we need to catalog it for others in my position.

I love my Rift, but I need my Threadripper.  I'd love to keep both, but I may have to buy a Vive instead just to access Medium now.  

Thanks, guys.  All input is appreciated and very welcome.

Comments

  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    edited August 21
    Attaching a log file dump in case anyone feels like perusing for issues.
  • TehJumpingJawaTehJumpingJawa Posts: 51
    Hiro Protagonist
    What are the USB chipsets on your board?
    Which are your sensors/HMD connected to?
    Is the same behaviour experienced with fewer sensors attached?
  • kojackkojack Posts: 3,483 Volunteer Moderator
    It makes me think of this recent article by Bruce Dawson:
    https://randomascii.wordpress.com/2017/07/09/24-core-cpu-and-i-cant-move-my-mouse/
    Windows 10 has a bug where the more cores you have the worse performance can become if you do certain workloads (in his case lots of process spawning), to the point of his 48 hyperthread xeon barely moving the mouse. This is because every thread was bottlenecked waiting for a global lock.

    Might not be related, but who knows.

    Try setting the process affinity of the oculus stuff (home, etc) to less than the full number of cores to see if that helps (process affinity is an option in task manager).


  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    What are the USB chipsets on your board?
    Which are your sensors/HMD connected to?
    Is the same behaviour experienced with fewer sensors attached?
    My motherboard has a few USB controllers and I spread the load evenly.  The HMD is on the Asus 3.1gen2 port, the front camera is on an AMD 3.1gen1 port, a rear camera is on an Asus 3.1gen1 port, and the last rear camera is on a 2.2 port using the same controller as the Asus 3.1gen1 camera. Both rears are shared (one is in 2.0 mode) and the rest are all alone. Again, the game or app tracks perfectly using the PC monitor view so the devices appear to have good bandwidth and power.

    kojack said:
    It makes me think of this recent article by Bruce Dawson:
    https://randomascii.wordpress.com/2017/07/09/24-core-cpu-and-i-cant-move-my-mouse/
    Windows 10 has a bug where the more cores you have the worse performance can become if you do certain workloads (in his case lots of process spawning), to the point of his 48 hyperthread xeon barely moving the mouse. This is because every thread was bottlenecked waiting for a global lock.

    Might not be related, but who knows.

    Try setting the process affinity of the oculus stuff (home, etc) to less than the full number of cores to see if that helps (process affinity is an option in task manager).


    I think this might be hitting the nail on the head. Ill try to create a bunch of artificial serialized threads tonight, similar to the tests that auther ran. It very well could be either a Windows serialized wait chain issue, or on the flip side that may be an innate issue with serialized threads and the solution is to parallelize now that 8+ cores are about to become standard. If the latter is true, the Oculus runtimes or even the HMD driver stack may simply (not the same as 'easily'!) need to be parallelized to prevent wait chain congestion.

    This is a great insight here, and something I would have never assumed. Thanks. More to come after some tests tonight.
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    So I did some basic tests:

    I physically removed RAM and used one stick at a time, both for a memtest86 validation on each and to test the Oculus app.  All sticks check out, and the issue persists on all sticks.  Pretty damn sure the RAM isn't the issue then.

    I checked wait chains on processes.  OVRServer_x64.exe has about a dozen threads it's waiting upon, each showing as other Oculus processes (overlay, client, etc.)  The others have a pretty typical one or no threads in their wait chains.

    I swapped around affinity values for all Oculus processes, trying evens, odds, the first four only, one only, and finally each process having a few different cores (4 each).  This did nothing to solve the system slowdown, and only had detrimental effects on the performance of Home.

    I went a step further and set memory to local mode, switched on/off game mode, on/off SMT, and combinations of each--only this time I tried differing amounts of disabled cores, down to just 4 active ones in the end.  Again, no settings seem to have any impact, and the disabling of cores performed about the same as setting affinity (which is expected normally).

    I tried reinstalling the Oculus software from a scratch, clean directory.  No impact, other than requiring I re-download apps and everything. ;(

    I tried moving all devices to ASUS provided USB ports, thinking maybe the AMD USB controller was overloaded and that somehow bogged down the whole system.  No dice.  Still getting slowdown like that.

    I then tried to disable ASW, but it looks like the keyboard shortcuts for this are no longer active.  I've noticed that Home runs and tracks relatively smoothly compared to apps and games, but it's unnecessarily correcting for rendering with what looks like ASW (there's smudging/motion-blocking on edges of objects when in motion).  That got me thinking--the only time I have issues is when the headset is rendering.  I apparently confirmed this with a few games that shut off the display when the HMD is removed.  The PC view still renders fine (on some games that keep it active) and Touch controllers track fine, but CPU usage looks to be normal.  Cover up that presence sensor though and the HMD sends the system back into meltdown.  That scenario could be a false positive though, as I don't know how things are actually handled when the HMD display shuts off.

    This is quite confusing, because the USB and CPU stack (the usual culprits) seem to be working as intended.  Something about the Oculus device drivers or software is apparently just...  doing something wrong.  I do notice that I get mouse lag when the system boots (startup apps eat CPU for a few seconds and I get the same instability), and that points to a partial blame on the OS or AMD chipset drivers...  but that issue only replicates when all cores hit 80+% usage.  Oculus Home and the related secondary processes hover around 50-60% usually and not all cores are maxed out, which usually isn't an issue.  The idea that thread wait chains are bogging the system down does seem likely, but that's partially a software fix and not just hardware.

    I'm going nuts here.  I don't have much else I know to test here.
  • TehJumpingJawaTehJumpingJawa Posts: 51
    Hiro Protagonist
    edited August 22
    A shame you can't install win7(or Oculus had Linux support....) to see if that win10 serialised process destruction bug is the cause.
  • kojackkojack Posts: 3,483 Volunteer Moderator
    I tried to find any reports of Vive performance with threadripper, but I didn't find any (I also didn't try for long).

    I'm planning on getting a 1950x, so I'm definitely interested in seeing what's up here.
    (I do non real time graphics work, genetic algorithm and neural network training and c++ compiling, all of which benefit from lots of cores)


  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    kojack said:
    I tried to find any reports of Vive performance with threadripper, but I didn't find any (I also didn't try for long).

    I'm planning on getting a 1950x, so I'm definitely interested in seeing what's up here.
    (I do non real time graphics work, genetic algorithm and neural network training and c++ compiling, all of which benefit from lots of cores)


    I'm in the same boat, where everything I do on the side benefits greatly from additional cores and Threadripper saves a load of my limited time outside of work. If you have a use for it, likely you won't want to go back after experiencing a 16 core system. Considering the major vendors (Intel, AMD) have officially stated all planned future chips will start at 8 cores though, the issues I'm having will need to be sorted out sooner or later. I hope this doesn't turn into a Vista fiasco, where everyone throws around blame instead of just fixing their drivers and code.

    Sadly I can't find anyone else talking about Threadripper in conjunction with VR myself either. That partly is due to the insane amount of clone blog news articles regarding the processor though, and it may become easier in a while when the hype dies down.

    TehJumpingJawa said:
    A shame you can't install win7(or Oculus had Linux support....) to see if that win10 serialised process destruction bug is the cause.
    Strangely (and ironically taking my rant above to heart) the material I've found regarding this issue starts in the Vista era. Windows 7 is definitely affected as well as anything newer. Likely XP would be as well if many-core processors existed in higher quantities at the time; there probably just weren't enough people with many-core rigs at the time to warrant reporting (or even noticing) the issue.

    That said, I think that is an inherant problem in application design and not really an OS bug. Serializing processes means something is always waiting on something else. Asynchronous and parallel processing are the better options if possible. Imagine if a website like Google was serialized: People would need to 'wait in line' to perform searches and the whole site would get backed up to infinity. This is why servers run non-blocking code, so one action won't block another and artificially slow down an app.

    This wouldn't be an issue for me if the Oculus software / driver stack was coded to use 32 threaded cores. That actuallt would help people with 4-core i5 systems, so basically everyone gets a boost. That's a huge request though, and there's likely a solid reason they chose to use the current system over a parallel, scaling one.  Not trying to complain here, I promise. ;)
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    Linking in a Reddit thread for cross-examination. :)

    Threadripper Plus Rift Nukes CPU Usage?

  • kurokokuroko Posts: 5
    Virtual Boy (or Girl)
    edited August 22
    disable windows scheduler (just a generic thing to do with the Ryzens).

    Having said that, as an 1800x owner I do recommend the Ryzen master power settings if you haven't already downloaded them. The purpose of which is to keep windows from throttling down all of your cores because of low usage when in reality it is because tasks have been split across them and are hence not meeting the performance mode or balanced mode's requirements to boost.

    https://community.amd.com/community/gaming/blog/2017/04/06/amd-ryzen-community-update-3

    Link for posterity in case you didn't install the latest chipset drivers or change your power profile.
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    I'm not sure about this, but I've asked the team to see if anyone knows anything. Really sorry.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    kuroko said:
    disable windows scheduler (just a generic thing to do with the Ryzens).

    Having said that, as an 1800x owner I do recommend the Ryzen master power settings if you haven't already downloaded them. The purpose of which is to keep windows from throttling down all of your cores because of low usage when in reality it is because tasks have been split across them and are hence not meeting the performance mode or balanced mode's requirements to boost.

    https://community.amd.com/community/gaming/blog/2017/04/06/amd-ryzen-community-update-3

    Link for posterity in case you didn't install the latest chipset drivers or change your power profile.
    Regarding the Ryzen power plan, I do use this and system responsiveness is indeed better for light tasks and even waking from hibernative states. I did notice one odd thing though. It appears that an Oculus runtime switches your power plan to High Performance temporarily and I'm guessing it swaps it back when you exit. I forget where this was (I think the Home logs), but while perusing my log files linked above I spotted this happening. I'm not sure how much this affects things however.

    I'm not sure about this, but I've asked the team to see if anyone knows anything. Really sorry.
    Thanks, Cyber. You da' man.
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    Did you install the Win 10 Creator's Update? I know that can cause some performance issues, be sure to have Windows Game Mode disabled. Also, are you overclocking? Either way, can you try underclocking the CPU (you can do this in Windows in Ryzen Master) to see if that helps?
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    We are looking into the issue. I'm not sure about that CPU (we will have to check) but it appears there may be some sort of general USB issue on your motherboard. I'd recommend trying different USB ports (try to avoid USB 3.1 and actually USB 2.0 may work best). Updating USB drivers (from your motherboard maker's site) may help, or downgrading to Microsoft default drivers if that doesn't work. You may also wish to get this add-on card to see if it helps.
    https://www.amazon.com/Inateck-Superspeed-Ports-PCI-Expansion/dp/B00B6ZCNGM
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    Did you install the Win 10 Creator's Update? I know that can cause some performance issues, be sure to have Windows Game Mode disabled. Also, are you overclocking? Either way, can you try underclocking the CPU (you can do this in Windows in Ryzen Master) to see if that helps?

    I installed a copy of windows with this update pre-installed.  Game mode is disabled, though after a recent patch Game Mode only affects sandboxed Store apps anyway.

    I normally overclock my rigs, but only after they are up and running stable.  I have no such upclocking being done currently.  The 1950x is running stock, as is my GTX 1080.  RAM is actually upclocked, but using the on-chip profile and I've vetted the stability with a 48-hour memtest86 test series.

    We are looking into the issue. I'm not sure about that CPU (we will have to check) but it appears there may be some sort of general USB issue on your motherboard. I'd recommend trying different USB ports (try to avoid USB 3.1 and actually USB 2.0 may work best). Updating USB drivers (from your motherboard maker's site) may help, or downgrading to Microsoft default drivers if that doesn't work. You may also wish to get this add-on card to see if it helps.
    https://www.amazon.com/Inateck-Superspeed-Ports-PCI-Expansion/dp/B00B6ZCNGM

    I have tried combinations of USB ports, including a single Sensor and the HMD alone on my two USB 2.0 ports.  The high CPU usage and stuttering are unchanged, and seem to be unlinked to the USB subsystems.

    Regarding the Inateck card, I own the 5-port edition of that series.  My motherboard refuses to pass POST if I install it.  It was a great solution to my lack of USB controllers on my old PC though.  Asus needs to answer back regarding why some PCIe cards won't play nice on the Zenith Extreme mobo.  I suspect a BIOS will be releasing soon.  :/

    Now, onto the next batch of tests I've done:

    Under a suggestion in the linked Reddit thread, I tried forcing the Ryzen Balanced power plan (the Oculus software suite is swapping to High Performance automatically) using the third-party Oculus Tray Tool application.  This had no effect on the issue.

    I tried spoofing my CPU ID in the Tray Tool as well, and it made no difference.

    Someone else recommended I disable the Windows Scheduler, but I can't figure out how to make that happen.  There's currently debate on whether the Scheduler assigns tasks to threaded cores as if they were true cores and choking throughput apparently.  AMD officially says this isn't the case though.

    I disabled ASW manually via the Tray Tool as well but it didn't seem to take.  :/

    Using the Tray Tool, I pulled up a bunch of statistics views.  Notable values here were:

    The performance overhead being -150% to -200% and heavily fluctuating.

    The dropped frame counts were increasing to the thousands and faster than I could count.  Application drops were high, but the compositor drops were happening twice as fast.  Rough estimate?  100 dropped frames a second.

    GPU latency was basically zero.  All other latency values were bouncing all over and were off the charts.

    Basically my assumption that the compositor / ASW were more to blame appears on the right track.  Tracking in applications is perfect on the PC, so the USB seems to be fine and the apps seem to run as expected.  The headset view is what's screwed up though, and the only thing between the app and the HMD is the compositor.  Not saying that's the root cause here (it may just be a secondary symptom) but it is quite ponderous.

    If you need me to run any specific tests, tools, or gather certain logs
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    The 5-port card is not the recommended one. Only this specific model is.
    https://www.amazon.com/Inateck-Superspeed-Ports-PCI-Expansion/dp/B00B6ZCNGM
    Can you try purchasing this one?
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    The 5-port card is not the recommended one. Only this specific model is.
    https://www.amazon.com/Inateck-Superspeed-Ports-PCI-Expansion/dp/B00B6ZCNGM
    Can you try purchasing this one?
    I would assume that since the 5-port edition is using the same controller and has an additional one, it would work better.  Indeed, on my older rig it had enough controllers to spread my whole setup over.  Still, you guys can only vet so many devices I guess.

    I've ordered the 4-port version you linked anyway, as my current card isn't working and simply may have been damaged somehow in the move to the new PC.  I'd still like the team to check on potential CPU-originating issues though, please.

    I'll update on the USB situation when I get the new card in (looks like Friday).  Thanks.
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    OK, let me know how that goes.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    edited August 28
    OK, let me know how that goes.

    Okay, here's the latest.  You guys may have been right in spotting USB issues... sort of.  My USB devices all worked fine, but in getting the 4-port Inateck hub to work on my motherboard ASUS helped figure out my southbridge was faulty.  If the CPU ramped up in any way, the southbridge controller diverted too much power away from itself and USB devices hooked up to it would error out on their data streams.  This in turn led to some devices error checking with extra device polling, exacerbating the issue.  I think the Rift may have been one such device.

    I'm currently undergoing an RMA for the motherboard.  I'll update further to see if the new board solves my issue once the replacement part arrives.

    Thanks for being patient, guys.

  • robpaynerobpayne Posts: 1
    Virtual Boy (or Girl)

    Bravo (CarbonFiberOptik) for being "the Oculus Rift" pioneer in being the first to build a PC for Oculus Rift using AMD's new Threadripper technology!  

    • Terrific Thread as I have been doing research with plans to build out a Ryzen 1920x Threadripper PC for use with my Oculus Rift.  Having someone from the Oculus Team (Cybereality) to assist with resolving technical challenges encountered by CarbonFiberOptik's pioneering work, makes this thread even cooler.
    • FYI, there will be a live session (on Tuesday, 30 Aug at 9 AM PST) where the guys at PC World build "the ultimate 1920x1080 PC" with the AMD Threadripper 1920X-Nvidia GtX 1080 Ti PC.  Will be interesting to see how their selected components match up to those CarbonFiberOptik is working with (they provide a 16 minute video on their selection process).
    • One of the reasons I am pursuing knowledge with respect to Oculus Rift and AMD's Threadripper technology is my desire to be able to use the Rift, greenscreen, etc. to create Mixed Reality videos: Oculus Now Supports Mixed Reality Capture Natively. I recently and came across about 30 relevant Oculus-Mixed Reality links. With the exception of one link (Oculus Rift Mixed Reality Game Play using only Two Touch Controllers- Yes it Works!) I have yet to find anything else (a blog, article or YouTube video) where someone has used the Oculus to create and demo an Oculus Mixed Reality video, much less, provided all the gory steps to do so.
    Question for Cybereality: assuming is it now possible to create Mixed Reality videos with the Oculus Rift, where is the go-to website with all the how-tos and/or who (at Oculus, etc.) is the  expert on how to do so?
  • cyberealitycybereality Posts: 22,395 Oculus Staff
    Mixed reality is only released for game developers right now. End users won't be able to do anything with it until developers add support in their titles.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • carbonFibreOptikcarbonFibreOptik Posts: 13
    Virtual Boy (or Girl)
    edited September 13
    Okay, so I have an update.

    I sent in for not one or two, but three RMAs. The first and second motherboards had respectively bad data lines and power controllers for the southbridges. The third board has working southbridge components though and my USB controllers work as intended. This has entirely solved the issues with my Rift. I still cannot use the nice recommended USB expansion cards due to odd support, but as my motherboard has four USB 3.1 controllers on it my VR setup runs just fine without the cards.

    For those curious, the power connections on the third board were soldered badly for a bunch of DIMM slots and that is the reason for the RMA on that one. It works, just with less RAM than I'd like.  According to NewEgg, the first and second batches of boards from all manufacturers were rushed to market due to demand, and research shows AMD played their cards too closely this time and only gave manufacturers about a month's notice on final CPU specs. Early adopters beware, and be prepared for RMAs.

    That said and done, the (partially) working setup runs VR ideally. CPU usage is generally low, but IO operations never waits on free cores and as such the USB devices never lag or drop packets. My tracking is buttery smooth even with only two of my three Sensors set up, and the third guarantees a great time without overloading my USB controllers. I also don't know if this should be affected, but my ASW generated frames in the odd slow game have a higher quality than before, being much cleaner and more natural. If ASW relies on the CPU a fair amount that would make sense, but in any case this new setup is for all intents and purposes perfect.

    If anyone is considering Threadripper CPU setups, I can confirm that aside from potential motherboard quality control woes everything works perfectly for Oculus based VR. I only briefly tested but SteamVR with a Rift appears great as well, and my Vive also worked as expected. Threadripper is certified as Ultra VR Ready (that's a new one!) and I have to agree. However... I still only recommend getting one if you have uses for that beast of a CPU outside gaming or VR alone.

    Thanks for the support guys, and good luck out there, wastelanders.
Sign In or Register to comment.