Intel XeSS: як Intel приєднався до боротьби через програмне забезпечення

Було корисно?

Ви можете випустити приголомшливу гру, яку ніхто не зможе запустити. Або ви можете випустити швидку гру, що виглядає так, ніби її рендерять через мокре лобове скло. Сучасні GPU надзвичайно потужні, але найважче залишається те ж саме операційне завдання: утримати стабільний час кадру в межах бюджету при різному апаратному забезпеченні, драйверах, термальному режимі та контенті.

Intel XeSS (Xe Super Sampling) — спосіб Intel увійти в гонку апскейлінгу — здебільшого через програмне забезпечення, прагматизм і з дуже чіткою метою: зробити «рендеруй менше, виглядай як більше» робочим рішенням на різній силіконовій базі. Якщо ставитися до XeSS як до чарівного прапорця, він вас кусатиме. Якщо розглядати як виробничу фічу з телеметрією, бюджетами і режимами відмов, він може відокремити «рекомендовані вимоги» від «шторму повернень коштів».

Чому існує XeSS: програмне рішення апаратної проблеми

Апскейлінг — найменш гламурний спосіб «створити продуктивність». Ви не збільшуєте швидкість GPU; ви зменшуєте обсяг роботи, а потім відновлюєте деталі. Бізнес-кейс очевидний: сучасна візуалізація вимагає сучасних часів кадру. Рейтрейсинг, велика кількість семплів, важкі постпроцеси та щільна геометрія змагаються за той самий відрізок мілісекунд на кадр.

Intel з’явився пізніше на ринку дискретних GPU. XeSS — частково технічна фіча, частково тактика виходу на ринок. Вона дозволяє Intel казати: «Наші GPU можуть грати на високих роздільностях», а також дає студіям ще важливішу річ: «Ви можете орієнтуватися на широку аудиторію, не пишучи три окремі стекі реконструкції». Друга частина — амбіція крос-вендорності — має значення з операційної точки зору. Вона зменшує комбінаторний вибух «цей режим на тім GPU з тим драйвером і тим контентом».

Але основна операційна істина залишається: тимчасові апскейлери — це не лише алгоритми. Це конвеєри. Ви підкидаєте їм історію, вектори руху, глибину, експозицію і іноді реактивні маски. Якщо ваші вхідні дані неправильні, результат буде неправильним з високою впевненістю. І нічого не деморалізує так, як алгоритм, що виробляє красиво хибні пікселі.

Цікаві факти та історичний контекст (коротко, конкретно)

  • Тимчасове масштабування стало мейнстримом, бо мейнстримом став 4K. Стрибок у кількості пікселів випередив комфортне зростання растрової продуктивності для типових споживчих бюджетів.
  • DLSS змінив очікування, зробивши ML-реконструкцію «нормою» для геймерів. Після цього «лише просторове масштабування» почало виглядати як компроміс, а не як функція.
  • Intel оголосив XeSS у 2021 році, коли Arc формувався в реальну дискретну GPU-ініціативу, а не лише як бренд інтегрованої графіки.
  • XeSS спроєктований працювати на апаратурі Intel XMX для кращої продуктивності й якості, але також має запасний шлях для інших GPU через інструкції DP4a.
  • Крос-вендорна підтримка — це не лише маркетинг. Це практична спроба стати «третьою опцією» в меню налаштувань гри без вимоги лише Intel‑апаратури.
  • Апскейлери змусили движки серйозно ставитись до векторів руху. Багато студій дізналися, що їхні вектори «добрі для motion blur», що не те ж саме, що «достатньо коректні для реконструкції».
  • Джиттерне семплювання (стиль TAA) не опційне для якісної тимчасової реконструкції. Якщо ваш рендер стабільний, але недостатньо семплується, у апскейлера менше інформації для відновлення деталей.
  • Доробленість драйверів важить більше для апскейлерів, ніж для багатьох інших фіч. Тонка проблема синхронізації або стану ресурсів може проявитися як привиди, мерехтіння або періодична корупція, що виглядає як баг контенту.

Як працює XeSS (і чому тимчасове масштабування крихке)

XeSS — це тимчасовий апскейлер: він створює більш високороздільне зображення, поєднуючи поточний кадр, зрендерений у нижчій роздільності, з інформацією з попередніх кадрів. Слово «тимчасовий» — це попереджувальна етикетка. Воно означає, що ви будуєте картинку в часі, а отже покладаєтеся на те, що зможете правильно зіставити старі пікселі з новим кадром.

Практично інтеграція XeSS — це контракт:

  • Ви надаєте: кольори в низькій роздільності, глибину, вектори руху, зсуви джиттера, інформацію про експозицію/тонемап (залежно від реалізації) і іноді маски для прозорості або спеціальних випадків.
  • XeSS надає: реконструйоване зображення вищої роздільності, ідеально з більш стабільними деталями, ніж наївне масштабування, і бажано з меншим мерехтінням, ніж класичний TAA.

