Skip to content

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 journal

Live19 entries so farUpdated New (19 entries updated in the last 14 days)

  1. Part 1Bringing FEX to macOS: The First Windows ProgramDevelopment work: Aug 5 – 7, 2026Updated , new
  2. Part 2From Return Values to Pixels and SoundDevelopment work: Aug 8 – 11, 2026Updated , new
  3. Part 3Building More of the Windows RuntimeDevelopment work: Aug 12 – 18, 2026Updated , new
  4. Part 4Following a Game Through Its Opening VideoDevelopment work: Aug 19 – 20, 2026Updated , new
  5. Part 5Installers, Saves, Fonts, and the Parts Around the GameDevelopment work: Aug 21 – 22, 2026Updated , new
  6. Part 6Game Progress and Measuring the Right ThingDevelopment work: Aug 23 – 27, 2026Updated , new
  7. Part 7Building the 32-Bit Graphics PathDevelopment work: Aug 28 – Sep 1, 2026Updated , new
  8. Part 8Making Memory, Files, and Graphics State AgreeDevelopment work: Sep 2 – 3, 2026Updated , new
  9. Part 9DirectX 12, Shader Caches, and the Steam Startup WorkDevelopment work: Sep 4 – 6, 2026Updated , new
  10. Part 10Working on Presentation and Controller InputDevelopment work: Sep 7 – 12, 2026Updated , new
  11. Part 11A Launcher and a Freeze That Wasn't the PresenterDevelopment work: Sep 15 – 17, 2026Updated , new
  12. Part 12Portal Reaches a Command Stream, With the Frame Still AheadDevelopment work: Sep 23 – 26, 2026Updated , new
  13. Part 13Correcting the Ferrum Progress ReportDevelopment work: Oct 2, 2026Updated , new
  14. Part 14Recovering the Project and Resuming Real TestsDevelopment work: Oct 5, 2026Updated , new
  15. Part 15Making Memory Protection and Lifetime Tests More UsefulDevelopment work: Oct 6 – 9, 2026Updated , new
  16. Part 16Getting Wine's Real 32-Bit Startup to RunDevelopment work: Oct 9 – 11, 2026Updated , new
  17. Part 17Making the Launcher Own Its Storage and ProcessesDevelopment work: Oct 11, 2026Updated , new
  18. Part 18A Real Archive Roundtrip and Better File BehaviorDevelopment work: Oct 11, 2026Updated , new
  19. Part 19Asynchronous I/O and the Bytes a Cancelled Write KeepsDevelopment work: Oct 11, 2026Updated , new

Arrow keys move through the results, Enter opens one, Command or Control with Enter opens it in a new tab. Tab and Shift+Tab change which kind of results are shown.