Ferrum development journal · Part 12 of 19
Portal Reaches a Command Stream, With the Frame Still Ahead
More Vulkan commands and application imports were connected for Portal. The recorded run still did not establish an intro, menu, or visible game frame.
Portal continued to be a useful test of the 32-bit path because it combines a large application runtime with a substantial graphics workload. The September work added more of the Vulkan commands its path reached, including buffer updates, image copying, and vertex-buffer binding conversions.
Those conversions have to preserve more than a function name. A 32-bit array of pointers or offsets needs the correct shape on the native side, and the length we validate has to be the same length we later copy. One hardening change explicitly joined that length check and copy, rather than giving them separate opportunities to disagree.
Application imports also continued to surface. The recorded changes include handling a string-pointer query and binding the Steam installation-path query used by the title. These removed particular obstacles in the test path. They didn't turn a title-specific collection of imports into the finished generic Windows strategy.
The important result from the September 26 report is that Portal reached a Vulkan command stream. The equally important limit is that the report claimed no visible Portal frame, no intro, and no menu. I'm keeping that limit right next to the progress because it's the question someone interested in playing the game would actually ask.
Steam diagnostics were also exploring what a stalled worker was waiting for and which code created or signaled particular events. A trace can show that a client has advanced while still leaving the serving state needed by a game unresolved.
I want the eventual milestone to be easy to understand: a real frame, a menu, and an interactive session through the intended runtime. Until then, a command stream is a useful place to continue debugging. It isn't a substitute for the picture we still need to show.
Ferrum development journal
View the journalLive19 entries so far·Updated New (19 entries updated in the last 14 days)
- Part 1Bringing FEX to macOS: The First Windows Program
- Part 2From Return Values to Pixels and Sound
- Part 3Building More of the Windows Runtime
- Part 4Following a Game Through Its Opening Video
- Part 5Installers, Saves, Fonts, and the Parts Around the Game
- Part 6Game Progress and Measuring the Right Thing
- Part 7Building the 32-Bit Graphics Path
- Part 8Making Memory, Files, and Graphics State Agree
- Part 9DirectX 12, Shader Caches, and the Steam Startup Work
- Part 10Working on Presentation and Controller Input
- Part 11A Launcher and a Freeze That Wasn't the Presenter
- Part 12Portal Reaches a Command Stream, With the Frame Still Ahead
- Part 13Correcting the Ferrum Progress Report
- Part 14Recovering the Project and Resuming Real Tests
- Part 15Making Memory Protection and Lifetime Tests More Useful
- Part 16Getting Wine's Real 32-Bit Startup to Run
- Part 17Making the Launcher Own Its Storage and Processes
- Part 18A Real Archive Roundtrip and Better File Behavior
- Part 19Asynchronous I/O and the Bytes a Cancelled Write Keeps