Цей контракт ламався передбачуваними способами:

  • Неправильні вектори руху → сліди-привиди, розмивання, «подвійні зображення» або нестабільні дрібні деталі.
  • Погана глибина → некоректна обробка дискосплешацій, ореоли навколо країв і тимчасові стрибки.
  • Несумісність експозиції → стрибки яскравості та відчуття, що «історія ніби з іншого всесвіту».
  • UI у неправильному місці → різке UI перетворюється на AI‑розмиту помилку.

З погляду SRE розглядайте XeSS як розподілену систему: сміття на вході — сміття на виході, а відмови є емерджентними. Ви не побачите аварії; ви побачите повільну ерозію довіри. Гравці скажуть «щось не те». Це найскладніший клас багів: суб’єктивний, змінний і заразний у відгуках.

Ще одна правда: тимчасове масштабування — це функція продуктивності, що споживає час GPU. Якщо ваш конвеєр уже важко навантажений обчисленнями, апскейлер високої якості може бути соломинкою, яка перетворить «в основному нормально» на «хаотичну картину». Потрібно вимірювати, а не інтуїтивно перевіряти.

Цитата, що тримає вас реалістом: «Надія — не стратегія.» — перефразована ідея, часто приписувана в операційних колах (зазвичай пов’язують з Gordon R. Sullivan). Користуйтеся метриками.

Два шляхи: XMX проти DP4a (і чому це важливо)

XeSS — «програмне» в сенсі алгоритму, що постачається як бібліотека та інтегрується в движки. Але він також «чутливий до апаратури». На Intel Arc GPU XeSS може використовувати XMX (матричні блоки Intel) для ефективного запуску ML‑інференсу. На інших GPU, що підтримують DP4a (інструкції скалярного добутку), XeSS може працювати через запасний шлях.

Цей розподіл має операційні наслідки:

  • Прогнозованість продуктивності відрізняється. XMX зазвичай має кращий профіль продуктивність/якість. DP4a функціональний, але може виявитися дорожчим залежно від архітектури GPU і завантаження.
  • Послідовність якості може відрізнятися. Реалізації прагнуть паритету, та ви маєте припускати, що артефакти можуть змінюватись за шляхом і драйвером.
  • Навантження підтримки зростає. Коли до вас надходить баг «XeSS виглядає погано», перше питання: який шлях? Потім: який драйвер, який GPU, який режим, який контент.

Правило великого пальця: якщо ви відвантажуєте XeSS, ви повинні тестувати принаймні на одній карті Intel Arc і принаймні на одному не-Intel GPU з підтримкою DP4a. Інакше ви не тестуєте «XeSS» — ви тестуєте ваш улюблений порт XeSS.

Короткий жарт №1: Тимчасове масштабування схоже на груповий чат — одне неправильне повідомлення (вектор) і весь тред перетворюється на непорозуміння на години.

Режими якості, вхідна роздільна здатність і бюджет часу кадру

Апскейлери зазвичай мають режими на кшталт Quality, Balanced, Performance, Ultra Performance. Під капотом вони в основному змінюють вхідну роздільність рендеру щодо виходу.

Ось модель прийняття рішень, що справді працює в виробництві:

  1. Почніть із бюджету часу кадру (наприклад, 16.67ms для 60 FPS, 8.33ms для 120 FPS).
  2. Виміряйте базовий показник без апскейлу на нативній вихідній роздільності.
  3. Виміряйте базовий показник із нижчою внутрішньою роздільністю, але без ML‑апскейлу (щоб оцінити виграш по растеру).
  4. Потім додайте XeSS і спостерігайте: загальний час GPU, варіацію і частоту артефактів по категоріях сцен.

Якщо ви не відокремите «збереження на рендері» від «витрат реконструкції», ви звинуватите не ту частину стека. Бачив команди, що тиждень «оптимізували XeSS», коли справжня проблема була у постпроцесинговому стекові, що не знижував навантаження зі зменшенням роздільності.

Також: не оптимізуйте для середнього FPS. Оптимізуйте для послідовності часу кадру. Апскейлери можуть вводити сплески через переходи ресурсів, пропуски кеша або синхронізацію навколо буферів історії — особливо якщо рендер-ґраф вашого движка вже на межі.

Реальність інтеграції: вектори руху, джиттер, експозиція та «все, що ви забули»

Вектори руху: «достатньо близько» — це баг

Вектори руху для апскейлу повинні відображати, як вміст пікселя переміщувався між кадрами. Звучить просто, поки не випустиш продукт:

  • Скінінговані меші з відсутньою швидкістю на деяких рівнях LOD
  • Частинки, що не записують вектори руху (або записують нісенітницю)
  • Прозорі об’єкти, які мають бути виключені або оброблені окремо
  • Різкі зміни камери та телепортації, що отруюють історію

