Fortunately we were able to quickly address these issues, and soon begin to render real gameplay. While testing Dolphin, we noticed some further minor bugs in gfx. We noticed Dolphin was actively working on adding support for macOS, so we took the opportunity to test it with gfx-portability. With the blockers addressed, we were able to render gameplay within RPCS3.ĭolphin is an emulator for two recent Nintendo video game consoles: the GameCube and the Wii.
The RPCS3 developers were extremely helpful, and both teams were able to collaborate to quickly address the blockers. The gfx-rs team started macOS integration by adding surface and swapchain support, and in the process identified a number of blockers in both gfx-rs and RPCS3. RPCS3 has a Vulkan backend, and some attempts were made to support macOS previously.
RPCS3 is an open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows and Linux. Similar to our experience with running Dota2 for the first time, we immediately hit some missing functionality in gfx-portability, and discovered various issues with the projects.
Already using Vulkan for rendering: allows us to simply load gfx-portability on macOS in place of a Vulkan driver on other platforms, because gfx-portability implements vulkan.h.Open-source: allows us to easily debug issues and add or modify existing macOS window and surface support.We were especially interested in finding projects matching the following criteria: Expanding Portability TestingĪfter improving functionality and performance of gfx-portability’s Metal backend through benchmarking Dota2, and verifying certain functionality through the Vulkan Conformance Test Suite (CTS), we decided to expand our testing to other projects. This post is focused on the Metal backend only.
We are also building a Vulkan Portability implementation ( gfx-portability) based on it, which allows non-Rust applications using Vulkan to run everywhere. 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.