mtl12 Devlog, Seite 6
Ältere Einträge aus dem Devlog. Projekt, Stand und Galerie stehen auf der ersten Seite.
Einträge
Die Einträge sind auf Englisch verfasst. 72 Einträge, neueste zuerst. Diese Seite zeigt 014 bis 001.
- Entry 014
Reserved resources on Metal 4, and tiles that remember what they were mapped to
D3D12 tiled resources now run on Metal 4's placement sparse API, with one workaround: an unmapped tile on Apple's GPU keeps showing the memory it was last mapped to.
- Entry 013
Root arguments that outlive their signature, and depth clears that round
Thirteen more D3D12 conformance tests pass on Metal, mostly by copying behaviour native drivers have but the specification barely mentions.
- Entry 012
Sample masks, LOD clamps and clear colours Metal doesn't handle
Eleven more D3D12 conformance tests pass on Metal after moving sample masks, minimum-LOD clamps and clear-colour rules into the layer.
- Entry 011
Sampling twice to get a border colour Metal doesn't have
Metal lacks several D3D12 sampler and rasterizer features, so this session emulates them inside the generated shaders: arbitrary border colours, LOD bias and cull distances.
- Entry 010
Memory freed while the GPU was still using it
A test that hung the GPU pointed to a lifetime bug: long command lists are split into several Metal command buffers, and the memory of an earlier one could be recycled while later ones still read it.
- Entry 008
Execute
Indirect, and timeouts that were really assertions This session added Execute
Indirect (draws and dispatches whose arguments the GPU writes), reworked typed buffer views so millions of them share a few Metal textures, and found that most test timeouts were Metal validation assertions that hang instead of aborting under Wine. - Entry 007
Strip cuts Metal can't turn off, and crashes that weren't ours
This session turned on DXIL shaders (shader model 6.0), added the newer command-list interfaces for dynamic depth bias, per-face stencil and dynamic strip cut, and emulated D3D12's index-buffer strip cut on Metal, which always cuts strips at the largest index value.
- Entry 005
Shaders, pipelines, and the first triangle
D3D12 shaders now run on Metal: compute dispatches and draws work, a triangle made it to the screen, and passing tests went from 82 to 347.
- Entry 004
Replayable command lists, a Windows-shaped DLL, and reading Apple's license
Command lists can now run more than once on Metal 4, d3d12.dll is split the way Windows splits it, and passing tests went from 56 to 82 with no new failures.
- Entry 003
The test that finished but never ended
Tests timed out at random after they had already passed. The cause was Wine's background processes keeping an output pipe open, not a bug in my code.
- Entry 002
First pixels: a cleared screen that matches Windows exactly
A D3D12 program under Wine now clears its window through Metal, and the frame matches Microsoft's reference renderer bit for bit.
- Entry 001
Choosing the architecture with three experiments
Three small experiments settled how to run D3D12 games on Apple Silicon: directly on Metal 4, with an open-source shader pipeline, not through Vulkan.