Как убрать инпут лаг windows 10

Input lag во время рендеринга и как его побеждать

Привет всем. Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.

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

Итак, Input lag в любой игре складывается из:

  1. Задержки на контроллере
  2. Сетевого лага (если это онлайн игра)
  3. Лага рендеринга.

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

CPU + GPU

Современные GPU — устройства максимально асинхронные. CPU отдает команды видеодрайверу, и идет заниматься своими делами. Драйвер накапливает команды в пачки, и пачками отправляет на видеокарту. Видеокарта рисует, а CPU в это время занимается своими делами. Максимальный FPS, который вы можете получить в этой системе ограничен одним из условий:

1. CPU не успевает отдавать команды видеокарте, потому что видеокарта очень быстро рисует. И нафига вы покупали такую мощную видеокарту?

2. Видеокарта не успевает рисовать то, что дает ей CPU. Теперь CPU халявит…

Для того, чтобы посмотреть, как красиво в паре работает CPU и GPU — есть различные профайлеры. Мы воспользуемся GPUView, который идет в составе Windows Performance Toolkit.

Лог от GPUView может выглядеть как-то так:

Вертикальные синие линии — это VSync. Наваленные горы кубиков — это горы пакетов, которые отправятся на видеокарту, когда та освободится. Штрихованный кубик — это пакет, содержащий переключение буферов. Иными словами — конец кадра. Любой кубик можно выбрать, и видеть, как он постепенно опускается в стопке, и отправляется на видеокарту. Видите на скриншоте кубик с желтой обводкой? Он обрабатывался аж на протяжении 3-х vsync-ов. А целый кадр занимает около 4-х VSync-ов (судя по расстоянию между разными штрихованными кубиками). Между двумя горами пакетов от разных кадров есть маленький зазор. Это то время, пока GPU отдыхал. Этот зазор маленький, и оптимизация на стороне CPU не даст большого выйгрыша.

Но бывают зазоры большие:

Это пример рендера из World of Warcraft. Расстояния между пакетами в очереди просто огромные. Более мощная видеокарта не даст прироста ни одного FPS. Зато если оптимизировать рендер на стороне CPU, то можно получить более чем двукратный прирост FPS на данном GPU.

Чуть более подробно можно почитать тут, а мы пойдем дальше.

Читайте также:  Раздача ключей windows 10 лицензия

Так где же лаг?

Так уж сложилось, что разрыв в производительности между Hi-End и Low-End видеокартами поистине огромен. Поэтому у вас обязательно будут возникать обе ситуации. Но самая грустная ситуация — это когда GPU не справляется. Выглядеть это начинает вот так:

Обратите внимание, сколько времени заняла обработка одного пакета. Кадр занимает 4 VSync-а, а обработка пакета занимает в 4 раза дольше! DirectX (OpenGL ведет себя так же) накапливает данных аж на 3 кадра. Но ведь когда мы кладем в очередь свежий кадр — все предыдущие кадры для нас уже не актуальны, а видеокарта по прежнему будет тратить время на отрисовку. Поэтому наше действие появится на экране спустя аж 3 кадра. Давайте посмотрим, что мы можем сделать.

1. Честное решение. IDXGIDevice1::SetMaximumFrameLatency(1)

Я честно, не представляю зачем копить данных на 3 кадра в буфере. Но MS видимо поняла ошибку, и начиная с DX10.1 у нас появилась возможность задать это количество кадров через специальный метод IDXGIDevice1::SetMaximumFrameLatency. Давайте посмотрим, как нам это поможет:

Ну что же. Стало значительно лучше. Но по прежнему не идеально, т.к. все равно ждем 2 кадра. Еще один недостаток решения — то что оно работает только для DirectX.

2. Трюк с ID3D11Query

Идея заключается в том, что в конце кадра мы устанавливаем D3D11_QUERY_EVENT. В начале следующего кадра — ждем, постоянно проверяя событие, и если оно прошло, то только тогда начинаем отдавать команды на отрисовку, и с наисвежайшими Input данными.

