DirectX 12

You can spread it across all the other threads ( independent physical cores) as you like but that is what is being done now by the “mainthread”.

That is the exact opposite of right.

Sorry, but I don’t know what “That is the exact opposite of right.” means.

You seem to really be stuck on this. And what’s weird is that you’re contradicting yourself. You keep saying both that the main thread is splitting work across all cores, and that everything is linear. I can only assume you don’t know what multithreading means, because if you did you would know that you cannot split a linear program over multiple threads.

What you describe is not how multithreading works. How it works is this:
Step A: Do job 1, and at the same time do job 2, and at the same time do job 3, and at the same time do job 4, and so on for however many cores you have.
Step B: Do job 1, and at the same time do job 2, and at the same time do job 3, and at the same time do job 4, and so on for however many cores you have.
And keep doing it.

Furthermore, you are somehow assuming that each state being calculated triggers a frame update, which is very far from the truth. You can calculate the new state of the physics model, while at the same time calculating the new state of cockpit displays and buttons and dials, while at the same time calculating the atmospheric model, while at the same time calculating AI, etc, and when you’re done calculating all of those then you send the data over to the GPU.

You seem to have a very simplistic view of how these things work. What you say may have been true for FSX, but it certainly hasn’t been true since probably FSX:SE. There is a lot of room for parallelization here and for spreading workload across cores. And i bet that the physics model is still monolithic, and it can easily (in theory, not in practice) be split across multiple threads.

1 Like

That is the purpose of having a mainthread and what it does.

So it’s not linear.

For giggles I went spelunking in the exe. Quickly things came up. Work’s already shipping, I figure there’s an experimental flag or registry key, because there’s no reason to put this in a release build:

4 Likes

Nice find!

There’s plenty of D3D12 references in the exe, to API functions and COM classes, and loading up the game, it polls D3D12.dll god knows how often.

There’s presumably flag strings “-d3d11” and “-d3d12” defined, but specifying latter doesn’t do anything.

There’s a registry key defined in the exe, but it doesn’t seem used in regular operation, because I don’t have it in my registry. Maybe that’s a place to dump options.

1 Like

I’m very curious to know if Asobo has plans to implement mesh shaders, multi-threaded draw calls, sampler feedback streaming, variable rate shading, or other cutting edge DX12_2 technologies to MSFS. I feel like Mesh Shaders specifically could help improve performance quite a bit.

Asobo must find ways to further parallelize the functions from the main thread, and split into other threads. If they don’t accomplish this, I don’t see how this game can run smoothly on low frequency Xbox CPU. If/when they accomplish this, I’m hoping the optimizations will roll over to the PC build.

2 Likes

It’s coming just as is 13 and 14, if there’s one thing that distinguishes sims from games it’s their shelf life. Patience, patience and more patience!

The RAM on the XBox is stupid stupid fast and the backbone of in my uneducated opinion.

Memory. 16GB GDDR6 w/320 bit-wide bus

Memory Bandwidth. 10GB @ 560 GB/s, 6GB @ 336 GB/s.

For comparison at best DDR4 3600 is peaking at 30 GB/s (ish)

High bandwidth GDDR is used to feed the GPU. Just as is the VRAM GDDR on your PC video card.
GPUs process massively wide parallel tasks at rather constant rate, they need high bandwidth VRAM with a massively wide bus to stream it a steady supply of data.
CPUs are much more narrow, as they bounce around a variety of complex tasks they are more burdened by memory latency and not so much bandwidth. This is why CPUs need ultra low latency cache to keep the registers firing the instant they call for a relatively small amount of data.
DDR4 has much lower latency despite much lower bandwidth than GDDR. In front of that DDR4 is varying levels of increasingly lower latency cache.
Think of it like this, a GPU needs a hundred lane highway of thousands of dumptrucks to feed immense amount similar data at a steady rate. A CPU needs to single seater rocket car to wait and when asked to bring a very specific and small packet data with little delay as possible.

TLDR, the high bandwidth VRAM of the Xbox is for GPU performance only and actually is less than ideal for CPU loads. Sure there’s enough cache to keep the CPU happy for gaming tasks, but in no way will the high bandwidth VRAM help with the bottleneck of the MSFS CPU mainthread.

Yes but the CPU RAM is still running @ 336 GB/s thats 11 times typical DDR4 3600 and we know AMD chips LOVE fast RAM they may have a bottle full of Genie?

It has higher bandwidth but orders of magnitude higher latency. If gddr could benefit AMD cpus more than ddr we would already have AMD workstation motherboards that use GDDR.
High latency GDDR does not improve CPU performance over traditional DDR.
Consoles use a unified memory system to lower costs and wattage.

2 Likes

Will dx12 and xsx go online simultaneously?

Roadmap shows next sim update in September, so I’d guess no sooner than that.

Someone brought up this old thread.

For the record:
What you describe is not linear. Do x job and at the same time do job y.
That is as far from linear as you can get. (if they conflict each other)

Of course, you can have dissimilar jobs run at the same time
on another thread.
For example, decrease the altitude while lowering the gears.

I never said that what I’m describing is supposed to be linear.

Okay, I agree that what you said is not linear.

But, FS2020 and all games are linear and have a main thread
maintaining the linear processing.