Типовий збій: привиди позаду рухомих персонажів, розмиті краї зброї або «тягнучі» елементи HUD. Виправлення — не «заточити більше». Виправлення — подавати правильні вектори і визначити, що не слід накопичувати тимчасово.

Джиттер: він потрібен, але ним треба керувати

Тимчасова реконструкція виграє від джиттерного семплювання: невеликі субпіксельні зсуви між кадрами, що дозволяють алгоритму виводити високочастотні деталі. Але джиттер також взаємодіє з:

  • Рендерингом UI (повинно бути в просторі виходу, не в джиттерній вхідній області)
  • Ефектами в простору екрану (SSR, SSAO), які стають шумними, якщо не стабілізовані
  • Порядком постпроцесингу (де ви застосовуєте тонемапінг і шарпінг)

Експозиція і тонемапінг: визначте простір і дотримуйтеся його

Апскейлери зазвичай віддають перевагу стабільному вхідному сигналу. Якщо ваша експозиція адаптується швидко, і ви подаєте вхідний колір до тонемапінгу в один кадр, а після тонемапінгу в інший (або змінюєте криві між проходами), ви побачите «пампінг». Визначте правильний простір для інтеграції апскейлера і не «пробуйте щось» в останній тиждень перед релізом.

Реактивні маски і спеціальні випадки: вода, частинки і альфа — серійні порушники

Прозорості та частинки відомі своїми тимчасовими артефактами, бо позбавлені стабільної глибини/руху. Багато інтеграцій апскейлерів підтримують маски, щоб зменшити залежність від історії в цих областях. Якщо ви пропустите це, алгоритм впевнено вигадуватиме безперервність там, де її немає.

Короткий жарт №2: Шарпінг — це скотч графіки: корисний в аваріях, підозрілий як довгострокова архітектура.

Три міні-історії з корпоративних «триньок»

Міні-історія 1: Інцидент, спричинений неправильною припущенням

Студія мала кросплатформенну збірку і приємну абстракцію: «вектори руху — це вектори руху». Вони генерувалися в одному проході, споживалися для motion blur, TAA і тепер XeSS. Усі кивали головами. Спільний код — це добре, чи не так?

Потім QA почала надсилати баги щодо XeSS: привиди навколо персонажів, особливо під час бокових рухів. Провідний інженер рендерингу звинувачував апскейлер. Продюсер — драйвери Intel. Інженер збірки — «новий контент-пак». Звична карусель взаємного звинувачення запустилася, бо ніхто не хотів чути «наші вектори неправильні».

Коли вони нарешті копнулися, корінна причина була буденною: їхні вектори руху обчислювалися в просторових координатах для motion blur, але апскейлер очікував іншу конвенцію і масштаб. На додачу, підмножина анімованих мешів мала відключені швидкості на певних порогах LOD для економії пропускної здатності. Motion blur майже не помітив. XeSS помітив відразу.

Виправлення не було гламурним: уніфікувати конвенції, валідувати вектори дебаг-оверлеями і забезпечити запис швидкостей для всієї релевантної геометрії. Привиди зникли. Так само зникли обвинувачення — принаймні тому, що всі начебто «вже знали це».

Міні-історія 2: Оптимізація, що обернулась проти команди

Команда продуктивності вирішила зменшити пропускну здатність, більш агресивно стискаючи буфери історії. На слайді виглядало розумно: менше байтів, менше пропусків кеша, швидші кадри. Вони виміряли невеликий виграш у статичній сцені і запустили це в нічні збірки.

За кілька днів гравці у внутрішньому каналi почали скаржитись, що тонка геометрія — паркани, дроти, далекі перила — виглядає як ніби вібрує. Звіти були розмиті. «Мерехтіння». «Повзання». «Відчуття нестабільності». Класика.

Виявилось, що додатковий шум квантовання в історії, у поєднанні з джиттером і агресивним шарпінгом, створив петлю зворотного зв’язку. Апскейлер намагався реконструювати деталі з деградованого історичного сигналу; шарпінг підсилював похибку; наступний кадр використовував це підсилене зображення як історію. Результат: тимчасова нестабільність, що погіршувалась з рухом.

Вони відкотили зміну стиснення і пізніше знову впровадили її з запобіжниками: порогами за контентом, кращим дизерингом і жорстким обмеженням шарпінгу в режимах продуктивності. Урок був болючий, але ясний: у тимчасових системах «трохи гірші дані» можуть перетворитися на «катастрофічно гірший результат», бо помилки зберігаються кадр за кадром.

Міні-історія 3: Нудна, але правильна практика, що врятувала ситуацію

Інша команда зробила нудну річ: побудувала регресійний хаб. Кожна нічна збірка рендерила фіксований набір шляхів камери по бібліотеці сцен. Вони захоплювали кадри виводу, візуалізації векторів руху і трейс часу кадру. Нічого складного, але послідовно.

