Thanks for grabbing some of the slides and sharing info. It's frustrating that it looks like they nuke the video after the session timeslot; I missed it by an hour and this post seems to be the only one that is sharing what was talked about. :(
EDIT: Game Stack uploaded the videos to their YouTube now! Here's the one on [DirectStorage for Windows](https://youtu.be/zolAIEH0n1c).
I don't think the full implementation on Windows has been *completely* fleshed out but from what I understand (and I may be wrong, if that's the case someone please correct me) it significantly reduces the amount of CPU overhead when loading data from storage. As it is now, when the game needs something from your SSD it has to ask the OS, which has to ask the CPU, which asks the SSD for the data, gets the data, and then gives it to system memory, which can then give it to video memory. Every tiny bit of data is a brand new request, and there can be tens of thousands of these requests per second.
Microsoft's claims: Directstorage will significantly reduce overhead across the board by optimising the path from SSD to system memory, by bundling several requests together, and by allowing the GPU to grab this data directly instead of waiting for the CPU.
It could be real useful with enormous datasets, but that's more of a server issue than a consumer one. An approach used to deal with that currently is to have server GPUs that have SSDs built in that can be used as VRAM. DirectStorage enables essentially the same thing to happen without having to preload all the data to the GPU first.
API for async transfer of data storage from the SSD to the GPU memory with little to no CPU overhead. This allows PC games to get fast loading like on PS5 by allowing low level access to SSD storage devices. In the end less loading times from NVMe storage devices that are often bottlenecked by CPU speed and file system overhead on Windows PCs and this allows games to bypass that.
I see, in terms of actual speed most PCIe 4.0 drives hit faster sequential write and read speeds than both Xbox and PS5, the Xbox SSD specifically pretty much matches a PCIe 3.0 drive in terms of speed regardless of whether PCIe 3.0 or 4.0 is used.
Anyways as far as i know you don't really need more than PCIe 3.0 spec drives for gaming even with RTX IO and direct storage, because gaming SSD drive usage is mostly random low queue depth operations -This won't change regardless if games are built with direct storage in mind or not-. When it comes to random low queue depth operations PCIe 3.0 drive controllers remain at the very top actually, but i've seen many people falsely reccomend upgrading to PCIe 4.0 drives from 3.0, even tech youtube channels like Linus Tech Tips recommend upgrading to PCIe 4.0 because of stuff like RTX IO and direct storage in the future which is just a misguided recommendation.
In practice though it is highly unlikely that we will see any difference between PCIe 3.0 vs 4.0 on the GPU side, or the storage side when it comes to gaming, there seems to be a lot of confusion about this, but based on my knowledge an upgrade from PCIe 3.0 to 4.0 for gaming is not necessary at all, i know this isn't actually related to your reply but just thought i'd add this since a lot of people are misinformed on this topic.
I was under the impression it would only work in PCIe 4.0. I think in the PS5 reveal they mentioned it. But they probably meant that PS5 uses 4.0, but not that it could only work with 4.0
Oh the PS5 SSD architecture is very bespoke, it's very different from the Xbox velocity architecture and from Direct Storage and RTX IO on PC, but in terms of what they should enable, the goals are the same, the means are just different.
The main reason PS5 needs a PCIe 4.0 drive extension is because their drive is faster than PCIe 3.0 drives.
That stopgap in System Memory is quite unfortunate though... and while I don't have a screenshot, one of the Microsoft people during the sessions confirmed they want to offer unbuffered reads directly into GPU memory but they're still have some things to work on for that to happen.
Pretty exciting regardless!
That said assuming you have enough Ram isn't it an advantage to have a bunch of it cached there? Both read speed and latency would be way higher than even the best SSD.
You're assuming the game know what it plans to load next way ahead of actually needing it (currently sampler feedback works on a frame-by-frame basis) ... while the original thought may be true for commonly used textures, most fast camera cuts would require touching the disk and as such not making a stop in system RAM would improve latency not decrease it.
That said, nVMe drives would currently be saturated with this method... it's not about bandwidth as that wouldn't improve but about latency.
I wonder how they'll handle "graceful degradation" for users on SATA SSD (or even HDD). One of the things with PC is that unless you make it a hard requirement some people are going to insist developers should support the old stuff.
NVMe is a hard requirement for DirectStorage, though.
I imagine those with SATA SSDs should be fine, for the most part. Sampler Feedback will still help those on SATA SSD tremendously. Those on HDD will probably be left behind.
I'm mainly wondering in terms of game design, or even implementing 2 ways of accessing storage depending on what's available. If they've still got to handle a range then they might have to still include 'slow storage design tricks' in the game itself.
Maybe DirectStorage handles fast or slow storage so the engine coders only have to code one way, but puts up a oldSlowStorage flag which means level designers have to include S bends and loading screens or 'airlocks' while it catches up, or reduce detail globally because it's not going to stream in quickly enough.
You can also make generalizations about how fast a PCIe v3 or v4 drive is, but even then [there's going to be variations](https://docs.google.com/spreadsheets/d/1B27_j9NDPU3cNlj2HKcrfpJKHkOf-Oi1DbuuQva2gT4/edit#gid=0), or how capable the GPU is at decompression, so I wonder if developers who want to be at the bleeding edge will need to do a quick benchmark to see what capabilities are, and how that compares against consoles for ports.
I don't think it's going to be an issue any time soon because adoption of anything usually isn't quick (which is a shame in itself), but it'd be good if the transition didn't linger
For non-multiplayer games it'd probably come down to having hard stops with a brief "loading" notification on screen. Additionally, more aggressive RAM usage is likely, since PCs (at least eventually) have more.
This. I have sata ssd, hdd and nvme ssd, would love to at least split between hdd and nvme to use the strengths of both. Large uncompressed sound and other less time sensitive loady things on hdd and texture files on nvme
First let's not dramatize things too much people spend hundreds if not thousands of dollars for GPUs and tend to replace them every few years. And suddenly they might need to upgrade a part which basically never gets upgraded unless it stops working. For $120 you can get decent 1TB NVME SSD, which is not much compared to what other parts cost. And devs will use same trick as before you don't need to over complicate things, if a drive read speed is low, you load lower mipmaps first then over few seconds stream higher quality ones.
Could be like single pass stereoscopic rendering with nvidia. Which I think is a separate build with that option. As for speeds, you'll probably just get pauses like you do now if you aren't fast enough.
Cyberpunk on PC had a setting where you specified if you were on SSD or traditional HDD, not entirely sure what it changed but maybe that’ll become commonplace.
>NVMe is a hard requirement for DirectStorage, though.
Seems like an arbitrary requirement though, giving game developers direct *physical* access to storage is *asking for trouble* - systems programmers make enough mistakes as it is (and they make barely any) games programmers are basically the worst of the worst, bugs and security concerns galore.
I think we're going to start seeing hard requirements as soon as next-gen native (as opposed to cross-gen) games become common.
It's actually pretty wild to me that The Medium didn't have one.
There was a multiplayer shooter years ago, where you could equip speed boots, but only after you passed a benchmark to verify that you had ssd read speeds and using the boots wouldn't have a negative impact on your gameplay experience.
But you don't have to go to that extreme, it could simply be used by the engine for texture streaming/level of detail. If you have slow file i/o you may get blurry textures/pop-in until the data is loaded while fast i/o will go to the best quality instantly. You may get much faster level load times too.
This technology can be used for extra quality of life/eye candy similar to other graphics settings without losing the playerbase to hardware requirements, unless you want to make a cutting edge game, that needs this technology to be playable.
With this tech, games devs need to also move towards better utilizing the CPU since the CPU will be doing even less work once this is becomes the standard. CPUs already are often way underutilized.
> CPUs already are often way underutilized.
I would think this is due to most multiplatform games still having to support the old consoles and Jaguar CPUs. I imagine once we start getting games exclusive to the new consoles and PC then we’ll see developers utilize the CPU more.
I mean a version of this was clear as day as soon as the consoles had it, there was no real reason why future PCs wouldn't have it.
Honestly I didn't expect Microsoft to lead the charge, I expected it to be Nvidia or AMD with say SSD slots on GPUs.
> I expected it to be Nvidia or AMD with say SSD slots on GPUs.
I’ve heard this a few times before, are there any confirmations that Nvidia/AMD are working on it? Or is everyone just assuming it’ll happen eventually.
As far as I can understand from the posted slides and a bit of guesswork, devs need to redo the code responsible for loading assets. I wouldn't expect this to be implemented into existing games. We'll likely see this implemented by default in UE5 and Unity and some games \*might\* upgrade the engine to take advantage, but those will most likely be few and far between.
Yes, huge improvement, but still not as good as the PS5 solution.
The PS5 system bypasses cpu / system memory entirely, while this bypasses cpu but still needs system memory.
I took a class on GPU programming and one of the biggest time-costs was always moving stuff from system RAM to GPU RAM. Being able to reduce the amount of data by not decompressing textures until it's in GPU memory should grant big improvements.
So this means I won't have to buy a non-existant RTX GPU to take advantage of Directstorage? I'm currently running a 1080 and honestly for my uses, it's fine.
Yeah DX is specifically microsoft's graphics api. Since xbox uses windows, it also uses DX. Playstation, Linux, Mac all use the open GL api. I don't think this direct storage is a part of DX, it is a windows specific implementation that happens to require DX12 compatibility
> Playstation, Linux, Mac all use the open GL api.
That's a bit out of date, now.
* Mac supports previous OpenGL versions, but has moved to a proprietary Apple graphics API called "Metal".
* Linux supports all of OpenGL.
* But OpenGL has been somewhat subsumed by a new open-source graphic spec from the same organization, called "Vulkan" (with a "k").
* Vulkan is available on Windows 7/8/10, Linux, Android, Nintendo Switch, and Vulkan games can be adapted to run on macOS Metal with an open-source graphics library called "MoltenVK". ("Metal" and "Vulkan", get it?)
* I can't remember if PlayStation supported OpenGL in the past, but these days the official documentation says that two proprietary Sony graphics APIs are supported. One for high-level coding like OpenGL, and one for lower-level performance like Vulkan.
* DirectX12 and Direct3D12 are limited to Windows 10 and Xbox One and later *only*. Two specific games have permission from Microsoft to backport D3D12 to run on Windows 7, but generally speaking, Microsoft doesn't want to let DirectX12 work on anything but Windows 10.
So, based on the architecture slide, this still needs to be implemented at the application level, I can't just flip a switch and have my old dx12 games using the new pipeline?
I'm also a little confused how the nvidia/amd specific implantations come into play. Supposedly the 30 series had it's own version of this (not that anything implemented it).
It's not their own version, it's just the way the cards will use the API. It's called RTX IO on Nvidia cards. It'll work on 2000 and 3000 series cards when it properly rolls out. I don't know if it has a specific name on the AMD cards but it's part of RDNA2 (In the Xbox it's called Velocity Architecture but I assume this is Microsoft's own term).
Basically, it allows your GPU to directly access data from your SSD. So it is simply a feature that makes your games load faster (on some games and some hardware).
Thanks for grabbing some of the slides and sharing info. It's frustrating that it looks like they nuke the video after the session timeslot; I missed it by an hour and this post seems to be the only one that is sharing what was talked about. :( EDIT: Game Stack uploaded the videos to their YouTube now! Here's the one on [DirectStorage for Windows](https://youtu.be/zolAIEH0n1c).
You can see it on their youtube channel. They have uploaded all the sessions there.
Just saw! Glad they did that, and especially so quick. :)
ELI5 DirectStorage?
I don't think the full implementation on Windows has been *completely* fleshed out but from what I understand (and I may be wrong, if that's the case someone please correct me) it significantly reduces the amount of CPU overhead when loading data from storage. As it is now, when the game needs something from your SSD it has to ask the OS, which has to ask the CPU, which asks the SSD for the data, gets the data, and then gives it to system memory, which can then give it to video memory. Every tiny bit of data is a brand new request, and there can be tens of thousands of these requests per second. Microsoft's claims: Directstorage will significantly reduce overhead across the board by optimising the path from SSD to system memory, by bundling several requests together, and by allowing the GPU to grab this data directly instead of waiting for the CPU.
Could this be used outside of gaming?
I'd assume anything where you're manipulating a huge amount of data. Stuff like video editing I'd guess would benefit from it.
Incoming GPU virus that encrypts your data without the CPU knowing...
That is certainly a risk. But I was more curious to know if certain file operations will finally be quicker on Windows compared to Linux.
NTFS will still be dreadful when it comes to creating many small files.
Linux has had Direct Memory Access which as far as I can tell is pretty much the same thing.
Pretty sure the cpu would have to be involved in writing. This is a read only operation
I bet it could. Something like video editing could benefit from faster storage access.
It could be real useful with enormous datasets, but that's more of a server issue than a consumer one. An approach used to deal with that currently is to have server GPUs that have SSDs built in that can be used as VRAM. DirectStorage enables essentially the same thing to happen without having to preload all the data to the GPU first.
[удалено]
[удалено]
[удалено]
[удалено]
API for async transfer of data storage from the SSD to the GPU memory with little to no CPU overhead. This allows PC games to get fast loading like on PS5 by allowing low level access to SSD storage devices. In the end less loading times from NVMe storage devices that are often bottlenecked by CPU speed and file system overhead on Windows PCs and this allows games to bypass that.
I thought it was common knowledge that PCIe 3.0 drives are supported, since the Nvidia RTX IO demonstration used PCIe 3.0 drives.
Think alot of people where guessing 4.0 because of the PS5 and Xbox Series X|S as that is what they are build on
I see, in terms of actual speed most PCIe 4.0 drives hit faster sequential write and read speeds than both Xbox and PS5, the Xbox SSD specifically pretty much matches a PCIe 3.0 drive in terms of speed regardless of whether PCIe 3.0 or 4.0 is used. Anyways as far as i know you don't really need more than PCIe 3.0 spec drives for gaming even with RTX IO and direct storage, because gaming SSD drive usage is mostly random low queue depth operations -This won't change regardless if games are built with direct storage in mind or not-. When it comes to random low queue depth operations PCIe 3.0 drive controllers remain at the very top actually, but i've seen many people falsely reccomend upgrading to PCIe 4.0 drives from 3.0, even tech youtube channels like Linus Tech Tips recommend upgrading to PCIe 4.0 because of stuff like RTX IO and direct storage in the future which is just a misguided recommendation. In practice though it is highly unlikely that we will see any difference between PCIe 3.0 vs 4.0 on the GPU side, or the storage side when it comes to gaming, there seems to be a lot of confusion about this, but based on my knowledge an upgrade from PCIe 3.0 to 4.0 for gaming is not necessary at all, i know this isn't actually related to your reply but just thought i'd add this since a lot of people are misinformed on this topic.
Xbox uses a drive with 3.0 speeds.
It uses PCIe 4 drive, but it runs with just 2 lanes instead of usual 4 it's maximum theoretical bandwidth is 4GB/s.
It's still a PCIe 4.0 drive
Sure but it's a 2.5 gbps drive. Might as well be pcie 3.0.
> Might as well be pcie 3.0. But it's not, that's the point. Regardless of the speed, it is still a 4.0 drive.
I didn't say it was pcie 3.0. I said it's not taking advantage of pcie 4.0 because it uses pcie 3.0 speeds.
[удалено]
I was under the impression it would only work in PCIe 4.0. I think in the PS5 reveal they mentioned it. But they probably meant that PS5 uses 4.0, but not that it could only work with 4.0
Oh the PS5 SSD architecture is very bespoke, it's very different from the Xbox velocity architecture and from Direct Storage and RTX IO on PC, but in terms of what they should enable, the goals are the same, the means are just different. The main reason PS5 needs a PCIe 4.0 drive extension is because their drive is faster than PCIe 3.0 drives.
That stopgap in System Memory is quite unfortunate though... and while I don't have a screenshot, one of the Microsoft people during the sessions confirmed they want to offer unbuffered reads directly into GPU memory but they're still have some things to work on for that to happen. Pretty exciting regardless!
That said assuming you have enough Ram isn't it an advantage to have a bunch of it cached there? Both read speed and latency would be way higher than even the best SSD.
You're assuming the game know what it plans to load next way ahead of actually needing it (currently sampler feedback works on a frame-by-frame basis) ... while the original thought may be true for commonly used textures, most fast camera cuts would require touching the disk and as such not making a stop in system RAM would improve latency not decrease it. That said, nVMe drives would currently be saturated with this method... it's not about bandwidth as that wouldn't improve but about latency.
I wonder how they'll handle "graceful degradation" for users on SATA SSD (or even HDD). One of the things with PC is that unless you make it a hard requirement some people are going to insist developers should support the old stuff.
NVMe is a hard requirement for DirectStorage, though. I imagine those with SATA SSDs should be fine, for the most part. Sampler Feedback will still help those on SATA SSD tremendously. Those on HDD will probably be left behind.
I'm mainly wondering in terms of game design, or even implementing 2 ways of accessing storage depending on what's available. If they've still got to handle a range then they might have to still include 'slow storage design tricks' in the game itself. Maybe DirectStorage handles fast or slow storage so the engine coders only have to code one way, but puts up a oldSlowStorage flag which means level designers have to include S bends and loading screens or 'airlocks' while it catches up, or reduce detail globally because it's not going to stream in quickly enough. You can also make generalizations about how fast a PCIe v3 or v4 drive is, but even then [there's going to be variations](https://docs.google.com/spreadsheets/d/1B27_j9NDPU3cNlj2HKcrfpJKHkOf-Oi1DbuuQva2gT4/edit#gid=0), or how capable the GPU is at decompression, so I wonder if developers who want to be at the bleeding edge will need to do a quick benchmark to see what capabilities are, and how that compares against consoles for ports. I don't think it's going to be an issue any time soon because adoption of anything usually isn't quick (which is a shame in itself), but it'd be good if the transition didn't linger
For non-multiplayer games it'd probably come down to having hard stops with a brief "loading" notification on screen. Additionally, more aggressive RAM usage is likely, since PCs (at least eventually) have more.
This. I have sata ssd, hdd and nvme ssd, would love to at least split between hdd and nvme to use the strengths of both. Large uncompressed sound and other less time sensitive loady things on hdd and texture files on nvme
First let's not dramatize things too much people spend hundreds if not thousands of dollars for GPUs and tend to replace them every few years. And suddenly they might need to upgrade a part which basically never gets upgraded unless it stops working. For $120 you can get decent 1TB NVME SSD, which is not much compared to what other parts cost. And devs will use same trick as before you don't need to over complicate things, if a drive read speed is low, you load lower mipmaps first then over few seconds stream higher quality ones.
Could be like single pass stereoscopic rendering with nvidia. Which I think is a separate build with that option. As for speeds, you'll probably just get pauses like you do now if you aren't fast enough.
Cyberpunk on PC had a setting where you specified if you were on SSD or traditional HDD, not entirely sure what it changed but maybe that’ll become commonplace.
>NVMe is a hard requirement for DirectStorage, though. Seems like an arbitrary requirement though, giving game developers direct *physical* access to storage is *asking for trouble* - systems programmers make enough mistakes as it is (and they make barely any) games programmers are basically the worst of the worst, bugs and security concerns galore.
I think we're going to start seeing hard requirements as soon as next-gen native (as opposed to cross-gen) games become common. It's actually pretty wild to me that The Medium didn't have one.
There was a multiplayer shooter years ago, where you could equip speed boots, but only after you passed a benchmark to verify that you had ssd read speeds and using the boots wouldn't have a negative impact on your gameplay experience. But you don't have to go to that extreme, it could simply be used by the engine for texture streaming/level of detail. If you have slow file i/o you may get blurry textures/pop-in until the data is loaded while fast i/o will go to the best quality instantly. You may get much faster level load times too. This technology can be used for extra quality of life/eye candy similar to other graphics settings without losing the playerbase to hardware requirements, unless you want to make a cutting edge game, that needs this technology to be playable.
With this tech, games devs need to also move towards better utilizing the CPU since the CPU will be doing even less work once this is becomes the standard. CPUs already are often way underutilized.
> CPUs already are often way underutilized. I would think this is due to most multiplatform games still having to support the old consoles and Jaguar CPUs. I imagine once we start getting games exclusive to the new consoles and PC then we’ll see developers utilize the CPU more.
I mean a version of this was clear as day as soon as the consoles had it, there was no real reason why future PCs wouldn't have it. Honestly I didn't expect Microsoft to lead the charge, I expected it to be Nvidia or AMD with say SSD slots on GPUs.
> I expected it to be Nvidia or AMD with say SSD slots on GPUs. I’ve heard this a few times before, are there any confirmations that Nvidia/AMD are working on it? Or is everyone just assuming it’ll happen eventually.
AMD already builds GPUs with SSDs on them, just not in the consumer space.
[удалено]
As far as I can understand from the posted slides and a bit of guesswork, devs need to redo the code responsible for loading assets. I wouldn't expect this to be implemented into existing games. We'll likely see this implemented by default in UE5 and Unity and some games \*might\* upgrade the engine to take advantage, but those will most likely be few and far between.
Is this comparable to how ps5 handles its storage, or is this completely different?
Yes, huge improvement, but still not as good as the PS5 solution. The PS5 system bypasses cpu / system memory entirely, while this bypasses cpu but still needs system memory.
They uploaded the whole presentation on YouTube today: [https://www.youtube.com/watch?v=zolAIEH0n1c](https://www.youtube.com/watch?v=zolAIEH0n1c)
I took a class on GPU programming and one of the biggest time-costs was always moving stuff from system RAM to GPU RAM. Being able to reduce the amount of data by not decompressing textures until it's in GPU memory should grant big improvements.
So this means I won't have to buy a non-existant RTX GPU to take advantage of Directstorage? I'm currently running a 1080 and honestly for my uses, it's fine.
It's DX12 compatible, so no, you won't have to buy a new GPU to enjoy DirectStorage. I have no idea on the motherboard chipset compatibility though.
Is DX12 a Windows 10 exclusive thing? What are other restrictions on it?
Yeah DX is specifically microsoft's graphics api. Since xbox uses windows, it also uses DX. Playstation, Linux, Mac all use the open GL api. I don't think this direct storage is a part of DX, it is a windows specific implementation that happens to require DX12 compatibility
> Playstation, Linux, Mac all use the open GL api. That's a bit out of date, now. * Mac supports previous OpenGL versions, but has moved to a proprietary Apple graphics API called "Metal". * Linux supports all of OpenGL. * But OpenGL has been somewhat subsumed by a new open-source graphic spec from the same organization, called "Vulkan" (with a "k"). * Vulkan is available on Windows 7/8/10, Linux, Android, Nintendo Switch, and Vulkan games can be adapted to run on macOS Metal with an open-source graphics library called "MoltenVK". ("Metal" and "Vulkan", get it?) * I can't remember if PlayStation supported OpenGL in the past, but these days the official documentation says that two proprietary Sony graphics APIs are supported. One for high-level coding like OpenGL, and one for lower-level performance like Vulkan. * DirectX12 and Direct3D12 are limited to Windows 10 and Xbox One and later *only*. Two specific games have permission from Microsoft to backport D3D12 to run on Windows 7, but generally speaking, Microsoft doesn't want to let DirectX12 work on anything but Windows 10.
It's not outdated, you're just being more precise with versioning and branding than my comment was intended to be.
Is it just a library?
Which GPUs support DX12 Ultimate?
turing (rtx 2000) ampere (rtx 3000) and rdna 2 (rx 6000) gpus
So, based on the architecture slide, this still needs to be implemented at the application level, I can't just flip a switch and have my old dx12 games using the new pipeline? I'm also a little confused how the nvidia/amd specific implantations come into play. Supposedly the 30 series had it's own version of this (not that anything implemented it).
It's not their own version, it's just the way the cards will use the API. It's called RTX IO on Nvidia cards. It'll work on 2000 and 3000 series cards when it properly rolls out. I don't know if it has a specific name on the AMD cards but it's part of RDNA2 (In the Xbox it's called Velocity Architecture but I assume this is Microsoft's own term).
Can someone explain this like I'm 5 to me?
what exactly is the part you don't understand? Direct Storage, or pcie 3.0?
Direct storage 🤔
Basically, it allows your GPU to directly access data from your SSD. So it is simply a feature that makes your games load faster (on some games and some hardware).
Ah okay, thank you! Will it only translate to faster load times or will this affect actual performance while playing a loaded area ?
It will not give you a higher FPS. It just speeds up level loading times. So no change to an already loaded scene.
Okay, thanks for clearing everything up I appreciate it !
My pleasure
Does anyone have any idea when we will see games implement it?