Skip to content

Ferrum development journal · Part 9 of 19

DirectX 12, Shader Caches, and the Steam Startup Work

The graphics feature work and Steam startup fixes advanced useful components. Neither a feature probe nor a running Steam process closed the application journey.

DirectX 12 support is a good place to be careful about the word working. A particular feature can pass a probe while a game still stops before it reaches that feature. During this period, the project had targeted work on the vkd3d-proton and MoltenVK route, including sparse-resource behavior, pipeline caching, and the feature level exposed by selected test configurations.

Those results are useful because they identify a specific capability or missing mechanism. They aren't enough to label the whole DirectX 12 path complete. A real title has to reach the graphics code, render the expected image, and continue through an interactive session. Some title investigations stopped earlier in the surrounding Windows runtime.

Steam was another large part of the work. Getting the client further into startup involved networking, COM and WMI behavior, process support, and thread-local storage. The records describe concrete blockers being removed and new ones becoming visible. That is progress, even when the final result is still a named failure.

One example involved worker-thread TLS data. Code was trying to copy a template from a runtime module address that wasn't safe to use there. The repair validated and preserved the template in driver-owned memory so the worker could use a stable snapshot. That is the kind of fix that can let a program move past one crash without resolving the rest of its startup.

The boundary I want to preserve is that SteamAPI_Init was still false in the relevant recorded work. A client process starting, loading more libraries, or passing a network initialization step doesn't prove that an owned Steam title reaches its menu through a working client.

The shader-cache results also stay attached to the tests and staged graphics artifacts that produced them. I don't want to turn a specific warm-pipeline improvement into a promise about every game's frame pacing. This phase improved important pieces of the stack, while the complete Steam and DirectX application journeys remained open.

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.