За два тижні до релізу в їхній матриці тестування з’явився драйверний апдейт. З’явився тонкий артефакт: періодичне мерехтіння на різко-контрастних краях під час швидких панорам камерою. Гра не падала. Продуктивність була в нормі. Без хабу це б пролітало як «дивна поведінка апаратури гравця».

Оскільки хаб порівнював виходи, мерехтіння було відфлаговано відразу. Вони бісекали: та сама збірка, інший драйвер. Потім той самий драйвер, інший режим XeSS. Потім той самий режим, інший запасний анти-аліасинг. Протягом дня у них з’явився мінімальний repro і надійна сигнатура.

Вони відвантажили з цілеспрямованим обхідним шляхом і попередженням щодо драйвера в нотатках релізу. Не героїчно. Просто дисципліновано. З операційної точки зору вони зменшили середній час до виправдання невинності, а потім середній час до розв’язання. Нудно, правильно, ефективно.

Практичні завдання: команди, значення виводу та рішення

Ці завдання припускають Linux‑робочу станцію або тестовий стенд. Якщо ви на Windows, точні команди відрізнятимуться, але операційна логіка та сама: перевірити апаратний шлях, версію драйвера, насичення GPU, термальні обмеження, кадрування та кореляцію артефактів з вхідними даними конвеєра.

Завдання 1: Визначте GPU і драйвер, що використовуються

cr0x@server:~$ lspci -nn | grep -Ei 'vga|3d'
01:00.0 VGA compatible controller [0300]: Intel Corporation Arc A770 [8086:56a0]

Що це означає: Ви знаєте точний GPU і vendor/device ID. Це впливає на те, чи XeSS ймовірно запуститься на XMX (Intel Arc) або на DP4a (інші GPU).

Рішення: Оберіть охоплення тестування: забезпечте принаймні один пристрій Intel Arc в CI/лабораторії продуктивності; не покладайтеся лише на результати DP4a, якщо ваша аудиторія включає Arc.

Завдання 2: Перевірте версії стека Mesa/драйвера (поширено для Intel на Linux)

