It is definitely a G, not a C. If you are CPU limited in DevMode it shows the offending thread, which is most often “Limited by MainThread” or sometimes “Limited by RdrThread” like the screenshot below (KATL, PMDG 737, FSLTL live traffic):
Comparing Task Manager with the first screenshot I posted (Concorde, middle of nowhere) shows the GPU load pegged at 100% ie. GPU limited yet OpenXR Toolkit is showing I am CPU limited:
I have to run now but your first case, according to OpenXR Toolkit metrics, shows your CPU and GPU frame times are very close to each other, which could explain why your GPU% is at 100%.
With CPU frame time at ~30ms and GPU frame time at ~28ms, it’s a bit hard to tell that you are either CPU or GPU bound, you are PC bound lol Neither MSFS overlay nor OpenXR Toolkit overlay account for OS compositor workload, which could easily take you from say 98% to 100% even with the game itself being CPU bound.
Honestly without a proper explanation from Asobo of what their overlay means, there is no way to draw clear conclusions.
Also, no screenshot can provide enough information since I have no clue what the MSFS overlay refresh rate is or what it displays (average over X seconds? maximum?).
Your second screenshot shows that OpenXR Toolkit app GPU “agrees” with MSFS “GPU med” value. There is a huge gap between the “GPU” and “GPU med” (assumed median) value: 30.4ms vs 24.9ms. So what is 30.4ms? is it the peak? OpenXR Toolkit does average over 1s, no historical data. If your normal conditions show that “GPU” measurement in MSFS if +6ms over the median at a given time, then I’m quite concerned that your performance is absolutely all over the place, and no amount of perf overlay will give you relevant information.
Going back to my GPU limited scenario, I am able to throttle CPU (via Throttlestop disable/enable turbo) and GPU (MSI Afterburner 100% or 50% power limit) on the fly to see the effect of each.
With CPU turbo disabled, I only get a 1% drop in FPS for a 25% drop in CPU speed and app CPU is showing roughly the same at 29.2 29.3 ms. This indicates CPU speed is having negligble effect in this scenario, which supports the GPU bound indication in DevMode.
At 50% GPU power limit with CPU turbo back on, I get a much more notable 31% drop in FPS compared to full power everything. Interestingly OpenXR Toolkit app CPU increases significantly to 41.9ms and still shows me being CPU bound yet DevMode shows I am massively GPU bound.
I will look later but I forgot to ask you a crucial question: are you on Pimax or Pico by any chance?
If you are either on Pimax (through SteamVR or PimaxXR) or Pico (SteamVR) then what you are seeing is a bug of SteamVR/pi_tool that causes the frame wait to happen at frame submission (rather than after), and that messes up the app CPU measurement in OpenXR Toolkit.
I appreciate that it is difficult to compare exactly, however I am just curious that at no point does the new OpenXR Toolkit overlay show I am GPU bound, even when I hobble the GPU per my last scenario in my previous post.
I can actually hobble the GPU even more to 40% power (any lower and it becomes a complete slideshow) and still OpenXR Toolkit shows I am CPU bound.
Even if you put MainThread and RdrThread to run in series and add them together, which I don’t think actually happens, I should still be GPU bound as the GPU frametime is longer.
Please know that I really appreciate the work you have done in putting this app together and for fielding my niggly questions. I just want to clarify what seems to be a major discrepancy in what the two performance tools are showing
Here’s an update from my post yesterday with DX12 using an AMD GPU. @mbucchia taught me that when you are CPU limited that the app GPU value will show 0 instead of an erroneous value. I tried DX11 today and got different behavior. With the same settings as DX12 and very similar metrics (CPU Limited) you can see that DX11 does show a value for app GPU. So I wanted to point out the difference in the behaviors from DX11 and DX12.
I may have found a bug. When using DX12 and trying to enable motion reprojection, I first put it to “on”, then exited VR and reentered VR. Motion reprojection was not on. However when I switched the setting to “off”, then exited and reentered VR, then motion reprojection was “on”. I repeating this 2 times and it consistently happened where motion reprojection wouldn’t enable until I first went to “on” and then “off”. If I went directly to “off” it did not enable. You had to go on first, exit/reenter, then off, and exit/reenter before it was enabled.
Lastly I wanted to mention that when in DX12 and I was trying to find settings to switch from being CPU bound to GPU bound, I went through every setting in the game. I changed them 1 at a time and also many at a time. Nothing switched me to being GPU bound. I even had my framerate up to over 90 FPS at one point but nothing would change me from being CPU bound to GPU bound.
Except I finally found the 1 setting that did switch me. It happened when I capped my framerate using the Toolkit setting on the Performance tab. Uncapped I was getting around 45 fps. I capped it to 44 fps and miraculously my CPU frametime immediately lowered by a lot and I became GPU bound. And I was finally able to get a value for the app GPU reading in DX12.
If every post on these forums was this informative and detailed as yours @mbucchia , we would be in a really great place. Kudos where kudos is due and thanks. Puts a smile on my face to see someone with such knowledge and willing to share it with everyone here.
Both OpenXR Toolkit and WMR overlay show CPU always slightly longer frametime than GPU, which IMO is a bit weird given the FPS changes are commensurate with GPU performance changes and CPU changes make neglible difference.
Have you read my recent posts above? I’m discussing the same thing in that I can’t get it to show I’m GPU bound no matter what I try with my settings… except I found that capping the framerate did the trick. My uncapped fps was 45-46 so I capped at 44 and suddenly I became GPU bound. Capping the framerate greatly lowered the app CPU value which made the difference.
I’m not sure what this means yet but I’ll do a little more investigating. I was trying to get foveated rendering (FR) to work so I needed to be GPU bound. Enabling FR while I was CPU bound did nothing to improve my FPS. Once I became GPU bound, I enabled FR and with FR enabled I was able to up my cap from 44 to 52 and remain GPU bound. So it was working but it took me a few hours of testing to get to this point and I stopped for the night. I’ll get back to it soon to learn more.
But try capping your framerate with a value below your normally reported FPS and see if you become GPU bound. Actually the overlay never showed that I was GPU bound like it was showing when I was CPU bound. The specific line on the overlay was blank (see my 3rd photo in my most recent post above). But it was clear I was GPU bound by the reported values.
Hey, iam also CPU Bounded but i think it is normal for my rig I7700K 3060Ti Reverb G2. Which Sim Settings are CPu Intensive. Clouds and Building ist known by me.
I went through all the settings individually. I lowered them to their absolute minimum looking for fps increases. I figured if I got an increase then it was CPU related since I was CPU bound. The only settings that gave an increase were TLOD and render scale. With TLOD, I had to lower it to 0 to see any real change. Increasing clouds and buildings gave me an fps decrease however lowering those values did not increase fps so I don’t think they impact the CPU.
I only have a basic understanding so probably somebody else can guide you better, but in general if your appCPU is lower then you can increase the settings that affect your CPU without impacting the overall fps. In other words your best situation is where they’re about equal. Same situation for vice versa.
Then the question becomes what are the CPU affected settings. These should be settings that affect geometry things. The only one I found was TLOD. I’m still looking for more settings that impact the CPU but haven’t found any others so far.
I don’t fully understand the rdr CPU value so still looking into that.
EDIT: rdr CPU is clearly explained in @mbucchia post here so it makes sense now but doesn’t seem to add anything to our discussion. It seems the rdr CPU value is only 1 component of the total app CPU value. So the app CPU value is the one to focus on.
hey thx for the explanation. my initial thoughts were that the app CPU and app GPU are ideally similar, mine are so i won’t change much if anything . would you believe i have an old i7 7700K and a 4090 yet with the resolution turned up my cpu doesn’t really hinder me that much in most circumstances. btw i think the traffic settings impact cpu too, but i haven’t really tested this.
That’s interesting. I didn’t think of settings on the other pages. I’ll look into that more but agree that some of them probably impact the cpu time as well. Thanks.
Just tried this and am still getting the CPU bound indication.
Tried again without the frame rate cap, adjusting TLOD and OLOD down from their default 100/100 to the lowest it will go at 10/10, which should drop the load on the CPU significantly. As you can see, FPS is the same as in my original post, there is no improvement to CPU frametime and I am still showing CPU bound.