A tiny Windows ARM64 Direct3D 12 test program for Hangover/Wine/VKD3D-Proton experiments.
The program opens a Win32 window and renders a continuously rotating 3D cube through Direct3D 12. It is intentionally simple and has no asset files.
The GitHub Actions workflow builds:
D3D12Arm64Cube.exe
Expected file result inside Termux:
PE32+ executable for MS Windows, ARM64
This sample directly calls:
CreateDXGIFactory2D3D12CreateDeviceD3D12SerializeRootSignature- D3D12 command queue / swapchain / pipeline / draw calls
So it is a much clearer DirectX 12 / VKD3D-Proton test than apps that may silently fall back to D3D11.
Fork or create a repository, put these files in it, then run:
Actions -> Build D3D12 ARM64 Cube -> Run workflow
Download the artifact:
D3D12Arm64Cube-windows-arm64.zip
Make sure your ARM64 prefix has native ARM64 DLLs:
file "$WINEPREFIX/drive_c/windows/system32/dxgi.dll"
file "$WINEPREFIX/drive_c/windows/system32/d3d12.dll"
file "$WINEPREFIX/drive_c/windows/system32/d3d12core.dll"Expected: ARM64 / AArch64 PE DLLs.
Then run:
export WINEPREFIX="$HOME/.wine"
export VKD3D_DEBUG=info
export VKD3D_LOG_FILE="$HOME/vkd3d-cube.log"
export WINEDEBUG=+loaddll
wine D3D12Arm64Cube.exe 2>&1 | tee "$HOME/d3d12-cube-load.log"Check:
grep -Ei 'D3D12|d3d12core|vkd3d|dxgi|D3D12CreateDevice' "$HOME/d3d12-cube-load.log"
cat "$HOME/vkd3d-cube.log" 2>/dev/null | head -120
cat d3d12-arm64-cube.log 2>/dev/nullA successful run should show a window titled:
D3D12 ARM64 Rotating Cube - close with Esc
and d3d12-arm64-cube.log should contain:
D3D12CreateDevice OK
D3D12 sample initialized successfully.
- This is a diagnostic sample, not a benchmark.
- It uses runtime HLSL compilation via
d3dcompiler. - It links against Windows SDK
d3d12,dxgi, andd3dcompilerlibraries.