cr0x@server:~$ glxinfo -B | sed -n '1,25p'
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Intel(R) Arc(tm) A770 Graphics (DG2) (0x56a0)
    Version: 24.0.5
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Arc(tm) A770 Graphics (DG2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 24.0.5

Що це означає: У вас є базова інформація про поведінку драйвера. Артефакти рендерингу та регресії продуктивності часто корелюють з версією драйвера.

Рішення: Закріпіть версії драйверів у вашій лабораторії продуктивності; змінюйте тільки одну змінну одночасно під час розслідування змін якості/продуктивності XeSS.

Завдання 3: Підтвердіть деталі пристрою Vulkan і драйвера (більшість титулів XeSS використовують Vulkan або D3D)

cr0x@server:~$ vulkaninfo --summary | sed -n '1,60p'
Vulkan Instance Version: 1.3.275

Devices:
========
GPU0:
    apiVersion         = 1.3.275
    driverVersion      = 24.0.5
    vendorID           = 0x8086
    deviceID           = 0x56a0
    deviceName         = Intel(R) Arc(tm) A770 Graphics (DG2)

Що це означає: Підтверджує стек Vulkan і вибір пристрою. Неправильний вибір пристрою може зробити бенчмарки XeSS марними (наприклад, випадковий запуск на iGPU).

Рішення: Переконайтеся, що ваша гра обирає потрібний GPU; у мульти-GPU системах забезпечте явний вибір пристрою в тестовому хабі.

Завдання 4: Спостерігайте за завантаженням GPU і частотою в реальному часі

cr0x@server:~$ sudo intel_gpu_top -l
freq    rc6     irqs     busy   sema   wait
 2200MHz  3.21%   1250    96.3%  0.0%   1.2%

Що це означає: Високий показник «busy» вказує на насичення GPU. Низька частота або високий RC6 можуть вказувати на поведінку менеджменту живлення, що впливає на кадрування.

Рішення: Якщо GPU повністю завантажений, XeSS може допомогти, зменшивши внутрішню роздільність; якщо GPU не завантажений, але кадри повільні — шукайте CPU‑вузьке місце або синхронізаційні затримки.

Завдання 5: Перевірте температури та сигнали тротлінгу

cr0x@server:~$ sensors | sed -n '1,80p'
edge:         +78.0°C
junction:     +92.0°C
mem:          +84.0°C

Що це означає: Високі температури junction можуть спричиняти зниження частот. Апскейлінг не виправляє тротлінг; він іноді приховує його до появи важкої сцени.

Рішення: Якщо температури близькі до порогів тротлінгу, нормалізуйте умови тесту (відкритий стенд, фіксована крива вентиляторів, сталий фон) перед проведенням висновків щодо продуктивності XeSS.

Завдання 6: Перевірте режим керування частотою CPU (збої в кадруванні також люблять CPU)

cr0x@server:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

Що це означає: Режим «powersave» може вводити затримки і нестабільні часи кадру в CPU‑завантажених сценах.

Рішення: Переключіться на governor performance для контрольованих бенчмарків; якщо це вирішує сплески, ви знайшли артефакт тестового середовища, а не проблему XeSS.

Завдання 7: Переключіть governor для відтворюваних тестів продуктивності

cr0x@server:~$ sudo cpupower frequency-set -g performance
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3

Що це означає: CPU триматиметься на вищих частотах, зменшуючи сплески, спричинені плануванням.

Рішення: Використовуйте це для базових тестів у лабораторії. Для реалістичної поведінки користувачів також тестуйте «balanced» профілі живлення і ноутбуки — саме там апскейлінг часто має найбільше значення.

Завдання 8: Виявлення тиску пам’яті (переповнення VRAM спричиняє підвисання і fallback текстур)

cr0x@server:~$ cat /proc/meminfo | egrep 'MemAvailable|SwapFree'
MemAvailable:   11873432 kB
SwapFree:        8388604 kB

Що це означає: Тиск системної пам’яті може змусити сторінкування і створити «рандомні» підвисання, за які гравці звинуватять графічні налаштування.

Рішення: Якщо MemAvailable низький під час підвисань, виправляйте витоки пам’яті або бюджети стримінгу активів перед тим, як міняти режими XeSS.

Завдання 9: Захоплюйте трейс часу кадру за допомогою MangoHud (швидко і грубо, але корисно)

cr0x@server:~$ mangohud --dlsym ./MyGame.x86_64
MangoHud: Uploading is disabled (HUD only)

Що це означає: Ви отримаєте метрики на екрані: FPS, час кадру, завантаження GPU/CPU. Неідеально, але одразу покаже, чи змінив XeSS середній FPS, але погіршив варіанс часу кадру.

Рішення: Якщо середній покращився, але 1% lows впали — досліджуйте синхронізацію, стримінг або часті перерозподіли буферів історії.

Завдання 10: Перевірте, чи процес CPU‑зв’язаний під навантаженням

cr0x@server:~$ pidof MyGame.x86_64
24193
cr0x@server:~$ top -H -p 24193 -b -n 1 | sed -n '1,25p'
top - 18:52:10 up  2:13,  1 user,  load average: 7.92, 6.30, 4.50
Threads:  87 total,   4 running,  83 sleeping,   0 stopped,   0 zombie
%Cpu(s): 24.0 us,  3.0 sy,  0.0 ni, 72.5 id,  0.3 wa,  0.0 hi,  0.2 si,  0.0 st
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
24193 cr0x      20   0 13.2g 4.1g  312m S  180.0  6.6   4:12.91 MyGame.x86_64

Що це означає: Якщо одна або дві нитки завантажені по максимуму, а GPU не зайнятий — ви CPU‑обмежені. XeSS не вирішить проблему головної нитки.

Рішення: Пріоритезуйте оптимізації на стороні CPU (кадрування, сабмісія, симуляція), перш ніж витрачати час на тонке налаштування режимів XeSS.

Завдання 11: Помітити підвисання від I/O (стримінг активів і кеш шейдерів)

cr0x@server:~$ iostat -xz 1 3
Linux 6.8.0 (server) 	01/13/2026 	_x86_64_	(16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.55    0.00    2.40    8.10    0.00   72.95

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   w_await aqu-sz  %util
nvme0n1         82.00  12480.0     0.00   0.00   12.40   152.2    41.00   6144.0    9.10   1.42  78.00

Що це означає: Високий %iowait і висока зайнятість диску %util з підвищеним r_await можуть корелювати з підвисаннями. Апскейлери отримують провину, бо підвисання видно під час руху камери.

Рішення: Виправте прогрів кеша шейдерів, зменшіть синхронні завантаження активів і забезпечте асинхронний стримінг, перш ніж приписувати підвисання XeSS.

Завдання 12: Перевірте поведінку кеша шейдерів і компіляції пайплайнів (класична проблема «перший запуск жахливий»)

cr0x@server:~$ ls -lah ~/.cache | sed -n '1,20p'
total 72K
drwx------ 18 cr0x cr0x 4.0K Jan 13 18:10 .
drwx------ 57 cr0x cr0x 4.0K Jan 13 17:02 ..
drwx------  6 cr0x cr0x 4.0K Jan 13 18:08 mesa_shader_cache

Що це означає: Кеші шейдерів існують і записуються. Якщо директорія кешу відсутня або недоступна для запису, ви можете постійно перекомпілюватися.

Рішення: Переконайтеся, що шлях кешу стабільний і доступний для запису в робочому середовищі розгортання (включно з обмеженими лаунчерами). Інакше очікуйте підвисань, які жоден апскейлер не приховає.

Завдання 13: Перевірте dmesg на предмет зависань або скидань GPU (рідко, але катастрофічно для сприйняття якості)

cr0x@server:~$ sudo dmesg -T | grep -Ei 'i915|xe|gpu hang|reset' | tail -n 8
[Mon Jan 13 18:44:21 2026] xe 0000:01:00.0: GuC: submission enabled
[Mon Jan 13 18:44:59 2026] xe 0000:01:00.0: [drm] GPU HANG: ecode 12:1:0x86dffffb, in MyGame.x86_64 [24193]
[Mon Jan 13 18:45:03 2026] xe 0000:01:00.0: [drm] Resetting GPU

Що це означає: Зависання/скидання проявиться як величезне підвисання або аварія. Гравці скажуть «XeSS зламав мою гру», бо це останній перемикач, який вони міняли.

Рішення: Відтворіть проблему без XeSS, потім з ним. Якщо є кореляція, зберіть мінімальний repro, версії драйверів і тригери контенту; трактуйте як блокер.

Завдання 14: Швидко виміряйте варіацію по кадрам (базова статистика по логам)

cr0x@server:~$ awk '{sum+=$1; sumsq+=$1*$1; n++} END {mean=sum/n; var=(sumsq/n)-(mean*mean); printf("n=%d mean=%.3fms std=%.3fms\n", n, mean, sqrt(var))}' frametimes_ms.log
n=12000 mean=15.820ms std=3.940ms

Що це означає: Середній час кадру прийнятний, але stddev високий: ймовірно, підвисання. XeSS «працює», але ваше кадрування погане.

Рішення: Дослідіть сплески: стримінг, компіляція, синхронізація або перевантаження VRAM. Не «виправляйте» більш агресивним режимом XeSS, якщо ви не довели, що вузьке місце — растерний час GPU.

Плейбук швидкої діагностики: що перевіряти першим/другим/третім

Якщо ви на виклику через збірку, у вас немає часу на філософію. Потрібен порядок тріажу, що сходиться.

Перше: класифікуйте проблему (якість проти продуктивності проти стабільності)

  • Проблема якості: привиди, мерехтіння, флікери, ореоли, розмитий HUD.
  • Регресія продуктивності: нижчий FPS, збільшення часу GPU, гірші 1% lows.
  • Стабільність: втрата пристрою, зависання GPU, скидання драйвера, періодична корупція.

Не змішуйте категорії. Флікер — це не «проблема продуктивності», навіть якщо з’явився після зміни налаштувань продуктивності.

Друге: вирішіть, чи ви GPU‑обмежені, чи CPU/IO‑обмежені

  • GPU busy ~90–100% і час кадру високий → ймовірно GPU‑bound. Зміни режиму XeSS мають впливати.
  • GPU busy низький/середній, але час кадру високий → CPU‑bound або блокує синхронізація/IO.
  • Сплески з iowait або компіляцією шейдерів → проблема підвисань; XeSS — побічна жертва.

Третє: ізолюйте шлях XeSS і його вхідні дані

  1. Підтвердіть, що XeSS справді увімкнено (не довіряйте лише UI‑перемикачу; перевіряйте логи/телеметрію).
  2. Визначте апаратний шлях: XMX чи DP4a за GPU і вибором рантайму.
  3. Перемикайте режими (Quality/Balanced/Performance) і спостерігайте як час кадру, так і частоту артефактів.
  4. Тимчасово вимкніть шарпінг, щоб перевірити, чи ви підсилюєте базову тимчасову нестабільність.
  5. Перевірте вектори руху дебаг‑відомістю у проблемній сцені.
  6. Тестуйте різкі зміни камери: переконайтеся, що історія скидається коректно при обрізах/телепортаціях.

Четверте: зафіксуйте середовище, перш ніж звинувачувати алгоритм

  • Закріпіть версію драйвера
  • Вимкніть фонові завантаження і накладки
  • Нормалізуйте термальний режим (вентилятори, оточення)
  • Переконайтеся, що стан кешу шейдерів порівнюваний

Нічого не витрачає часу інженерів так, як порівняння холодного і теплого кеш‑прогону і оголошення «регресія XeSS».

Поширені помилки: симптоми → корінна причина → виправлення

1) Сліди-привиди позаду персонажів під час бокових рухів

Симптоми: краї персонажів розмазуються, особливо на контрастному фоні. Гірше в режимі Performance.

Корінна причина: Неправильні або відсутні вектори руху для скінінгованих мешів або деяких LOD; невідповідність конвенцій векторів.

Виправлення: Валідуйте вектори в движку; забезпечте запис швидкості для всіх LOD; уніфікуйте простір координат і масштаби; скидати історію при телепортації.

2) UI стає розмитим або «хитається» при увімкненому XeSS

