Files
d4r/README.md
T

149 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# d4r для Windows / RDNA4
Windows-форк [countervolts/d4r](https://github.com/countervolts/d4r) для запуска
DLSS Super Resolution на **AMD Radeon RX 9070 XT / gfx1201** через D3D12,
OptiScaler, ZLUDA и HIP. Целевые модели: **DLSS 4 preset K** и
**DLSS 4.5 preset M**. Runtime работает непосредственно в Windows 11.
**Статус: development / prerelease.** K и M работают на тестовой RX 9070 XT,
включая 4K в Silent Hill 2. Текущий приоритет — производительность K.
## Скачать и запустить
[Готовые сборки](https://github.com/xdfnx-dev/d4r/releases) содержат Windows
shim, исправленный ZLUDA, изолированный HIP runtime, patched OptiScaler,
11 native K kernels, 5 native M kernels и исходники соответствующего commit.
Понадобятся Windows 11 x64, RX 9070 XT и D3D12 игра без anti-cheat.
Проверенный AMD driver: `32.0.31041.1004`. Другие GPU и драйверы пока
не прошли такую же проверку.
Предоставьте собственные локальные `_nvngx.dll` и `nvngx_dlss.dll`.
Проверенная пара: NGX `32.0.16.1714`, DLSS `310.9.1.0`. Native manifest
проверяет SHA256 DLSS DLL. NVIDIA binaries в сборку не включены.
Распакуйте ZIP и выполните команду из его каталога, подставив свои пути:
```powershell
.\windows-game.ps1 -GameExe "D:\Games\SILENT HILL 2\SHProto\Binaries\Win64\SHProto-Win64-Shipping.exe" -NgxCore "C:\Users\Administrator\d4r\_nvngx.dll" -DlssDll "C:\Users\Administrator\d4r\nvngx_dlss.dll" -Preset 11 -AsyncInterop
```
В игре выберите upscaler, который перехватывает OptiScaler. `-Preset 11`
выбирает K, `-Preset 13` — M. Начинайте проверку M без `-AsyncInterop`:
асинхронный путь сейчас проверяется прежде всего на K. Первый запуск может
занять время на PTX compilation; следующие используют cache.
Скрипт устанавливает `dxgi.dll`, конфигурацию OptiScaler и каталог `d4r`
рядом с EXE, предварительно сохраняя заменяемые файлы. Вход и выход текущего
кадра остаются в VRAM. Восстановление исходных файлов:
```powershell
.\windows-game.ps1 -Action restore -GameExe "D:\Games\SILENT HILL 2\SHProto\Binaries\Win64\SHProto-Win64-Shipping.exe"
```
Подробные параметры установки и восстановления:
[docs/windows-game.md](docs/windows-game.md).
## Что проверено
| Проверка | Результат на RX 9070 XT |
| --- | --- |
| Обнаружение GPU | HIP автоматически определяет `gfx1201`; проверяется D3D12/HIP LUID |
| HIP и CUDA через ZLUDA | Native HIP kernel и CUDA Driver API / PTX tests проходят |
| D3D12 ↔ HIP | Shared VRAM buffers и fences; import/release lifetime test проходит |
| K transformer | Все 11 native layers, NumPy/PTX/replay validation |
| M transformer | Все 5 native layers, 40 temporal captures, exact baseline |
| Async K | Очередь кадров и Release/CreateFeature точно совпадают с synchronous RGB |
| Silent Hill 2 / K / 4K | 16 941 кадр с проверкой NaN/Inf, 203 292 native launches, 0 backend errors |
| Windows hardware tests | Все 16 CTest gates проходят |
Точные совпадения относятся к проверенным reference/control implementations
этого проекта. Сравнение с DLSS на физической RTX ещё не выполнено.
Проверка одной игры не подтверждает совместимость со всеми D3D12 играми.
## Производительность и ограничения
В локальной 4K сцене пользователь наблюдает около **62 FPS / 63% GPU** с
async interop, против **49–51 FPS / 53%** в предыдущем synchronous варианте.
Замеры также используют локально построенные и проверенные K output-store
kernels. Они содержат NVIDIA-derived code и в публичный ZIP не входят;
команды их локальной сборки есть в
[docs/windows-performance.md](docs/windows-performance.md).
Производительность K ещё дорабатывается. Замеры не являются контролируемым
сравнением с FSR4. `-AsyncInterop` опционален и требует одной D3D12 command
queue. Feature release и resource reconfiguration ожидают завершения GPU
consumers; обычная отправка кадра не удерживает CUDA mutex.
M использует проверенную FP16-equivalent baseline. Native RDNA4 FP8 отдельно
валидирован, но не показал выигрыша для полной сети и выключен по умолчанию.
Windows preset L пока не валидирован. Frame Generation и DLSS 5 не входят
в текущую задачу.
Package использует TheRock `10.2.0a20260929` / HIP `7.17.26386`. Stable HIP
7.2 воспроизводит leak при освобождении mapped external memory; поэтому
закреплён отдельный TheRock runtime. GPU architecture не подменяется.
## Сборка из исходников
```powershell
git clone https://github.com/xdfnx-dev/d4r.git
cd d4r
```
Подготовка закреплённых toolchains и patches описана в
[docs/windows-rdna4-port.md](docs/windows-rdna4-port.md). Нужны CMake + Ninja,
LLVM/MinGW, Rust GNU toolchain, TheRock HIP, а для OptiScaler — MSVC v143
и Windows SDK. Setup-скрипты используют `.tools`; source dependencies — `external`.
После подготовки зависимостей выполните из корня репозитория:
```powershell
.\scripts\windows\build-zluda-windows.ps1
.\scripts\windows\build-windows-rdna4.ps1 -RuntimeProfile therock -ZludaRoot "$PWD\dist\zluda-windows-final" -InstallDirectory "$PWD\dist\windows-rdna4-command-list"
.\scripts\windows\stage-native-k.ps1 -DlssDll "$PWD\nvngx_dlss.dll" -PackageRoot "$PWD\dist\windows-rdna4-command-list"
.\scripts\windows\stage-native-m.ps1 -DlssDll "$PWD\nvngx_dlss.dll" -PackageRoot "$PWD\dist\windows-rdna4-command-list"
.\scripts\windows\build-optiscaler-windows.ps1
.\scripts\windows\package-windows-game.ps1 -ArchivePath "$PWD\dist\windows-rdna4-game.zip"
```
Создание distributable ZIP требует committed source. Package включает manifest
с hashes, dependency licenses, source patches и snapshot этого commit.
## Тесты и диагностика
После сборки hardware gates:
```powershell
& .\.tools\python\cmake\data\bin\ctest.exe --test-dir build/windows-rdna4-therock --output-on-failure
```
Async K regression с локальными NVIDIA DLL в корне репозитория:
```powershell
.\scripts\windows\test-async-k.ps1 -ZludaRoot "$PWD\dist\zluda-windows-final"
```
Успех: `PASS`, exact RGB, finite output и `passed: true` в `validation.json`.
Для ограниченного game test добавьте `-RunSeconds 120 -ValidateOutput` к
команде запуска. Скрипт сохраняет один ZIP с stdout/stderr, runtime/driver
information, native/translated kernel records и OptiScaler logs. Для crash
диагностики используйте `-CaptureExceptions`.
`-ProfileStages` измеряет host stages, `-ProfileCudaApi` — существующие CUDA
API waits, `-ProfileGpuBoundary` вместе с `-AsyncInterop` — D3D12 GPU intervals
вокруг interop. `-ProfileKernels` синхронизирует HIP events и меняет scheduling.
При замере обычного FPS оставляйте profiling и output scans выключенными.
## Документация и лицензии
- [Архитектура, зависимости, milestones и результаты](docs/windows-rdna4-port.md).
- [Game install / restore](docs/windows-game.md).
- [Измерения K/M и FP8](docs/windows-performance.md).
- [OptiScaler source patches](patches/optiscaler/README.md).
- [ZLUDA source patches](patches/zluda).
Проект основан на работе countervolts; Linux upstream code и документация
сохранены для совместимости. Форк не связан с NVIDIA или AMD. Лицензия d4r:
[LICENSE](LICENSE); лицензии зависимостей включены в package.