Устранение артефактов рендеринга в Chromium и Electron на ноутбуках с гибридной графикой

Прокомментировать Просмотры: 11

Если ваш лэптоп оборудован интегрированной графикой Intel и дискретным видеоадаптером, а в мессенджерах, IDE и интернет-обозревателях по периметру интерфейса возникают странные полосы и графический «мусор», пропадающий при наведении курсора, — этот материал поможет решить вашу проблему.

Сразу к сути: корень зла кроется не в графической плате, дисплее или устаревшем софте. Неполадка устраняется прописыванием единственного ключа реестра, к которому я пришел после суток проб и безуспешных поисков по форумам.

Как это выглядит|

Симптоматика предельно специфичная. Если наблюдаете нечто подобное, диагноз практически наверняка верный:

  • Полосы и пиксельные искажения исходят строго от элементов интерфейса, а не возникают хаотично.

  • Дефекты проявляются моментально при открытии программы, не дожидаясь пиковых нагрузок.

  • Пропадают стоит лишь провести указателем мыши по поврежденной зоне.

  • Затронуты все продукты на базе Chromium: Electron-оболочки, веб-браузеры, специализированные десктоп-клиенты.

  • Стандартные окна операционной системы вроде Проводника, блокнота или панели управления остаются абсолютно чистыми.

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

Чему здесь не место

Прежде чем отыскать верный путь, я потратил массу времени на опровержение ошибочных гипотез. Надеюсь, это убережет вас от лишних хлопот.

Не матрица и не шлейф матрицы. Подключение внешнего монитора через HDMI показало абсолютно идентичную картину. Аппаратный износ экрана исключен.

Не сторонний софт и фоновые утилиты. Запуск в безопасном режиме, отсекающем RGB-софт, оверлеи вроде RTSS и фоновые процессы, никак не повлиял на артефакты.

Не видеодрайвер. В безопасной среде Windows задействует базовый системный драйвер Microsoft вместо связки Intel/NVIDIA, но баг никуда не делся.

Не сбои ОЗУ. Искажения жестко привязаны к конкретному семейству софта. Неисправная планка памяти дестабилизировала бы всю систему целиком.

К этому моменту круг возможных виновников сузился до одной зоны: конфликт на стыке Windows и Chromium.

Причина

В инциденте замешаны три абсолютно исправных компонента.

DirectComposition — системная служба Windows, отвечающая за компоновку окон в единое изображение. Multi-Plane Overlay (MPO) — технология аппаратного ускорения этого процесса: вместо ресурсоемкого микшерования силами центрального процессора ОС передает слои графическому чипу как отдельные плоскости. Chromium задействует DirectComposition для отрисовки собственных интерфейсов.

В конфигурациях с гибридной графикой подключается четвертый элемент — технология Optimus. Кадр просчитывается на дискретном чипе, но выводится на физическую матрицу через встроенный. При переброске данных между адаптерами композитор периодически забывает обновить кадр — старые фрагменты пикселей зависают на дисплее. Движение мыши провоцирует принудительную перерисовку конкретной зоны, из-за чего мусор мгновенно стирается.

Об этой проблеме известно еще с 2020 года. Она то затухает, то всплывает вновь с новыми апдейтами Windows и свежими релизами Chromium. Живучесть бага обусловлена размытой ответственностью: Microsoft, производители GPU и разработчики Google перекладывают исправления друг на друга.

Что не помогает

Ниже приведен перечень «народных» рецептов из поисковой выдачи. Проверено на практике — толку ноль.

Совет

Результат

OverlayTestMode = 5 в реестре (деактивация MPO)

Бесполезно

Отключение Hardware-accelerated GPU Scheduling

Бесполезно

Отключение Variable Refresh Rate и Auto HDR

Бесполезно

Откат видеодрайвера к предыдущим ревизиям

Бесполезно

Инсталляция самой свежей версии драйвера

Бесполезно

Установка всех накопительных патчей Windows

Бесполезно

Приоритет дискретной видеокарты в панели управления

Бесполезно

Сторонний софт для пакетного отключения MPO

Бесполезно

Отдельного упоминания заслуживает идея полного отключения iGPU через BIOS или диспетчер устройств. На большинстве ноутбуков без MUX-переключателя (что типично для бюджетного и среднего сегмента) встроенный дисплей распаян напрямую на интегрированную графику. Отключив ее, вы получите черный экран, реанимировать который придется через безопасный режим. Не рискуйте без абсолютной уверенности в наличии MUX.

