Originally posted by Mahboi
View Post
There are too many basic errors in your imaginary vision to address them all, but asset *management* needs to run through the CPU for bookkeeping regardless of the asset *loading* specifics, and that becomes more of a factor as time goes by, not less. Being able to DMA textures etc without having to shuffle them through RAM first is nice, certainly, as that does burn a ton of bandwidth, but it's a pretty small piece of the puzzle compared to all the work that goes into LOD management etc, without which you don't have a working system at all. That management is what makes loads a background task that's *already* transparent to players even when running off a SATA HDD, once the initial work is done, and a couple of seconds at startup when the player is looking at a menu anyway is absolutely the wrong piece of code to be caring about.
Games with infamously-long load times like GTA or (I think?) Witcher have nothing to do with I/O bandwidth, and everything to do with "bad" code, e.g. having to do format conversions, being limited to a single thread, and so on. (As evidenced by some of them getting 4x-10x speedups on load times in later patches).
(My all-time favorite is vsync, which absolutely murders load times and is *still* an issue with some very high-profile engines to this day...)
io_uring is also mostly about IOPS rather than throughput, and we don't really care about IOPS. Loading an atlas or a chunk of polysoup for a game is about as unlike running DB queries and inserts for thousands of concurrent users as you can get.
Comment