Симптоми: текст HUD виглядає реконструйованим; краї «повзають» під час руху камери.

Корінна причина: UI рендериться у вхідну низьку роздільність, що обробляється тимчасово.

Виправлення: Рендерте UI у вихідній роздільності після апскейлу (або використайте правильний шлях композиції). Тримайте UI поза тимчасовим конвеєром.

3) Мерехтливі тонкі лінії (паркани, дроти), що гіршають зі шарпінгом

Симптоми: віддалена геометрія іскриться або повзає. Гравці кажуть «шумно».

Корінна причина: Тимчасова нестабільність через недосемплювання + агресивний шарпінг; шумна історія; погана обробка дисоклозування.

Виправлення: Зменште шарпінг у режимах нижчої якості; покращіть стабільність патерну джиттера; забезпечте реактивні маски для проблемних матеріалів; розгляньте обмеження внеску історії.

4) Сплески часу кадру кожні кілька секунд

Симптоми: середній FPS нормальний, але мікропідвисання псують відчуття.

Корінна причина: Компіляція шейдерів, I/O‑стримінг або тимчасові алокації ресурсів, що трясуть буфери історії.

Виправлення: Попередньо компілюйте пайплайни, прогрівайте кеші, зробіть стримінг повністю асинхронним і повторно використовуйте алокації для цілей історії при зміні роздільності/режиму.