Решение

Вариант 1: глобальная политика Chromium

Движок Chromium считывает параметры из системного реестра при каждом старте — это штатный инструмент групповых политик для корпоративного сегмента. Для нас это идеальный выход: одна команда охватывает все Chromium-приложения разом, не привязана к путям установки и сохраняется после обновлений.

Выполните в PowerShell от администратора:

reg add "HKLM\SOFTWARE\Policies\Google\Chrome" /v "HardwareAccelerationModeEnabled" /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HardwareAccelerationModeEnabled" /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Policies\Chromium" /v "HardwareAccelerationModeEnabled" /t REG_DWORD /d 0 /f

Перезапустите софт — визуальные артефакты исчезнут.

Процедура отката в случае необходимости:

reg delete "HKLM\SOFTWARE\Policies\Google\Chrome" /v "HardwareAccelerationModeEnabled" /f
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HardwareAccelerationModeEnabled" /f
reg delete "HKLM\SOFTWARE\Policies\Chromium" /v "HardwareAccelerationModeEnabled" /f

Важный нюанс. Данный подход полностью отключает аппаратное ускорение: WebGL и Canvas переводятся на программный расчет посредством SwiftShader. Для текстовых задач, серфинга и кодинга разница не ощутима. Однако для ресурсоемких сценариев вроде браузерного 3D, сложных графиков или аппаратного декодирования видео лучше применить следующий способ.

Вариант 2: адресный флаг запуска

Аргумент --disable-direct-composition деактивирует исключительно проблемный компоновщик графики, сохраняя работоспособность WebGL, Canvas и видеодекодеров. Это точечный метод там, где первый выступает грубой силой.

Для классического софта: кликните правой кнопкой мыши по ярлыку, выберите Свойства и добавьте в поле Объект через пробел:

"C:\Path\To\App.exe" --disable-direct-composition

С программами из Microsoft Store все сложнее: MSIX-пакеты не имеют привычного пути к exe-файлу, а ярлыки из меню Пуск игнорируют любые аргументы. Запуск организуется через директорию shell:AppsFolder:

powershell -WindowStyle Hidden -command "Start-Process (\"shell:AppsFolder\$((Get-AppxPackage *ИМЯ*).PackageFamilyName)!ИДЕНТИФИКАТОР\") --disable-direct-composition"

Подобный ярлык автономен от версий программы, поэтому переживает любые апдейты, в отличие от прямых ссылок на подпапки в WindowsApps, которые стабильно ломаются при обновлениях.

Вариант 3: автоматизация через IFEO

Если подобных программ много, а глобальный метод не подходит, нужный ключ можно внедрять автоматически через Image File Execution Options — системный механизм Windows, перехватывающий запуск процесса по его имени независимо от метода вызова (будь то меню Пуск, скрипт или сторонний лаунчер).

Суть алгоритма: оригинальный App.exe переименовывается в App.real.exe, а в ветке IFEO прописывается правило перехвата для старта App.real.exe с целевым параметром. Обнаружить все Chromium-приложения в системе помогает характерный маркер — присутствие файлов вроде chrome_100_percent.pak вкупе с каталогом locales, свойственное любому подобному движку.

Готовый скрипт, включающий сканер и функцию восстановления, опубликован на GitHub.

У метода есть обратная сторона: масштабное обновление программы способно вернуть оригинальное имя исполняемого файла и сбросить перехват. В таком случае процедуру автоматизации придется повторить.

Итоги

Первый вариант решает задачу за полминуты и актуален для большинства пользователей. Второй — оптимален при необходимости сохранить полноценное GPU-ускорение. Третий — незаменим при массовом использовании софта, когда требуется полная автономность.

Забавно осознавать: на дворе 2026 год, багу уже шесть лет, а официального исправления на уровне ОС так и не появилось. Всё держится исключительно на пользовательских костылях. Пока три гиганта индустрии перекладывают ответственность друг на друга, разгребать последствия приходится нам.

Если вы столкнулись с аналогичным аппаратным конфигом и какой-то из методов помог (или оказался бесполезен) — поделитесь опытом в комментариях для сбора статистики.

 

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов