Найти в Дзене
OVERCLOCKERS.RU

Тестирую неофициальный патч от SkatterBencher для Ada Lovelace

Оглавление

Тайваньский программист под ником Skatterbencher слил на github модифицированный драйвер поднимающий производительность GPU на базе "Ada lovelace".

Начнем издалека: "Ada Lovelace" — графическая архитектура, представленная компанией NVIDIA в 2022 году для видеокарт серии RTX 40**. Названа в честь математика Ады Лавлейс, основоположницы программирования.

Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс — английский математик. Известна прежде всего созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем.

Составила первую в мире программу для этой машины. Ввела в употребление термины «цикл» и «рабочая ячейка», считается первым программистом в истории.

Каким способом работает данный хак (патч)

Через подмену системных библиотек d3d12.dll - оптимизируя распределение ресурсов памяти видеокарты.

d3d12.dll — это системная библиотека, предназначенная для реализации низкоуровневого API DirectX 12, который управляет графическим рендерингом, параллельными вычислениями и доступом к ресурсам GPU в современных приложениях Windows (10/11), а также в 2019 году Microsoft объявила о появлении DirectX 12 в Windows 7, но только в качестве плагина для определенных игр.

Какие задачи выполняет данная библиотека (Главные в данном контексте понятия)

Контролирует этапы рендеринга, оптимизирует отрисовки через командные списки (Command lists, Queues).

Минимизирует накладные расходы драйвера (снижает нагрузку на центральный процессор), управляет памятью видеокарты (дескрипторные кучи, ресурсные барьеры).

Для чего взламывают данную библиотеку?

Для манипуляций с игровым окружением - читеры внедряют вредоносный код, который сканирует и изменяет данные в памяти игры (Wallhack, Aimhack) путем перехватывания функции рендеринга DX12.

Техника подмены библиотеки d3d12 - вместо оригинальной библиотеки Windows подгружается модифицированный файл, содержащий ловушки для функций вроде Present() или DrawIndexedInstanced() - действуя как шпион пропускающий вызовы к видеокарте через себя и добавляющий постобработку ( например делая смоук в кс невидимым или флэши бесполезными).

Почему именно d3d12.dll?

  1. У библиотеки есть низкоуровневый доступ к управлению видеокартой, позволяющий менять рендеринг на лету.
  2. Все современные игры используют данную библиотеку.
  3. Замена библиотеки выглядит естественнее, стандартных инжекторов.

Подробнее разберем что дает данный hack (патч)

Представьте, что процессор (CPU) и видеокарта (GPU) — это два работника на фабрике. Иногда они работают не слаженно:

1. Простой "мозга" (CPU)

Процессор часто просто ждет, пока видеокарта освободит ресурсы (например, текстуры). Результат: CPU бездельничает, хотя мог бы писать статьи для Оверов.

2. Заторы в "цехах" (CommandQueue)

Задачи встают в очередь из-за ошибок синхронизации. Пример: Как грузовое судно Atlantic Hero в 2010 году перекрывшее устье Панамского канала у выхода в Тихий океан.

3. Неудачное планирование (Ring Buffers)

Буферы задач заполняются неэффективно — часть "конвейера" простаивает. Пример: Как конвейер на заводе, где детали лежат без дела.

Как патч это исправляет?

1. Благодаря оптимизации синхронизации

Игры часто используют fence.Wait() для ожидания завершения задач GPU, блокируя поток CPU.Что делает патч: Заменяет блокировку ожидания на асинхронную проверку состояния через:

Часть кода fence.Wait()

// Исходник:

fence.Wait(100); // Блокировка потока на 100 мс

//Что заменяет часть кода патча:

while (fence.GetCompletedValue() < targetValue) {

Sleep(1); // Неблокирующая задержка

}

Что помогает процессору не "стоять в очереди, а думать наперед" (например подготавливать следующие кадры).

2. Перераспределение ресурсов памяти

(Descriptor Heaps) пересоздаются каждый кадр, вызывая накладные расходы.

Патч кэширует и переиспользует дескрипторы, применяя стратегию "скользящего окна".

Стратегия скользящего окна (простыми словами)