Картина практически идеальная, не находите? Ожидание я реализовал вот так:

Установка эвента тривиальна:

Ну и в сам рендер добавляем вначале ожидание. Затем перед самой отрисовкой собираем свежие Input данные, а перед самым Present-ом устанавливаем евент:

Недостаток костыля метода — работает только с DirectX. Но можно дождаться синхронизации другим оригинальным способом.

3. Воркэраунд через текстуру

Вот что мы делаем. У нас есть механизмы прочитать данные из видеоресурсов. Если мы заставим видеокарту что-то нарисовать, а потом попытаемся забрать, то произойдет автоматическая синхронизация между GPU-CPU. Мы не сможем забрать данные раньше, чем они будут нарисованы. Поэтому вместо установки евента я предлагаю генерить мипы на видеокарте для текстуры 2*2, а вместо ожидания евента — забирать данные из этой текстуры в системную память. В результате подход выглядит так:

Вот так мы ожидаем евент:

а вот так его устанавливаем:

В остальном подход полностью аналогичен предыдущему. Преимущество: работает не только на DirectX но и на OpenGL. Недостаток — маааленький оверхед на генерацию текстуры и передачу данных назад + потенциально потраченное время на «пробуждение» потока шедулером операционной системы.

Про попробовать

Конечно я тут растекался по дереву… но насколько проблема серьезная? Как пощупать это? Я написал специальную демонстрационную программу (требует DirectX11).

Скачать *.exe можно здесь. Для тех, кто боится качать билды неизвестного производителя — исходный код lazarus проекта здесь (также потребуется моя библиотека фреймворк AvalancheProject, которая находится вот тут)

Программа представляет собой такое окно:

Тут рисуется 40*40*40=64000 (кстати каждый кубик — отдельный дравколл). GPU workload трекбар дает нагрузку на GPU (с помощью бесполезного цикла в вершинном шейдере). Просто опускаете с помощью этого трекбара фпс до низкого уровня, скажем 10-20, а потом пробуете правой кнопкой мыши крутить кубики, и переключать методы уменьшения Input лага с помощью радиобаттонов.

Вы только оцените какая огромная разница в скорости отклика. C Query Event комфортно крутить кубик даже при 20 фпс.

Читайте также:  Простой ftp server windows 10

Как убрать инпут лаг windows 10

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

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

Просто некоторые уточнения здесь. Это только для задержки ввода от самой Overwatch. Ваше оборудование (например, монитор / дисплей) может легко добавить значительную задержку ввода. Например, если вы играете на телевизоре, то неслыханно иметь 50 мсек или более с задержкой ввода, и это даже с включенным «игровым режимом» на вашем телевизоре.

Для получения дополнительной информации о задержке ввода вы можете проверить такие сайты, как:

Я думаю, что для подавляющего большинства игроков, включая OW-игроков, разница в 16 мс (1 кадр) будет незаметной. Я думаю, что единственные люди, которые могут постоянно ощущать присутствие 1-й задержки, — это сражающиеся игроки или игроки ритмичной игры.

Возвращаясь к задержке ввода от самой Overwatch, краткая сводка сокращения задержки ввода игры:

  1. Получите монитор с высокой частотой обновления (144+ Гц)
  2. Постоянно держите частоту кадров значительно выше 144 FPS, обычно за счет снижения графических настроек или покупки современного оборудования или обоих.
  3. Немного оптимизируйте настройки (например, включите уменьшенную буферизацию, отключите тройную буферизацию).

У меня 125 кадров в секунду на 144 Гц. Должен ли я установить его на 120?

Не тратьте впустую возможности вашего монитора. Просто уменьшите ваши настройки, чтобы вы постоянно получали более 144 FPS. Если это невозможно (т. Е. Ваши настройки уже на самом низком уровне), купите новое оборудование, cpu / gpu / memory.

How to Fix Windows 10 Keyboard Input Lag? Easily Fix It! [MiniTool News]