5) «XeSS робить повільніше, ніж натив» у певній сцені

Симптоми: Увімкнення XeSS знижує FPS або збільшує час GPU.

Корінна причина: Ви були CPU‑обмежені; або вартість реконструкції перевищує виграш від растера; або постпроцесинговий стек не зменшує навантаження з внутрішньою роздільністю.

Виправлення: Перевірте насичення GPU; виміряйте економію рендеру без апскейлера і потім витрати апскейлера; переносіть важкі постпроцеси на внутрішню роздільність де доречно.

6) Пампінг яскравості або флікери експозиції

Симптоми: Під час переходів яскравість коливається; виглядає як нестабільний тонемапінг.

Корінна причина: Подання непослідовного кольорового простору/метаданих експозиції кадр за кадром; автоекспозиція занадто агресивна для тимчасового накопичення.

Виправлення: Стабілізуйте експозицію; забезпечте послідовний вхідний простір; скидати або загасити внесок історії при великих змінах експозиції.

7) Артефакти вибухають навколо води, туману, частинок

Симптоми: Сліди, ореоли і «кипіння» в прозорих ефектах.

Корінна причина: Відсутня реактивна маска / обробка прозорості; погана інформація про глибину/рух для alpha‑blend контенту.

Виправлення: Реалізуйте маски, щоб зменшити залежність від історії; роздільні проходи або композиція після апскейлу, коли можливо; покращіть обробку векторів для частинок.

8) Дивна поведінка лише на GPU одного вендора

Симптоми: На Arc виглядає нормально, на іншому GPU — погано (або навпаки).

Корінна причина: Різний шлях XeSS (XMX vs DP4a), відмінності драйверів, відмінності точності і планування.

Виправлення: Розширте матрицю тестування; логувати, який шлях активний; створіть вендорні базові лінії; уникайте культури «один GPU — істина».

Контрольні списки / покроковий план

Контрольний список A: Відвантажити XeSS без сорому

  1. Визначте цільові бюджети часу кадру (60/120 FPS tiers) і дотримуйте їх у перехресних перевірках продуктивності.
  2. Інструментуйте режим і шлях: логувати стан XeSS, режим, вхідну/вихідну роздільності і вибір XMX/DP4a.
  3. Валідація векторів руху: побудуйте дебаг‑вид і потребуйте його в код‑рев’ю для нових рендерних фіч.
  4. Управління історією: скидати на обрізах камери, телепортаціях, великих змінах FOV і значних зміні експозиції.
  5. Композиція UI: забезпечте рендер UI після апскейлу у вихідній роздільності.
  6. План для прозорості: реактивні маски або окрема композиція для води/туману/частинок.
  7. Політика шарпінгу: обмежити шарпінг за режимами; забезпечити можливість вимкнення шарпінгу для діагностики.
  8. Тестування термальності і живлення: принаймні один ноутбук у тестовій матриці.
  9. Матриця драйверів: закріпіть «відомо добрий» драйвер і тестуйте один новіший драйвер за цикл.
  10. Регресійний хаб: фіксовані шляхи камери з захопленням кадрів і трейсів часу кадру.

Контрольний список B: Коли скарги на якість XeSS з’являються в польових умовах

  1. Зберіть: модель GPU, версію драйвера, режим XeSS, роздільність і чи з’являється проблема на натіві.
  2. Попросіть: короткий кліп, що показує артефакт, і точне місце або місію.
  3. Відтворіть: на Intel Arc і на не‑Intel пристрої, якщо застосовно.
  4. Перемикайте: тимчасово вимкніть шарпінг, потім порівняйте. Якщо артефакт зникає — ви підсилюєте нестабільність.
  5. Перевірте: вектори руху і глибину навколо області артефакту.
  6. Прийміть рішення: фікс по контенту (вектори/маски) vs пом’якшення налаштувань (за замовчуванням/обмеження шарпінгу) vs ескалація драйверу.