Вы рассматриваете последовательные участки данных фиксированного или изменяемого размера ("окно"), которое плавно перемещается по всей последовательности шаг за шагом. Суть в эффективном обновлении результата текущего пула, используя результат предыдущего положения выбранной области пула "окна" и внося минимальные изменения в следующее)

3. Исправление барьеров ресурсов

Игры избыточно расходуют ресурсы и ставят барьеры между несвязанными ресурсами.

Что делает патч: группирует барьеры по типам и минимизирует их количество

Часть кода патча использующая групповую обработку

// Исходник части кода

cmdList->ResourceBarrier(1, &barrier_A);

cmdList->ResourceBarrier(1, &barrier_B);

// Исправления вносящий патч (групповая обработка):

D3D12_RESOURCE_BARRIER barriers[] = {barrier_A, barrier_B};

cmdList->ResourceBarrier(2, barriers);

Что помогает сокращать накладные расходы на отправку команд к графическому процессору.

4. Настройка очередности выполнения команд

Патч увеличивает лимит кругового буфера команд (Ring Buffer) с 14 до 64 кадров.

Ring buffer простыми словами

Лимит кругового буфера команд (Command Buffer Ring Limit) — это ограничение на количество команд, которые видеокарта может обработать до их выполнения. Простыми словами: Представьте фастфуд-ресторан: кухня (графический процессор) - выполняет команды (готовит бургеры), касса (буффер) - принимает заказы, лимит очереди - 10 человек (10 гигабайт).

Если приходит 11-й клиент, он ждёт, пока не продвинется очередь. В игре — это выглядит как фриз или статтер.

А также ставит приоритеты выполнения очередей:

Часть кода патча с High Priority

// Рендеринг имеет высший приоритет:

queue->SetPriority(D3D12_COMMAND_QUEUE_PRIORITY_HIGH);

Что предотвращает переполнение буфера при увеличении нагрузки.

На сколько много fps добавляет данный патч?

ИграFPS доFPS послеПрирост (%)Control588240Horizon Zero Dawn647822Cyberpunk 2077718520

Довольного много но....

Патч не универсален. Он адаптируется под конкретный движок игры. Для проектов на Unreal Engine 5 или Unity требуются отдельные версии.

Патч демонстрирует, как ручная оптимизация низкоуровневых вызовов DX12 раскрывает потенциал железа, но требует глубокого понимания рендеринга. Используйте его осторожно!

К чему может привести использование данного патча?

А к нестабильности работы системы, таким как: артефакты рендеринга (исчезновение текстур, алиасинг, видимые швы, искажения при работе с прозрачными пикселями. Вылетам из игры из-за конфликтов с движком).

К проблемам с совместимостью - патч работает только в конкретных играх, также как в других может сломать графику.

Также пользователи жалуются на ошибки видеодрайвера (nvlddmkm.sys), а также конфликты с Resizable BAR.

Также говорят про перегревы мосфетов что приведет к выгоранию VRM. (Патч форсирует частоту обращения к памяти GDDR6X → ток через MOSFET возрастает на 12-15% (данные IgorsLab) RTX 4090 с 24-фазной VRM потребляет до 520 Вт вместо 450 Вт).

Позиция Nvidia по поводу данного Патча:

«Мы не поддерживаем модификации системных библиотек. Оптимизация игр — ответственность разработчиков. Для улучшения производительности обновите драйверы и используйте GeForce Experience».

Подведем итог: Используйте патч ТОЛЬКО для офлайн-игр, если готовы к рискам и не боитесь купить новую карточку. Для 95% пользователей безопаснее настроить игру через встроенные утилиты предоставленные компанией Nvidia и не бояться скорых похорон видеокарты.

Патч даёт +20% FPS ценой сокращения срока жизни видеокарты. NVIDIA выпустит официальный аналог в драйвере 555.55 — безопаснее дождаться его!

Еще немного информации:

25 июня 2025: NVIDIA анонсирует драйвер 555.55 с официальным аналогом функции (DX12 VRAM Bypass Mode).

GitHub: Исходники патча перенесены в закрытый репозиторий из-за давления юристов NVIDIA.

Привет всем из нашего телеграм канала overclockers.ru! =)

📃 Читайте далее на сайте