Dolphin's approach to emulating this bit of the hardware has been to effectively ignore it exists. The first rabbit hole showcases TMEM, the GameCube and Wii's texture cache. That line doesn't exactly work when it's midway through the month, huh? This Progress Report ended up being a very technically challenging report to write with several huge rabbit holes that go through the history of Dolphin and the games themselves. We’ll be happy to assist any party that attempts to reproduce them.It's the beginning of the month and time for another Dolphin Progress Report!. Hopefully, the optimization story of Rust will keep evolving, and eventually we’ll be able to deprecate the crate and programs will run faster out of the box.įinally, a usual disclaimer that we are not benchmarking specialists, and the results here might be taken with a grain of salt. For example, copyless crate allows us to use the same standard containers but with fewer memcpy instructions generated by LLVM. Rust is still showing it’s strength (and potential!), although we approach a point where zero cost abstractions start breaking (quantum level?). Thus, we conclude that the explanation lies in Metal implementations/drivers, which work most efficiently when the hardware queue is immediately available (which is not the case for Immediate recording). Unlike Dota, in this case we didn’t have many small command buffers that the Deferred recording would be able to stitch together.
This is similar to Dota2 results, but we still find it surprising that Immediate did not get ahead this time. Of the gfx configurations tested, the Deferred+MT showed best results. Subjectively the game plays much smoother in gfx-portability as well. Consistency difference is especially visible on AMD, where we produce rock solid frame rate. The average frame times decreased by 4% on Intel machines, and significantly decreased by 22% on AMD machines. In Dolphin, gfx-portability provides faster and more consistent frame rates. The output was then fed to a simple analysis tool which produced the average and variance of the numbers. Results Test/Libraryįrame times where gathered using Dolphin’s built-in logging, which was manually turned on/off for that 20 second time span. We also played a bit with Dolphin’s “Backend multi-threading” option (or “MT” for short) because we had doubts whether this is the right approach when used with a normal Vulkan driver. The library was built from tag 0.5 using a simple make version-release command. gfx-portability itself was selected by pointing LIBVULKAN_PATH environment to it. These where configured using GFX_METAL_RECORDING environment.
It’s a single Rust API with multiple backends that implement it: Direct3D 12/11, Metal, Vulkan, and even OpenGL. Gfx-rs is a Rust project aiming to make graphics programming more accessible and portable, focusing on exposing a universal Vulkan-like API.