By Vera | Follow | Last Updated December 31, 2020

Summary :

When using the keyboard to type, you may need to wait long for the keyboard to slowly spit words out. How can you fix keyboard input lag in Windows 10? To get rid of the slow keyboard response, you can read this post written by MiniTool to get some simple methods and have a try.

Keyboard Delay Windows 10

When you use a PC, you may have encountered some problems. Among them, the lag issue is very common, which may happen on the computer itself, mouse and keyboard. In our previous posts, we have mentioned the first two cases – computer lag & mouse lag and today we will discuss keyboard delay.

Usually, when typing in Windows 10, you find the keyboard responses very slowly. Sometimes intermittent keyboard lag happens.

This is quite annoying and sometimes it may impact your work. Then, you may ask the question – why is my keyboard lagging? Simply put, Windows 10 keyboard lag can be caused by a hardware failure or software change.

While encountering the issue, you can try restarting your computer. If this doesn’t work, try these solutions below to get rid of the issue of keyboard input lag.

Windows 10 Input Lag Fix

Method 1: Run Hardware and Devices Troubleshooter

Windows 10 offers you some troubleshooters to fix some problems with computer hardware, blue screen of death, Bluetooth, etc. If you are having a problem with the keyboard, you can run the Hardware and Devices Troubleshooter to solve it. This can check for common issues and ensure any hardware or device is installed correctly on your PC.

Читайте также:  Работа windows с внешнего жесткого диска usb

Receive «an error occurred while troubleshooting» message when using Windows Troubleshooters to fix some issues? Here are 8 helpful ways to fix it.

Here is how to run the troubleshooter:

  1. Click the Windows log and choose Settings.
  2. Go to Update & Security and choose Troubleshoot.
  3. Click Hardware and Devices, then choose Run the troubleshooter.

Method 2: Adjust Filter Keys Setting

In Windows 10, there is a feature called Filter Keys. If it is enabled, it may slow down the input of brief or repeated keys and also may not notice the keystrokes that happen continuously. So, turning it off may fix the issue of keyboard input lag.

  1. Head to Settings > Ease of Access.
  2. Click Keyboard and turn off the Filter Keys feature.

Method 3: Reinstall or Update the Keyboard Driver

Windows 10 keyboard lag can be caused by corrupted or old keyboard driver. So, trying to reinstall or update it can be a good solution.

  1. Right-click the Start button and choose Device Manager.
  2. Find your keyboard driver, right-click on it and choose Uninstall device to remove it or choose Update driver to update it.
  3. Then follow the on-screen instructions to finish the corresponding operation.

Method 4: Run DISM

Sometimes the corruption and misconfigurations of your computer can lead to the issue — keyboard typing delay Windows 10. If that is the case, you can try the Deployment Image Servicing and Management (DISM) tool that can help fix Windows corruption errors easily.

Are you experiencing some annoying bugs or crashes when using your computer? Right now, you can try to repair Windows 10 image with DISM to fix these issues.

Here is how to do it:

1. Run Command Prompt with admin rights.

2. Input the following commands in order and type Enter after each one:

DISM /Online /Cleanup-Image /ScanHealth

DISM /Online /Cleanup-Image /CheckHealth

DISM /Online /Cleanup-Image /RestoreHealth

Bottom Line

Now, we have introduced four common methods to you to fix Windows 10 keyboard input lag. Actually, there are some other things you can do – check for hardware issues, check on the Keyboard Properties, run System Maintenance Troubleshooter, etc. Just try these methods based on your needs and hope you can easily get rid of typing delay.

ABOUT THE AUTHOR

Position: Columnist

Vera is an editor of the MiniTool Team since 2016 who has more than 5 years’ writing experiences in the field of technical articles. Her articles mainly focus on disk & partition management, PC data recovery, video conversion, as well as PC backup & restore, helping users to solve some errors and issues when using their computers. In her spare times, she likes shopping, playing games and reading some articles.

Оцените статью