Контрольний список C: Коли продуктивність погіршилась після увімкнення XeSS

  1. Перевірте: чи ви GPU‑bound? Перевірте GPU busy і насичення ниток CPU.
  2. Виміряйте: растерну економію без апскейлера; потім додайте вартість апскейлера.
  3. Перевірте: використання VRAM і підвисання стримінгу; XeSS не вирішує нестачу пам’яті.
  4. Аудит: постефекти — чи вони все ще працюють у вихідній роздільності?
  5. Стабілізуйте: кеші (шейдер/пайплайн) і середовище (термали/governor) перед порівняннями цифр.

Питання та відповіді (FAQ)

Чи Intel XeSS «просто як DLSS»?

Те ж проблемне поле, інша стратегія екосистеми. DLSS тісно прив’язаний до апаратури і тулкитів NVIDIA. XeSS прагне бути ширшим: найкращі результати на Intel XMX, але є запасний шлях для інших GPU.

Чи XeSS кращий за FSR?

Залежить від гри, якості інтеграції і режиму. Найбільшим диференціатором на практиці часто є правильність інтеграції (вектори, маски, скидання історії), а не бренд.

Чи XeSS працює на не‑Intel GPU?

Може, через шлях DP4a, на апаратурі, що його підтримує. Очікуйте відмінності в продуктивності і профілях артефактів. Тестуйте; не припускайте паритет.

Чому я бачу привиди з XeSS?

Майже завжди це вектори руху або неправильне використання історії: відсутні швидкості, невірні конвенції або відсутність скидання при дисконтиниюїтах. Зменшення шарпінгу може знизити видимість, але не виправить корінь проблеми.

Чому XeSS іноді зменшує FPS?

Якщо ви CPU‑bound, зменшення роздільності рендеру не допоможе. Або вартість апскейлера може перевищувати економію на растері, якщо сцена вже легка на шейдинг, але важка на реконструкцію.

Яке перше налаштування змінити, коли гравці скаржаться на «мерехтіння»?

Зменшіть шарпінг і перейдіть на один крок до вищого якісного режиму (вища вхідна роздільність). Якщо мерехтіння лишається, перевірте тонку геометрію і поведінку при дисоклозуванні.

Чи потрібен джиттер для XeSS?

Для високоякісної тимчасової реконструкції — так. Без джиттера зазвичай менше відновлюваної деталі і більше залежності від евристик. Але джиттер треба правильно обробляти, щоб UI та ефекти в простору екрану були стабільні.

Як тримати UI чітким при увімкненому XeSS?

Рендерте UI після апскейлу у вихідній роздільності або виключайте його з тимчасового накопичення. UI і тимчасові конвеєри непримиренні, якщо ви не змусите їх поводитись коректно.

Яка найпоширеніша інтеграційна пастка?

Припущення, що вектори руху, які були «достатні» для TAA або motion blur, достатні й для реконструкції. Апскейлери менш поблажливі, бо помилки кумулюються з кадру в кадр.

Чи варто за замовчуванням ставити XeSS у Quality або Balanced?

Обирайте за контентом і цільовою апаратурною категорією. Якщо вам важливі відгуки й рецензії, надавайте перевагу режиму з найменш помітними артефактами для поширених сцен, навіть якщо він трохи повільніший. Гравці більше прощають нижчий FPS, ніж «дивне зображення».

Наступні кроки, які можна виконати цього тижня

  • Додайте логування зараз: записуйте стан XeSS, режим, внутрішню/вихідну роздільності та який шлях (XMX/DP4a) активний.
  • Побудуйте дебаг‑вид векторів руху і зробіть його частиною приймання для нових рендерних фіч і змін LOD.
  • Створіть набір регресій з 10 сцен (тонка геометрія, частинки, вода, швидкі панорамні рухи, обрізи камери) і захоплюйте час кадру + зображення щонічно.
  • Відокреміть питання продуктивності: вимірюйте «збереження на растері» vs «вартість апскейлера», щоб не ганятися за неправильним вузьким місцем.
  • Обмежте шарпінг і зробіть його налаштовуваним за режимом; відвантажуйте консервативні значення за замовчуванням.
  • Закріпіть базу драйверів у вашій лабораторії і ставтеся до зміни драйвера як до оновлення залежностей: тестоване, поетапне, відкатне.

Intel приєднався до боротьби через програмне забезпечення, бо програмне рішення масштабується по апаратурі, екосистемам і пріоритетам студій. XeSS — реальний інструмент — використовуйте його як такий. Валідуйте вхідні дані, вимірюйте виходи і не дозволяйте прапорцю приймати архітектурні рішення за вас.

← Попередня
Тестування втрати живлення ZFS: як перевірити безпеку без втрати даних
Наступна →
Debian 13: NTP працює, але дрейф залишається — налаштування апаратного годинника та chrony (Випадок №19)

Залишити коментар