RU2815331C2 - Регулировка задержки устройств пользовательского ввода - Google Patents

Регулировка задержки устройств пользовательского ввода Download PDF

Info

Publication number
RU2815331C2
RU2815331C2 RU2021128650A RU2021128650A RU2815331C2 RU 2815331 C2 RU2815331 C2 RU 2815331C2 RU 2021128650 A RU2021128650 A RU 2021128650A RU 2021128650 A RU2021128650 A RU 2021128650A RU 2815331 C2 RU2815331 C2 RU 2815331C2
Authority
RU
Russia
Prior art keywords
user input
timing
input device
state
application
Prior art date
Application number
RU2021128650A
Other languages
English (en)
Other versions
RU2021128650A (ru
Inventor
Кристофер Майкл МАКАЛЛЕН
Мэттью БРОНДЕР
Джеймс Эндрю ГУССЕН
Кристофер Джон ТЕКТОР
Хамзе КАЛАШ
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2021128650A publication Critical patent/RU2021128650A/ru
Application granted granted Critical
Publication of RU2815331C2 publication Critical patent/RU2815331C2/ru

Links

Abstract

Изобретение относится к устройствам пользовательского ввода. Технический результат заключается в уменьшении времени задержки пользовательского ввода. Предлагается вычислительное устройство, выполненное с возможностью регулирования доставки состояния ввода при работе интерфейса пользовательского ввода, при этом вычислительное устройство включает один или более машиночитаемых носителей информации, систему обработки, и интерфейс пользовательского ввода, содержащий программные инструкции, сохраненные на одном или более машиночитаемых носителях информации, которые, на основе их считывания и исполнения системой обработки, инструктируют системе обработки, по меньшей мере, идентифицировать целевой темп для доставки состояния пользовательского ввода приложению, определять, на основе, по меньшей мере, целевого темпа, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода, и указывать эти один или более параметров синхронизации устройству пользовательского ввода, при этом устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно упомянутым одному или более параметрам синхронизации. 3 н. и 17 з.п. ф-лы, 5 ил.

Description

Уровень техники
[0001] Устройства пользовательского ввода могут применяться для взаимодействия с различными интерактивными системами, такими как игровые консоли, вычислительные окружения, компьютерные системы, устройства виртуальной/дополненной реальности и другие устройства и системы, которые могут также включать в себя авиационные, военные или промышленные системы управления. Семейство Microsoft Xbox® игровых консолей являются примерными системами, которые могут применять устройства пользовательского ввода, обычно называемые игровыми контроллерами. Игровые контроллеры выполняются с возможностью связываться с игровыми консолями через проводные или беспроводные интерфейсы. В таких игровых системах игровые контроллеры могут применять джойстики, рукоятки для большого пальца, рукоятки управления, пропорциональные триггеры, геймпады, адаптивные механизмы управления или другие механизмы ввода. Различные вычислительные системы могут также применять сенсорные экраны, клавиатуры, мыши, сенсорные панели, адаптивные контроллеры, контроллеры виртуальной/дополненной реальности или другое аналогичное оборудование.
[0002] Эти устройства пользовательского ввода предоставляют возможность для пользовательского манипулирования элементами пользовательского интерфейса на экране, которые могут быть графическими по природе. Обычным недовольством среди пользователей игровых систем, которые используют устройства пользовательского интерфейса, является воспринимаемая задержка ввода между пользовательской манипуляцией устройством ввода и изменениями в элементах пользовательского интерфейса на экране. Например, когда пользователь нажимает кнопку на игровом контроллере, пользователь ожидает увидеть элементы пользовательского интерфейса для соответствующей игровой реакции на это нажатие кнопки. Однако, вследствие задержки ввода и воспроизведения, иногда то, что отображается, выглядит менее ответным по сравнению с тем, что пользователь будет ожидать.
Сущность изобретения
[0003] Улучшенные устройства пользовательского ввода и системы взаимодействия с пользовательским вводом, которые могут уменьшать воспринимаемую задержку взаимодействия, предложены в данном документе. В одном примере способ работы интерфейса пользовательского ввода на хост-системе включает в себя идентификацию целевого темпа доставки состояния пользовательского ввода приложению и определение, на основе, по меньшей мере, целевого темпа, одного или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода. Способ также включает в себя указание одного или более параметров синхронизации устройству пользовательского ввода, при этом устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно одному или более параметрам синхронизации.
Краткое описание чертежей
[0004] Множество аспектов изобретения могут быть лучше поняты со ссылкой на последующие чертежи. В то время как несколько реализаций описываются в соединении с этими чертежами, изобретение не ограничивается реализациями, описанными в данном документе. Напротив, намерением является охватить все альтернативы, модификации и эквиваленты.
[0005] Фиг. 1 является схемой системы окружения пользовательского ввода в реализации.
[0006] Фиг. 2 иллюстрирует способ работы интерфейса пользовательского ввода в реализации.
[0007] Фиг. 3 является схемой системы устройства пользовательского ввода в реализации.
[0008] Фиг. 4 является схемой системы для хост-системы в реализации.
[0009] Фиг. 5 иллюстрирует способ работы интерфейса пользовательского ввода в реализации.
Осуществление изобретения
[0010] Устройства пользовательского ввода могут применяться в вычислительных окружениях для взаимодействия с игровыми консолями, вычислительными платформами, компьютерными системами, устройствами виртуальной/дополненной реальности и другими устройствами и системами. Например, семейство Microsoft Xbox® игровых систем может связываться с одним или более игровыми контроллерами, чтобы управлять элементами пользовательского интерфейса на экране. Когда игра или пользовательское приложение используется в игровых системах, взаимодействие пользователя с игровыми контроллерами может влиять на графические и текстовые элементы пользовательского интерфейса, воспроизводимые на ассоциированном дисплее. Эти устройства пользовательского ввода типично включают в себя как механические, так и электрические элементы, чтобы предоставлять возможность пользовательского манипулирования экранными элементами пользовательского интерфейса. Системы, которые применяют устройства пользовательского интерфейса, могут испытывать задержку ввода, которая воспринимается пользователями, между пользовательской манипуляцией устройством ввода и изменениями в элементах пользовательского интерфейса на экране. Например, когда пользователь нажимает кнопку на игровом контроллере, пользователь может испытывать легкую задержку в соответствующих изменениях воспроизводимых элементов пользовательского интерфейса. Это может быть особенно проблематичным в играх и приложениях с точными или быстрыми перемещениями на экране и взаимодействиями, такими как игры в стиле стрелялки от первого лица (FPS) или приложения точного черчения с помощью компьютера. Хотя увеличенные частоты дискретизации механизмов устройств ввода могут быть достигнуты, это не гарантирует, что воспринимаемая задержка ввода уменьшается, или что устаревшее состояние пользовательского ввода иногда доставляется в приложения.
[0011] Устройства ввода обычно отправляют информацию о текущем состоянии устройства ввода хост-системе в своем собственном темпе. Когда приложение собирается потреблять это состояние устройства ввода, оно часто является устаревшим порядка до десятков миллисекунд вследствие запаздывания или задержки от сочетания факторов, включающих в себя задержки дискретизации устройства ввода, задержки передачи по одной или более линиям связи и задержки обработки или манипулирования в элементах программного обеспечения хост-системы, среди других факторов. Это запаздывание или задержка в приеме состояния устройства ввода приложением на хост-системе приводит в результате к воспринимаемой задержке ввода для пользователей. В данном документе обсуждаются улучшенные системы, архитектуры и способы для приложений, чтобы запрашивать синхронизацию доставки состояния устройства ввода с определенными приложением периодами. Преимущественно, это гарантирует, что приложение имеет более современное состояние устройства ввода по сравнению с обычно достижимым.
[0012] В качестве первого примера улучшенных устройств пользовательского ввода и элементов пользовательского взаимодействия хост-систем представляется фиг. 1. Фиг. 1 является схемой системы, иллюстрирующей окружение 100 пользовательского ввода. Окружение 100 включает в себя устройство 110 ввода, хост-систему 120 и устройство 130 отображения. Устройство 110 ввода и хост-система 120 связываются по линии 140 связи. Хост-система 120 и устройство 130 отображения связываются по линии 141 связи. Устройство 110 ввода является примером любого подходящего устройства пользовательского ввода, например, тех типов, которые показаны на фиг. 1 для элементов 101-103. Линии 140-141 связи могут содержать беспроводные или проводные линии связи и обсуждаются более подробно ниже. Хотя игровые контроллеры и игровые системы могут применяться в окружении 100, следует понимать, что обсуждение может также применять другие устройства пользовательского ввода и типы пользовательских систем.
[0013] Устройство 110 ввода включает в себя клиента 115 регулирования синхронизации, а хост-система 120 включает в себя приложение 122 и систему 125 регулирования синхронизации. В эксплуатации пользователь может применять устройство 110 ввода для взаимодействия с приложением 122, исполняемым хост-системой 120. Клиент 115 регулирования синхронизации и система 125 регулирования синхронизации работают, чтобы уменьшать задержку пользовательского ввода для приложения 112 при передаче информации, указывающей пользовательскую манипуляцию устройством 110 ввода. Эта информация, указывающая пользовательские манипуляции, называется в данном документе состоянием устройства ввода и типично содержит цифровые представления пользовательских манипуляций, которые передаются устройством 110 ввода для доставки хост-системе 120. В некоторых примерах система 125 регулирования синхронизации регулирует доставку состояния устройства ввода от устройства 110 ввода в соответствии с запросами синхронизации состояния ввода, выдаваемыми приложением 122 или другими элементами хост-системы 120.
[0014] Фиг. 2 является блок-схемой последовательности операций, иллюстрирующей примерный способ работы элементов, включенных в окружение 100. Операции на фиг. 2 снабжаются ссылками в круглых скобках ниже. На фиг. 2 детализируется процесс регулирования доставки состояния ввода, когда синхронизация доставки состояния ввода регулируется между устройством 110 ввода и хост-системой 120. Хост-система 120 определяет (201) целевой темп или целевой ритм для доставки состояния пользовательского ввода приложению 122 от устройства 110 пользовательского ввода. Целевой темп или целевой ритм ссылается на повторяющийся или циклический временной интервал, который отделяет отдельные передачи состояния пользовательского ввода. Система 125 регулирования синхронизации может принимать указание целевого темпа от приложения 122. Указание целевого темпа может содержать указание рекуррентного события в хост-системе 120, которая исполняет приложение 122, и смещение синхронизации от рекуррентного события. Рекуррентное системное событие может применяться в качестве исходного события, от которого регулировки синхронизации выполняются с помощью, по меньшей мере, смещения синхронизации.
[0015] Рекуррентные системные события, относящиеся к воспроизведению графики или обновлению отображения, могут вызываться по ссылке приложением 122 с целевым темпом. Это может быть частично вследствие того, что эти рекуррентные системные события соотносятся с элементами пользовательского интерфейса, на которые влияет состояние пользовательского ввода устройства 110 ввода. Примерные рекуррентные системные события включают в себя указатели обновления отображения, указатели кадровой синхронизации отображения (VSYNC) или характеристики синхронизации частоты кадров графического вывода процесса графического вывода хост-системы 120. Например, VSYNC-сигналы могут применяться для указания синхронизации для операций обновления отображения или операций воспроизведения отображения относительно дисплея 130. Этот VSYNC-сигнал, ссылаясь на кадровую синхронизацию обновления дисплея 130, повторяется циклически согласно интервалу обновления, такому как 60 Герц (Гц), 120 Гц или другие интервалы обновления. Другое рекуррентное событие может включать в себя частоту кадров для воспроизведения графических элементов, ассоциированных с приложением 122, посредством фрагмента графической обработки хост-системы 120. Эта частота кадров может соответствовать показателю кадров в секунду (кадр/с).
[0016] Смещение синхронизации может быть использовано для смещения доставки состояния пользовательского ввода приложению 122 от рекуррентного системного события, такого как события, обсужденные выше. Например, смещение синхронизации может быть указанием времени в микросекундах (мкс), чтобы задерживать доставку состояния пользовательского ввода относительно рекуррентного системного события. Таким образом, желаемое время доставки для состояния пользовательского ввода приложению 122 может соответствовать числу микросекунд после каждого возникновения системного события. Смещение синхронизации может предоставлять возможность времени обработки приложения 122 объединять каждый новый экземпляр состояния пользовательского ввода в операции воспроизведения, операции изменения/обновления пользовательского интерфейса, операции игровой логики и другое инициирование пользовательского интерфейса на основе изменений в состоянии пользовательского ввода.
[0017] Хотя система 125 регулирования синхронизации может принимать указание целевого темпа от приложения 122, в дополнительных примерах это указание синхронизации может быть определено посредством системы 125 регулирования синхронизации без непосредственного привлечения приложения 122. Это может называться прогнозным, адаптивным или автоматическим регулированием синхронизации состояния пользовательского ввода. В этих примерах адаптивного регулирования синхронизации, система 125 регулирования синхронизации наблюдает за синхронизацией, ассоциированной с одним или более системными вызовами или запросами от приложения для состояния пользовательского ввода. Система 125 регулирования синхронизации может затем определять целевой темп на основе, по меньшей мере, синхронизации, ассоциированной с одним или более запросами. Например, система 125 регулирования синхронизации может определять, что запрос состояния пользовательского ввода от приложения 122 проявляет конкретный темп или частоту, которая является периодической или квазипериодической. Система 125 регулирования синхронизации затем определяет смещение синхронизации от этого адаптивно определенного темпа или частоты, из которого выполняются регулировки синхронизации, обсуждаемые ниже. Таким образом, приложение не должно быть специально сконфигурировано, чтобы получать выгоды от улучшений в доставке состояния пользовательского ввода, обсуждаемых в данном документе.
[0018] После того как целевой темп был идентифицирован, хост-система 120 определяет (202), на основе этого целевого темпа, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства 110 ввода. Один или более параметров синхронизации могут содержать интервал передачи и смещение передачи для регулировки в передачах последующего состояния пользовательского ввода от устройства 110 ввода. Интервал передачи указывает периодическое или циклическое время для того, чтобы устройство 110 пользовательского ввода передало состояние пользовательского ввода по сети 140 связи. Интервал передачи может содержать циклическое время, соответствующее рекуррентному системному событию, определенному в операции 201, или может содержать другой периодический интервал. Смещение передачи может быть основано, по меньшей мере, частично на запаздывании между передачей состояния пользовательского ввода устройством 110 ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода хост-системы 120.
[0019] Чтобы определять смещение передачи, система 125 регулирования синхронизации определяет запаздывание или задержку между передачей состояния пользовательского ввода устройством 110 ввода и последующим приемом этого состояния пользовательского ввода хост-системой 120. Различные способы могут применяться системой 125 регулирования синхронизации для определения этого запаздывания. Например, оценка запаздывания может быть выполнена на основе оцененной задержки линии связи и других задержек в передаче состояния пользовательского ввода устройством 110 ввода. Однако, более непосредственное измерение может вместо этого быть выполнено системой 125 регулирования синхронизации. Это непосредственное измерение может содержать инструктирование устройству 110 ввода формировать указатель синхронизации, который соответствует тому, когда устройство 110 ввода передает состояние пользовательского ввода, и этот указатель синхронизации может быть включен в передаваемые сигналы, пакеты или кадры, которые сопровождают или включают в себя состояние пользовательского ввода. В другом примере отдельный процесс калибровки выполняется между клиентом 115 регулирования синхронизации в устройстве 110 ввода и системой 125 регулирования синхронизации в хост-системе 120. Этот процесс калибровки может включать в себя передачу указания синхронизации в трафике от устройства 110 ввода, предназначенном для хост-системы 120. Указатель синхронизации может также быть включен в каждый экземпляр состояния пользовательского ввода, доставляемый хост-системе 120, или его фрагмент. В дополнительных примерах система 125 регулирования синхронизации периодически запрашивает включение указателя синхронизации для сопровождения состояния пользовательского ввода, чтобы выполнять регулировки вследствие операционного дрейфа.
[0020] Указатель синхронизации может содержать временную метку или монотонно изменяющееся значение счетчика, формируемое клиентом 115 регулирования смещения устройства 110 ввода и включенное в сообщения, передаваемые устройством 110 ввода. Монотонно изменяющийся счетчик может содержать увеличивающееся значение счетчика или уменьшающееся значение счетчика, которое дает положительное или отрицательное приращение согласно тактовому сигналу, временному разбиению или периодическому событию устройства 110 ввода. Предварительно определенное число цифр значения счетчика или предварительно определенный размер значения счетчика может быть использован, и когда предел значения счетчика или максимальное значение счетчика достигается, тогда значение счетчика может сбрасываться или опрокидываться в первоначальное значение, чтобы начинать положительное или отрицательное приращение значения счетчика вновь. Размер значения счетчика типично определяется таким образом, чтобы предоставлять возможность для одного или более экземпляров передачи состояния пользовательского ввода или предоставлять возможность для временной задержки, большей по сравнению с максимальным ожидаемым запаздыванием, которое обеспечивает правильное вычисление фактического запаздывания.
[0021] После приема системой 125 регулирования синхронизации указатель синхронизации может быть использован системой 125 регулирования синхронизации для определения смещения передачи. Смещение передачи определяется, чтобы компенсировать запаздывание или задержку между тем, когда устройство 110 ввода передает состояние пользовательского ввода, и тем, когда элементы интерфейса хост-системы 120 принимают это состояние пользовательского ввода. Таким образом, система 125 регулирования синхронизации определяет, на основе целевого темпа и запаздывания, один или более параметров синхронизации, которые указываются устройству 110 ввода.
[0022] Как отмечено выше, первый из параметров синхронизации может включать в себя интервал передачи. Этот интервал передачи соответствует рекуррентному системному событию, применяемому в качестве базового показателя синхронизации в операции 201. Поскольку устройство 110 ввода может не иметь видимости по отношению к конкретному рекуррентному системному событию хост-системы 120, система 125 регулирования синхронизации может указывать интервал передачи в другом показателе или системе обозначений устройству 110 ввода. Например, рекуррентное системное событие хост-системы 120 может содержать VSYNC-сигнал или другой рекуррентный сигнал, отмеченный в данном документе. Система 125 регулирования синхронизации может определять эквивалентный интервал передачи, который соответствует VSYNC-сигналу или другому рекуррентному системному событию, и передавать указание этого интерфейса синхронизации устройству 110 ввода. Указание интервала передачи может быть преобразовано в интервал, имеющий временное разбиение, которое может быть интерпретировано устройством 110 ввода, такое как абсолютное разбиение в микросекундах или относительное разбиение, привязанное к тактовому сигналу или рекуррентному событию, по отношению к которому пользовательское устройство 110 имеет видимость.
[0023] Второй из параметров синхронизации может включать в себя смещение передачи. Это смещение передачи указывает смещение во времени относительно интервала передачи, который компенсирует запаздывание или задержку при передаче состояния пользовательского ввода от устройства 110 ввода. Однако, это смещение передачи также принимает во внимание смещение синхронизации для приложения 122, которое относится к рекуррентному системному событию. Запаздывание и смещение синхронизации учитываются при вычислении смещении передачи, чтобы гарантировать, что доставка состояния пользовательского ввода приложению 122 совпадает с желаемым временем доставки - как отмечено посредством рекуррентного системного события и смещения синхронизации. В одном примере запаздывание и смещение синхронизации преобразуются в общее временное разбиение и затем складываются вместе, чтобы формировать смещение передачи. В другом примере интервал передачи учитывается в этом вычислении, чтобы гарантировать, что любое смещение в синхронизации между интервалом передачи и рекуррентным системным событием принимается во внимание. Другие задержки, запаздывания, смещения, интервалы и параметры синхронизации могут быть приняты во внимание также.
[0024] После того как один или более параметров синхронизации определяются системой 125 регулирования синхронизации, эти параметры синхронизации указываются (203) устройству 110 ввода по линии 140 связи. Клиент 115 регулирования синхронизации принимает эти указатели синхронизации и выполняет регулировки в работе устройства 110 ввода согласно указателям синхронизации. В частности, клиент 115 регулирования синхронизации выполняет регулировки в устройстве 110 ввода таким образом, что устройство 110 ввода передает (204) состояние пользовательского ввода согласно одному или более параметрам синхронизации. Эти регулировки могут включать в себя регулировку того, когда пользовательский ввод дискретизируется из механизмов ввода, когда обновления или изменения состояния пользовательского ввода определяются устройством 110 ввода, и когда элементы интерфейса связи устройства 110 ввода передают состояние пользовательского ввода для доставки по линии 140 связи.
[0025] Во время работы относительная синхронизация между устройством 110 ввода и хост-системой 120 может дрейфовать и повторно вносить задержку или другие заметные эффекты даже с регулировками синхронизации. Периодические калибровки синхронизации для регулировок могут выполняться с помощью процесса, описанного выше. Эти периодические калибровки синхронизации могут корректировать или компенсировать дрейф в различных параметрах синхронизации, смещениях синхронизации или других сигналах. Кроме того, изменения в запаздывании между устройством 110 ввода и хост-системой 120 могут изменяться со временем вследствие изменений в характеристиках линии связи (например, задержке беспроводного сигнала), когда беспроводные линии связи применяются в качестве линии 140 связи. Эти периодические калибровки синхронизации могут выполняться в ответ на периодические таймеры, в ответ на включение питания устройства 110 ввода или хост-системы 120, при запуске приложения 122, в ответ на пользовательские запросы или пользовательские команды, или когда дрейф выше некоторого порогового уровня испытывается, среди других причин.
[0026] В дополнение к процессам первоначальной или периодической калибровки или регулировки приложение 122 может запрашивать различные интервалы синхронизации или смещения на основе активности в приложении. Например, во время неинтерактивных фрагментов приложения, таких как видеозаставка игры или анимация, пользовательский ввод может не использоваться. Однако, после того как неинтерактивный фрагмент приложения завершается, пользовательский ввод может снова быть желателен. Приложение 122 может ожидать такие переходы между неинтерактивными и интерактивными режимами и выдавать один или более запросов регулировок синхронизации состояния пользовательского ввода. Эти регулировки синхронизации могут выполняться, чтобы гарантировать, что устаревшие данные пользовательского ввода не представляются приложению 122 при переходе между режимами. Кроме того, смещение синхронизации, указанное приложением 122, может быть использовано для повторного выравнивания доставки состояния пользовательского ввода относительно рекуррентного системного события, чтобы обеспечивать улучшенный переход от неинтерактивного режима и вход в интерактивный режим.
[0027] Возвращаясь к подробному описанию элементов на фиг. 1, устройство 110 ввода показано в качестве примерного устройства ввода, содержащего игровой контроллер 101, мышь 102 или клавиатуру 103. Однако, устройство 110 ввода может содержать любой тип устройства пользовательского ввода. В игровых системах, таких как системы Xbox®, устройства пользовательского ввода могут включать в себя игровые компьютеры, которые применяют джойстики, рукоятки для большого пальца, рукоятки управления, пропорциональные триггеры, геймпады, адаптивные механизмы управления или другие механизмы ввода. Различные вычислительные системы могут также применять сенсорные экраны, клавиатуры, мыши, сенсорные панели, адаптивные контроллеры, контроллеры виртуальной реальности, контроллеры дополненной реальности или другое аналогичное оборудование. Однако, различные типы и формы устройств пользовательского ввода типично совместно используют общие элементы для приема пользовательской манипуляции и пользовательского ввода. Они называются механизмами ввода и могут включать в себя рукоятки управления, навигационные клавиши (кнопки направления), кнопки, клавиши, пусковые устройства, педали, колеса или другие элементы ввода. Дополнительные механизмы ввода могут быть использованы, такие как сенсорные панели, сенсорные экраны, устройства голосового управления или другие механизмы ввода, включающие в себя их сочетания. Механизмы ввода типично имеют соответствующие электромеханические элементы и структурные элементы для приема пользовательской манипуляции, а также включают в себя измерительные элементы, чтобы интерпретировать пользовательскую манипуляцию в электрическую сигнальную информацию. Измерительные элементы, такие как элементы обнаружения позиции и элементы измерительных преобразователей, могут быть включены в устройство 110 ввода и могут содержать потенциометры, схему определения позиции, угловые резольверы, оптоэлектронные датчики позиции, магнитные датчики, такие как датчики на эффекте Холла или магниторезистивные датчики, кодеры, емкостные датчики, индуктивные датчики или другие элементы измерения позиции и элементы обнаружения позиции. Элементы аналого-цифрового (A/D) преобразования могут также быть включены в схему управления устройства 110 ввода, чтобы преобразовывать электрическую сигнальную информацию из аналоговых сигналов измерения или позиционирования в цифровые представления входных данных. Эти цифровые представления могут быть переданы по линии 140 связи хост-системе 120 для управления элементами пользовательского интерфейса, ассоциированными с приложением 122 или другим программным обеспечением. Однако, как обсуждается в данном документе, клиент 115 регулирования синхронизации также включается в устройство 110 ввода, чтобы выполнять регулировки в дискретизации и доставке состояния пользовательского ввода.
[0028] Хост-система 120 содержит систему конечного пользователя, такую как игровые системы, системы дополненной/виртуальной реальности, терминалы, компьютерные системы, вычислительные устройства, планшетные устройства, смартфоны, персональные компьютеры, серверы, облачные системы, платформы распределенного вычисления и т.п. Пользователи, такие как пользователи игровой системы, развлекательной платформы или вычислительной системы, могут взаимодействовать с элементами пользовательского интерфейса хост-системы 120 через устройства пользовательского интерфейса. Хост-система 120 может включать в себя системы обработки, системы памяти, системы хранения, сетевое интерфейсное оборудование, элементы пользовательского интерфейса, системы обработки звука и графики, системы видеообработки, также как службы регулирования синхронизации состояния пользовательского ввода, такие как система 125 регулирования синхронизации. Хост-система 120 может содержать один или более микроконтроллеров, микропроцессоров, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или дискретную логику и ассоциированные схемы, включающие в себя их сочетания. Хост-система 120 может включать в себя дополнительные элементы аппаратных средств и программного обеспечения, такие как видеопроцессоры, графические ядра, видеокарты, карты графического интерфейса, видеопамять, графические движки, блоки исполнения, блоки воспроизведения, блоки интерфейса памяти или другие элементы, включающие в себя их сочетания и разновидности.
[0029] Устройство 130 отображения может содержать один или более видеомониторов, телевизоров, проекторов, сенсорных экранов, передаваемых видеоинтерфейсов, виртуализированных интерфейсов или других элементов просмотра видео или графики, включающих в себя их сочетания. Устройство 130 отображения может иметь один или более интерфейсов ввода для приема графики или видео от источника, например, от хост-системы 120, по линии 141 связи. Устройство 130 отображения может включать в себя различные технологии отображения. Например, устройство 130 отображения может содержать светоизлучающие панели или светопроекционные дисплеи, среди прочего. Панели отображения типично содержат дисплеи, такие как жидкокристаллические (LCD), на светоизлучающих диодах (LED) или на органических светоизлучающих диодах (OLED). Светопроекционные дисплеи типично содержат дисплеи с цифровой проекцией света (DLP) или дисплеи с микроэлектромеханическими системами (MEMS) или дисплеи со сканированием лазерным лучом, среди прочего.
[0030] Линия 140 связи содержит линию связи устройства пользовательского ввода, которая может содержать одну или более линий проводной или беспроводной связи. Линия 140 связи может содержать различные логические, физические или прикладные программные интерфейсы (API). Примерные линии связи могут использовать металл, стекло, оптику, воздух, пространство или некоторый другой материал в качестве среды передачи. Линия 140 связи может использовать различные протоколы и форматы, такие как универсальная последовательная шина (USB), Bluetooth (такой как IEEE 802.15.1), WiFi (IEEE 802.11), инфракрасную связь, протокол Интернета (IP), Ethernet, протокол управления передачей (TCP), связь малого радиуса действия (NFC), другие проводные или беспроводные интерфейсы данных, проприетарную передачу сигнальной информации или некоторый другой формат связи, включающий в себя их сочетания, улучшения или разновидности. Линия 140 связи может включать в себя прямые линии связи или может включать в себя промежуточные сети, системы, концентраторы, маршрутизаторы или устройства и может включать в себя логическую сетевую линию связи, передаваемую по множеству физических линий связи.
[0031] Линия 141 связи может содержать одну или более линий связи, таких как одна или более линий видеосвязи, содержащих беспроводные или проводные линии связи. Линия 141 связи может содержать различные логические, физические или прикладные программные интерфейсы (API). Примерные линии связи могут использовать металл, стекло, оптику, воздух, пространство или некоторый другой материал в качестве среды передачи. Линия 141 связи может использовать различные видеопротоколы и форматы, такие как мультимедийный интерфейс высокой четкости (HDMI), DisplayPort Ассоциации по стандартам в области видеоэлектроники, интерфейс процессора мобильной промышленности (MIPI), Альянс последовательных интерфейсов дисплеев (DSI), цифровой визуальный интерфейс (DVI), беспроводной дисплей (WiDi), Miracast, интерфейсы видеографической матрицы (VGA), интерфейсы беспроводного дисплея или другие цифровые и аналоговые линии видеосвязи, включающие в себя типы интерфейсов, которые передаются по другим типам линий связи. В некоторых примерах видеоданные могут передаваться по линии 141 связи с помощью различных протоколов передачи данных, таких как IP, Ethernet, гибридный коаксиальный кабель (HFC), WiFi, Bluetooth, другие проводные или беспроводные интерфейсы передачи данных или некоторый другой формат связи, включающий в себя их сочетания, улучшения или разновидности. Линия 141 связи может включать в себя прямые линии связи или может включать в себя промежуточные сети, системы или устройства и может включать в себя логическую сетевую линию связи, передаваемую по множеству физических линий связи. Линия 141 связи может включать в себя маршрутизаторы, коммутаторы, мосты, узлы обработки трафика, концентраторы и т.п. для передачи трафика между конечными точками.
[0032] Чтобы дополнительно иллюстрировать улучшенные системы для выполнения регулировок синхронизации, чтоб уменьшать задержку в устройствах пользовательского ввода, предоставляется фиг. 3. Фиг. 3 является схемой системы, иллюстрирующей устройство 310 ввода в качестве примера устройства 110 ввода в реализации. Фиг. 3 включает в себя окружение 300 пользовательского ввода. Примерные операции элементов на фиг. 3 обсуждаются ниже относительно фиг. 5.
[0033] Обращаясь сначала к элементам фиг. 3, окружение 300 включает в себя устройство 310 ввода, которое связывается по линии 360 связи. Устройство 310 ввода показано как примерное устройство ввода, содержащее игровой контроллер 301, мышь 302 или клавиатуру 303. Однако, устройство 310 ввода может содержать любой тип устройства пользовательского ввода, обсужденный выше для устройства 110 ввода на фиг. 1, хотя разновидности возможны. Устройство 310 ввода включает в себя механизм 320 ввода, процессор 330 управления, микропрограммное обеспечение 331, систему 340 хранения и интерфейс 350 связи. Интерфейс 350 связи связывается по линии 360 связи, которая содержит любую из линии связи и типов протоколов, обсужденных выше для линии 140 связи, хотя разновидности возможны.
[0034] Устройство 310 ввода может быть соединено по линии 360 связи с хост-системой, такой как хост-система 120 на фиг. 1 или хост-система 410 на фиг. 4. Пользователь может манипулировать одним или более механизмами 320 ввода, чтобы управлять элементами пользовательского интерфейса, представленными хост-системой. Эти элементы пользовательского интерфейса могут включать в себя графические и текстовые элементы, представленные на дисплее хост-системы. Управляющий процессор 330 может наблюдать за сигналами, ассоциированными с пользовательским манипулированием одним или более механизмами 320 ввода, чтобы создавать состояние пользовательского ввода на основе пользовательской манипуляции. Как будет обсуждаться ниже, устройство 310 ввода включает в себя улучшенную схему, микропрограммное обеспечение и обработку, чтобы уменьшать задержку для приложения или игр, исполняемых посредством хост-системы, с которой устройство ввода соединено с возможностью связи.
[0035] Механизм 320 ввода содержит различные обращенные к пользователю органы управления с соответствующими электромеханическими элементами, чтобы принимать пользовательскую манипуляцию и пользовательский ввод. Механизм 320 ввода может включать в себя актуаторы, клавиши, кнопки, навигационные клавиши (кнопки направления), пусковые устройства, рукоятки управления, педальные органы управления, колесные органы управления, панели управления или другие типы органов управления, обсуждаемых в данном документе. Механизм 320 ввода имеет соответствующие измерительные элементы, чтобы интерпретировать пользовательскую манипуляцию в электрическую сигнальную информацию. Измерительные элементы, такие как элементы обнаружения позиции и элементы измерительных преобразователей, могут быть включены в механизм 320 ввода и могут содержать потенциометры, схему определения позиции, угловые резольверы, оптоэлектронные датчики позиции, магнитные датчики, такие как датчики на эффекте Холла или магниторезистивные датчики, кодеры, емкостные датчики, индуктивные датчики или другие элементы измерения позиции и элементы обнаружения позиции. Схема A/D-преобразования может также быть включена для преобразования электронной сигнальной информации из аналоговых сигналов измерения или позиционирования в цифровые представления входных данных для ввода в управляющий процессор 330. В некоторых примерах управляющий процессор 330 включает в себя схему A/D-преобразования и принимает аналоговые сигналы от механизма 320 ввода. Дискретизация аналоговых сигналов от механизма 320 ввода может происходить согласно предварительно определенным частотам дискретизации или согласно динамическим или регулируемым частотам дискретизации на основе регулировок синхронизации, выполняемых управляющим процессором 330.
[0036] Управляющий процессор 330 может содержать один или более микроконтроллеров, микропроцессоров, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или дискретную логику и ассоциированные схемы, включающие в себя их сочетания. Управляющий процессор 330 может включать в себя, или быть спарен, с одним или более элементами аналого-цифрового преобразования, чтобы принимать пользовательский ввод, ассоциированный с механизмом 320 ввода. Управляющий процессор 330 может содержать элементы обработки данных, элементы хранения данных, среди прочих элементов. В некоторых примерах управляющий процессор 330 содержит дискретную логику и схему, в то время как в дополнительных примерах управляющий процессор 330 содержит один или более фрагментов различных микропроцессоров, программное обеспечение, микропрограммное обеспечение, запоминающее устройство и связанные элементы. На фиг. 3 управляющий процессор 330 выполняет микропрограммное обеспечение 331, которое может храниться в системе 340 хранения до передачи в элементы памяти управляющего процессора 330 для исполнения.
[0037] Микропрограммное обеспечение 331 содержит интерфейс 332 механизма и систему 333 регулирования синхронизации. Интерфейс 332 механизма содержит один или более цифровых интерфейсов, выполненных с возможностью принимать цифровые представления данных о перемещении, закодированных посредством элементов механизма 320 ввода. Интерфейс 332 механизма может быть соединен с логическим или физическим интерфейсом с механизмом 320 ввода, который может включать в себя один или более буферов, формирователей сигнала, признаков подавления дребезга сигнала, приемопередатчиков, проводных или беспроводных интерфейсов, последовательных или параллельных интерфейсов, среди прочих элементов.
[0038] Система 333 регулирования синхронизации содержит программное обеспечение или службу микропрограммного обеспечения, выполняемую управляющим процессором и выполненную с возможностью регулировать синхронизацию доставки состояния пользовательского ввода, предоставляемого по линии 360 связи. Система 333 регулирования синхронизации может содержать одну или более компьютерно-исполняемых инструкций, сохраненных на долговременных носителях информации, таких как система 340 хранения или память для исполнения управляющего процессора 330, хотя разновидности возможны. На фиг. 3 система 333 регулирования синхронизации включает в себя модуль 334 дискретизации ввода, счетчик 335 и интерфейс 336 вывода. Хотя краткое обсуждение этих элементов системы 333 регулирования синхронизации обсуждается теперь, дополнительные подробности встречаются в обсуждении фиг. 5.
[0039] Модуль 334 дискретизации ввода содержит интерфейс для приема цифровых представлений пользовательского манипулирования механизмом 320 ввода. Эти цифровые представления могут быть дискретизированы с конкретной частотой дискретизации, например, посредством A/D-схемы или другой аналогичной схемы, и предоставляется управляющему процессору 330 для доставки модулю 334 дискретизации ввода. В некоторых примерах модуль 334 дискретизации ввода может регулировать или управлять частотой дискретизации с помощью одного или более сигналов, предоставленных схемы дискретизации, таких как сигналы включения или сигналы запуска, предоставленные A/D-схеме. Когда модуль 334 дискретизации ввода регулирует частоту дискретизации или период дискретизации, модуль 334 дискретизации ввода может основывать эту частоту дискретизации на интервале передачи, принятом по линии 360 связи, со смещениями синхронизации, основанными на смещении передачи, принятыми по лини 360 связи.
[0040] Счетчик 335 включает в себя один или более процессов, чтобы подсчитывать циклы времени относительно степени детализации подсчета. Счетчик 335 может хранить значения счетчика в одном или более регистрах, местоположениях в памяти или других элементах хранения. Эти значения счетчика могут содержать временные отметки, указывающие текущее системное время, или могут вместо этого содержать монотонно увеличивающиеся или уменьшающиеся значения счетчика, имеющие степень детализации счетчика. Счетчик 335 может предоставлять указания текущего значения счетчика для включения в сообщения, передаваемые по линии 360 связи. Счетчик 335 может также отслеживать или формировать периодический сигнал синхронизации, который используется для инициирования доставки состояния пользовательского ввода выходным интерфейсом 336. Этот периодический сигнал синхронизации может быть основан на интервале передачи, принятом по линии 360 связи.
[0041] Выходной интерфейс 336 содержит регулируемые процессы взаимодействия, чтобы предоставлять состояние пользовательского ввода по линии 360 связи с помощью интерфейса 350 связи. Выходной интерфейс 336 может также регулировать время доставки состояния пользовательского ввода согласно одному или более параметрам синхронизации, принятым по линии 360 связи. Хотя частота дискретизации, ассоциированная со схемой дискретизации, может отличаться от интервала передачи и смещения передачи, предоставленных в одном или более параметрах синхронизации, выходной интерфейс 336 может компенсировать эти различия, чтобы гарантировать доставку состояния пользовательского ввода в соответствии с одним или более параметрами синхронизации. Это может повлечь за собой буферизацию состояния пользовательского ввода до передачи согласно одному или более параметрам синхронизации или указание модулю 334 дискретизации ввода управлять схемой дискретизации согласно одному или более параметрам синхронизации.
[0042] Интерфейс 350 связи содержит приемопередатчики, схему взаимодействия, управляющую логику и другие элементы для передачи цифровых представлений состояния пользовательского ввода и другой информации по линии 360 связи. Интерфейс 350 связи может содержать схему, обрабатывающие элементы и программное обеспечение, которое передает данные по различным протоколам и форматам, таким как USB, Bluetooth, IP, Ethernet, TCP, WiFi, NFC, инфракрасная связь, другие проводные или беспроводные интерфейсы передачи данных, или некоторый другой формат связи, включающий в себя их сочетания улучшения или разновидности.
[0043] В качестве дополнительного примера регулируемых способов доставки состояния пользовательского ввода и реализаций предоставляется фиг. 4. Фиг. 4 является схемой системы, иллюстрирующей окружение 400 регулируемой доставки состояния пользовательского ввода. Окружение 400 включает в себя хост-систему 410, дисплей 461 и игровой контроллер 301. Хост-система 410 и дисплей 461 связываются по линии 460 связи. Хост-система 410 и игровой контроллер 301 связываются по линии 360 связи. Игровой контроллер 301 является примером устройства 310 ввода на фиг. 3. Примерная работа элементов на фиг. 4 обсуждается ниже относительно фиг. 5.
[0044] Хост-система 410 иллюстрирует систему управления, которая является характерной для любой системы или совокупности систем, в которых различные операционные архитектуры, сценарии и процессы, раскрытые в данном документе, могут быть реализованы. Например, хост-система 410 может быть использована, чтобы реализовывать любой из элементов управления на фиг. 1, такой как хост-система 120. Возьмем пример, где элементы окружения 400 содержат пользовательскую систему, такую как игровая система или система виртуальной/дополненной реальности (которая может включать в себя наличие головной гарнитуры виртуальной/дополненной реальности), пользователь может соединять примерную пользовательскую систему с выбранным устройством отображения, отмеченным на фиг. 4 как примерный дисплей 461. Это выбранное устройство отображения может включать в себя любые ассоциированные физические мониторы, телевизоры, проекторы или может включать в себя виртуализированные или объединенные в сеть системы отображения. Устройства отображения могут соединяться через ассоциированные линии связи со схемой 413 видеоинтерфейса хост-системы 410, которая может включать в себя ассоциированные соединители, кабельную разводку, интерфейсную электронику и другую схему, представленную линией 460 связи.
[0045] Хост-система 410 включает в себя процессор 411, графические ядра 412, видеоинтерфейс 413, систему 414 памяти, интерфейсы 415 связи и систему 416 хранения. Элементы хост-системы 410 могут содержать элементы системы на кристалле (SoC), периферийные элементы, дискретную схему и различные другие формы вычислительного оборудования. Хост-система 410 может также включать в себя кожух, корпус или шасси, вместе с любыми ассоциированными элементами подачи питания, элементами охлаждения и интегрированными пользовательскими индикаторами, такими как индикаторы питания и состояния. Элементы хост-системы 410 могут связываться через ассоциированные шины связи или интерфейсы и могут получать питание от ассоциированных систем питания.
[0046] Хост-система 410 включает в себя различное программное обеспечение, которое направляет работу обрабатывающих элементов хост-системы 410, чтобы работать, как обсуждается в данном документе. В одной реализации программное обеспечение 420 хранится на долговременном компьютерно-читаемом носителе информации, таком как система 416 хранения. Процессор 411 загружает и исполняет программное обеспечение 420 из системы 416 хранения. Программное обеспечение 420 включает в себя пользовательскую операционную систему 430, драйверы 431 устройств, игровое приложение 432, пользовательское приложение 433 и систему 440 пользовательского интерфейса, которые являются характерными для процессов, служб и платформ, обсужденных относительно предшествующих чертежей. Система 440 пользовательского интерфейса дополнительно содержит прикладной программный интерфейс (API) 441, систему 442 регулирования и интерфейс 443 ввода. Когда исполняется процессором 411, чтобы предоставлять улучшенные службы пользовательского ввода, среди прочих служб, программное обеспечение 420 инструктирует процессору 411 работать, как обсуждается в данном документе, по меньшей мере, для различных процессов, операционных сценариев и последовательностей, обсужденных в вышеупомянутых реализациях. Хост-система 410 может необязательно включать в себя дополнительные устройства, отличительные признаки или функциональность, необсуждаемую в целях краткости.
[0047] Обращаясь все еще к фиг. 4, процессор 411 может содержать микропроцессор и схему обработки, которая извлекает и исполняет программное обеспечение 420 из системы 416 хранения. Процессор 411 может быть реализован в единственном устройстве обработки, но может также быть распределен между множеством устройств обработки, ядер обработки или подсистем обработки, которые взаимодействуют в выполнении программных инструкций. Примеры процессора 411 включают в себя центральные процессоры общего назначения, специализированные процессоры и логические устройства, также как любой другой тип устройства обработки, сочетания или их разновидности.
[0048] Графические ядра 412 включают в себя различные компоненты аппаратных средств, такие как стадии обработки, элементы памяти и другие элементы конвейерной обработки для обработки графических данных в воспроизводимое графическое изображение, которое представляется на дисплее. Графические ядра 412 могут быть предусмотрены в графическом процессоре (GPU) с одним или более графическими ядрами и ассоциированными элементами памяти. Графические ядра 412 могут включать в себя одну или более стадий или внутренних компонентов, которые могут обрабатывать контент/данные в воспроизводимые изображения для отображения. Эти элементы могут включать в себя формирователи теней, память текстур, блоки текстур, карты тайлов, карты резиденции и другие различные элементы. Кроме того, видеоинтерфейс 413 может быть включен в фрагменты графических ядер 412 или может содержать элемент, внешний по отношению к графическим ядрам 412, для взаимодействия с конкретной сигнальной информацией и протоколами, применяемыми линией 460 связи и дисплеем 461.
[0049] Графические ядра 412 могут формировать/воспроизводить видеоданные в ответ на операцию хост-системы 410, такую как взаимодействие пользователя с элементами пользовательского интерфейса, воспроизведение мультимедийного контента, операции дополненной/виртуальной реальности и другие действия. Эти видеоданные, состоящие из множества организованных по времени видеокадров, могут быть сохранены в буфере кадров для вывода устройству отображения. Эти буферы кадров могут заполняться и опустошаться согласно различным рекуррентным событиям, ассоциированным с графическими ядрами 412 и дисплеем 461, например, согласно VSYNC-синхронизации дисплея 461 или частотам кадров графических изображений, формируемых графическими ядрами 412. На фиг. 4 рекуррентные события могут соответствовать системным событиям 450, содержащим VSYNC 451 и кадровую синхронизацию 452, хотя другие могут быть использованы.
[0050] Система 414 памяти может содержать оперативное запоминающее устройство (RAM) или другие типы памяти, которые предоставляют возможность исполнения программного обеспечения 420 процессором 411. Система 414 памяти и система 416 хранения вместе могут содержать долговременную систему хранения данных, хотя возможные разновидности. Система 414 хранения может включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как читаемые компьютером инструкции, структуры данных, программные модули или другие данные. Система 414 памяти может, каждая, содержать дополнительные элементы, такие как контроллеры, приспособленные для связи с процессором 411.
[0051] Интерфейс 415 связи может включать в себя коммуникационные соединения и устройства, которые предоставляют возможность связи с различными операционными элементами, устройствами пользовательского интерфейса, периферийными устройствами, устройствами отображения или сетями передачи данных. Примеры соединений и устройств, которые вместе предоставляют возможность связи между системами, могут включать в себя интерфейсы управления системой, сетевые интерфейсы, сетевые интерфейсные карты, шины связи, антенны, RF-схему, приемопередатчики и другую схему связи. Соединения и устройства могут связываться через среду связи для обмена данными с другими вычислительными системами или сетями систем, такую как металл, стекло, воздух или любая другая подходящая среда связи.
[0052] Система 416 хранения может содержать любые компьютерно-читаемые носители информации, считываемые процессором 411 и приспособленные для хранения программного обеспечения 420. Система 416 хранения может включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как читаемые компьютером инструкции, структуры данных, программные модули или другие данные. Примеры носителей информации включают в себя оперативное запоминающее устройство, постоянное запоминающее устройство, магнитные диски, оптические диски, флэш-память, виртуальную память и невиртуальную память, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства или любые другие подходящие носители информации.
[0053] В дополнение к компьютерно-читаемым носителям информации, в некоторых реализациях система 416 хранения может также включать в себя компьютерно-читаемую среду передачи данных, по которой, по меньшей мере, некоторое из программного обеспечения 420 может быть передано внутренне или внешне. Система 416 хранения может быть реализовано как единственное запоминающее устройство, но может также быть реализовано посредством множества запоминающих устройств или подсистем, расположенных совместно или распределенных относительно друг друга. Система 416 хранения может содержать дополнительные элементы, такие как контроллер, приспособленные для связи с процессором 411 или возможно другими системами.
[0054] Программное обеспечение 420 может быть реализовано в программных инструкциях и среди других функций может, когда исполняется процессором 411, инструктировать процессору 411 работать, как описано относительно различных операционных сценариев, последовательностей операций и процессов, иллюстрированных в данном документе. Например, программное обеспечение 420 может включать в себя программные инструкции для реализации улучшенных служб пользовательского ввода, среди других служб.
[0055] В частности, программные инструкции могут включать в себя различные компоненты или модули, которые совместно работают или иначе взаимодействуют, чтобы выполнять различные процессы и операционные сценарии, описанные в данном документе. Различные компоненты или модули могут быть осуществлены в скомпилированных или интерпретированных инструкциях, или в некоторой другой разновидности или комбинации инструкций. Различные компоненты или модули могут выполняться синхронным или асинхронным образом, последовательно или параллельно, в однопоточной среде или многопоточной, или в соответствии с любой другой подходящей парадигмой выполнения, разновидностью или их сочетанием. Программное обеспечение 420 может включать в себя дополнительные процессы, программы или компоненты, такие как программное обеспечение операционной системы или другое прикладное программное обеспечение, в дополнение к или которое включает в себя систему 440 пользовательского интерфейса. Программное обеспечение 420 может также содержать микропрограммное обеспечение или некоторую другую форму машиночитаемых инструкций обработки, исполняемых процессором 411.
[0056] В целом, программное обеспечение 420 может, когда загружено в процессор 411 и исполняется, преобразовывать подходящее оборудование, систему или устройство (представителем которых является хост-система 410) в целом из вычислительной системы общего назначения в специализированную вычислительную систему, настроенную, чтобы предоставлять улучшенные службы пользовательского ввода, среди прочих служб. Действительно, кодирующее программное обеспечение 420 в системе 416 хранения может преобразовывать физическую структуру системы 416 хранения. Конкретное преобразование физической структуры может зависеть от различных факторов, в различных реализациях этого описания. Примеры таких факторов могут включать в себя, но не только, технологию, используемую для реализации носителей информации системы 416 хранения, и то, характеризуются ли компьютерные носители информации как первичное или вторичное запоминающее устройство, также как другие факторы.
[0057] Например, если компьютерно-читаемые носители информации реализуются как полупроводниковая память, программное обеспечение 420 может преобразовывать физическое состояние полупроводниковой памяти, когда программные инструкции кодируются в ней, например, посредством преобразования состояния транзисторов, конденсаторов или других дискретных схемных элементов, составляющих полупроводниковую память. Аналогичное преобразование может происходить относительно магнитных или оптических носителей. Другие преобразования физических носителей возможны без отступления от рамок настоящего описания, с вышеупомянутыми примерами, предоставленными только, чтобы облегчать настоящее обсуждение.
[0058] Операционная система 430 содержит один или более операционных элементов, используемых для поддержки исполнения пользовательских приложений процессором 411 хост-системы 410. Операционная система 430 может содержать различные блоки ядра, блоки исполнения задачи, блоки выборки команды, блоки распределения ресурсов, блоки совместного использования ресурсов, блоки организации памяти и другие различные функции и блоки, предоставляемые типичными операционными системами. Примерные операционные системы включают в себя Windows®, Linux, Unix, MacOS® и другие аналогичные операционные системы, которые могут предоставлять графические пользовательские интерфейсы или пользовательские интерфейсы в виде командной строки. Вместе с этими функциями операционная система 410 может содержать, или взаимодействовать, с драйверами 431 устройств.
[0059] Драйвера 431 устройств, каждый, конфигурируются, чтобы взаимодействовать с конкретным типом интерфейса связи или периферийного устройства. Например, сетевой интерфейс может связываться через сетевую интерфейсную карту (NIC), которая имеет конкретный драйвер устройства, выполненный с возможностью осуществлять связь со схемой NIC аппаратного уровня и предоставления интерфейса с аппаратными средствами для операционной системы 430 или приложений, исполняющихся в операционной системе 430. Графические ядра 412 могут иметь один или более драйверов устройств, которые предоставляют возможность операционной системе 430 взаимодействовать с графическими ядрами 412. Когда игровой контроллер 301 или другие устройства пользовательского ввода соединяются через линию 360 связи, эта линия связи может иметь конкретный драйвер устройства, назначенный ей, такой как драйвер USB или Bluetooth-устройства, среди прочих. Драйвер устройства передает сигнальную информацию с физического уровня устройства или интерфейса вверх через различные уровни стека программного обеспечения для конечного представления операционной системе 430 и одному или более пользовательским приложениям.
[0060] Игровое приложение 432 и пользовательское приложение 433, каждое, содержат предоставленные пользователем приложения, которые исполняются на процессоре 411 в операционной системе 430. Игровое приложение 432 может содержать развлекательные приложения, такие как стрелялки от первого лица (FPS), стратегические игры в реальном времени (RTS), игры с боковой прокруткой, игры-головоломки, карточные игры, настольные игры, среди прочего. Пользовательское приложение 433 может содержать офисные приложения, приложения системного администрирования, приложения электронной почты, браузерные приложения, приложения мультимедийных проигрывателей, приложения сетевого взаимодействия, служебные приложения, приложения черчения/рисования и другие различные приложения. Следует понимать, что игровое приложение 432 и пользовательское приложение 433 являются просто образцами множества различных типов пользовательских приложений, которые могут быть использованы.
[0061] Однако, игровое приложение 432 и пользовательское приложение 433, оба, могут принимать пользовательский ввод в форме состояния пользовательского ввода от одного или более устройств пользовательского ввода, таких как игровой контроллер 301 на фиг. 4, среди любых других устройств ввода, обсуждаемых в данном документе. Эти приложения могут желать иметь уменьшенное влияние или воздействие на задержку состояния пользовательского ввода. Система 440 пользовательского интерфейса предоставляется, чтобы уменьшать влияние или воздействие задержки состояния пользовательского ввода относительно, по меньшей мере, игрового приложения 432 и пользовательского приложения 433.
[0062] Система 440 пользовательского интерфейса включается в программное обеспечение 440 и обеспечивает связанные с пользовательским вводом и выводом операции хост-системы 410. Система 440 пользовательского интерфейса может принимать входные данные от устройств ввода через интерфейс 443 ввода и может принимать ввод от приложений через API 441. Однако, следует понимать, что другие интерфейсные системы могут быть предоставлены, такие как для управления устройствами ввода, хост-системой 410 или приложениями, играми или платформами, исполняемыми хост-системой 410.
[0063] Интерфейс 443 ввода содержит схему или программные инструкции, выполненные с возможностью принимать состояние устройства ввода, передаваемое устройствами ввода и другими периферийными устройствами. Интерфейс 443 ввода может содержать интерфейсы данных, настроенные для конкретных устройств ввода или периферийных устройств, вместе с одним или более буферами для хранения принятого состояния устройства ввода перед доставкой приложениям, играм и другим фрагментам операционной системы. Интерфейс 443 ввода может включать в себя фрагменты сетевого стека или стека протоколов в случаях, когда многоуровневые протоколы применяются для передачи данных между устройствами и хост-системой 410. В некоторых примерах фрагменты интерфейса 443 ввода могут быть объединены в драйверы 431 устройств или операционную систему 430.
[0064] Система 442 регулирования содержит схему или программные инструкции, выполненные с возможностью принимать запросы для регулировки доставки состояния устройства ввода приложениям, таким как игровое приложение 442, и определять инструкции регулирования для доставки устройствам ввода, которые изменяют синхронизацию передачи состояния пользовательского ввода. Система 442 регулирования может содержать блоки определения запаздывания или задержки линии связи, которые определяют запаздывание линии связи между устройством пользовательского ввода и приложением. Система 442 регулирования может ожидать или адаптивно устанавливать синхронизацию или регулировки доставки согласно синхронизации запроса пользовательского ввода, обнаруженной для одного или более приложений. Таким образом, приложение не должно запрашивать изменение доставки ввода по порядку для улучшенной доставки состояния пользовательского ввода. Система 442 регулирования может также периодически регулировать синхронизацию доставки состояния пользовательского ввода, чтобы уменьшать влияние дрейфа по времени между тактовыми генераторами устройства/хоста, или интерфейсами устройств ввода.
[0065] API 441 содержит схему или программные инструкции, выполненные с возможностью взаимодействовать с приложениями, чтобы запрашивать синхронизацию в привязке ко множеству системных событий. Это типично принимает форму приложения, указывающего идентификатор события (ID события) и сдвиг по времени от этого события, хотя другие конфигурации возможны. API 441 может также принимать информацию значения счетчика или указатели синхронизации, первоначально переданные приложением, которые указывают, когда устройство ввода первоначально передало состояние пользовательского ввода. В других примерах API 441 может принимать указание времени приема состояния пользовательского ввода, из которого система 442 регулирования может вычислять запаздывание линии связи между устройством пользовательского ввода и приложением.
[0066] Обращаясь теперь к подробному описанию примерных операций элементов на фиг. 3 и фиг. 4, временная диаграмма 500 представлена на фиг. 5. Что касается примера на фиг. 5, игровой контроллер 301 соединяется по линии 360 связи с хост-системой 410. Следует понимать, что другие устройства пользовательского ввода и ассоциированные линии связи могут вместо этого быть использованы с помощью аналогичной операции, что и описанная ниже. Во многих примерах хост-система 410 включает в себя множество устройств одновременного пользовательского ввода, и каждое из этих устройств пользовательского ввода может быть индивидуально отрегулировано или откалибровано для доставки состояния пользовательского ввода.
[0067] Фиг. 5 имеет несколько фаз активности, указанных с правой стороны на чертеже. Эти фазы активности могут происходить в порядке, отличном от порядка, указанного на фиг. 5. Первая фаза активности включает в себя фазу определения запаздывания, в которой система 440 пользовательского интерфейса определяет запаздывание или задержку между устройством ввода, таким как игровой контроллер 301, и хост-системой 410. Вторая фаза активности включает в себя фазу игровой активности, в которой игровое приложение 432 и графические ядра 412 взаимодействуют, чтобы обрабатывать пользовательский ввод и воспроизводить графические изображения для доставки дисплею 461. Эта вторая фаза типично происходит в течение множества других фаз, неприменимых на фиг. 5, и будет содержать обычную внутриигровую активность. Третья фаза активности включает в себя фазу регулирования доставки, в которой система 440 пользовательского интерфейса может регулировать передачу/доставку состояния пользовательского ввода от игрового контроллера 301 хост-системе 410. Четвертая фаза активности включает в себя улучшенную фазу доставки, в которой регулировки передачи/доставки состояния пользовательского ввода устанавливаются игровым контроллером 310. Четвертая фаза активности будет типично совпадать с внутриигровой активностью, указанной второй фазой активности.
[0068] На фиг. 5 приложение, исполняемое в операционной системе 430, такое как игровое приложение 432, определяет, когда оно вероятно примет пользовательский ввод от устройства пользовательского ввода, которое может изменяться от приложения к приложению. Например, игровое приложение 432 может хотеть считывать состояние игрового контроллера через две миллисекунды после начала каждого нового графического кадра, который воспроизводится графическими ядрами 412, таким образом, игровое приложение 432 может запускать ассоциированные моделирования игрового мира и подготавливать следующий графический кадр для воспроизведения. В другом примере приложения, которые управляют анимацией на большом дисплее с LED-матрицей, могут хотеть считывать пользовательские входные данные с частотой, которая привязана к анимации некоторым образом.
[0069] Во время выполнения игрового приложения 432 во второй фазе активности графические данные или инструкции воспроизведения предоставляются графическим ядрам 412 игровым приложением 432 для воспроизведения в графические кадры, отображаемые на дисплее 461. Графические ядра 412 или другие элементы хост-системы 410 будут типично иметь одно или более рекуррентных системных событий, которые могут соответствовать действиям воспроизведения или отображения графических данных. Как упомянуто выше, они могут включать в себя циклические указатели воспроизведения кадров, VSYNC-указатели или другие аналогичные указатели. Типично, игровое приложение 432 будет иметь видимость этих различных указателей и может инициировать различные игровые события или действия воспроизведения графики на основе возникновения этих указателей для рекуррентных системных событий. Игровое приложение 432, таким образом, знает о периодах воспроизведения и ассоциированном планировании игровых событий и графических событий. Игровое приложение 432 может предварительно воспроизводить кадры или буферизовать кадры в ожидании игровых событий, которые происходят в ответ на пользовательское управление. Эти предварительно воспроизведенные или буферизованные кадры могут или не могут отображаться в зависимости от того, какое действие пользователь предпринимает относительно пользовательского ввода.
[0070] Однако, игровое приложение 432 и другие аналогичные приложения типично желают ассоциировать изменения в состоянии пользовательского ввода с конкретными кадрами, на которых инициированные пользователем действия происходят. Например, пользователь, нажимающий кнопку или выбирающий конкретное направление на рукоятке управления, может влиять на элементы на экране, воспроизводимые для пользователя. Задержка от момента, когда пользователь задействует конкретный орган пользовательского управления, такой как кнопка, и до момента, когда элементы на экране отображаются пользователю, может создавать ощутимое запаздывание. Это может снижать пригодность к использованию игры и удовольствие для пользователя, среди прочих недостатков. Таким образом, игровое приложение 432 будет хотеть, по меньшей мере, частично синхронизировать пользовательский ввод с графическими кадрами, на которых пользовательский ввод отражается на экране, уменьшая восприятие запаздывания ввода или задержку для пользователей. Воспроизведение или предварительное воспроизведение графических кадров типично соотносится во времени с одним или более рекуррентными системными событиями, и игровое приложение 432 может использовать эти одно или более рекуррентных системных событий в качестве точки отсчета или триггера, от которого состояние пользовательского ввода может быть доставлено игровому приложению 432. Игровое приложение 432 может определять дельту или смещение от одного или более рекуррентных системных событий и указывать, что состояние пользовательского ввода должно быть доставлено согласно этому смещению от рекуррентного системного события. Эта дельта или смещение может преимущественно обеспечивать согласующееся применение состояния пользовательского ввода к воспроизводимым кадрам, предоставляя возможность игровому приложению 432, по меньшей мере, синхронизировать состояние пользовательского ввода с конкретной игровой активностью, такой как элементы в воспроизводимых кадрах. Игровое приложение 432 может, таким образом, быть снабжено "самым свежим" состоянием пользовательского ввода, доступным посредством инициирования не только доставки состояния пользовательского ввода игровому приложению 432 на основе рекуррентных системных событий, но также посредством инициирования дискретизации и передачи состояния пользовательского ввода на уровне устройства ввода. Верхняя по потоку обработка этого инициирования посредством устройств пользовательского ввода координируется системой 440 пользовательского ввода.
[0071] Чтобы указывать такую синхронизацию, фаза регулирования доставки может происходить, когда игровое приложение 432 может указывать рекуррентное системное событие через API 441. Это рекуррентное системное событие может быть использовано, чтобы инициировать доставку состояния пользовательского ввода игровому приложению 432. Система 440 пользовательского интерфейса также может иметь видимость в хост-системе 410 по отношению к этим рекуррентным системным событиям и может определять регулировки синхронизации относительно эти же событий. В дополнение к указанию рекуррентного системного события смещение от этого рекуррентного системного события может быть указано игровым приложением 432, которое может предоставлять игровому приложению 432 время на обработку состояния пользовательского ввода и применять это состояние пользовательского ввода к конкретным воспроизводимым кадрам или инициировать связанную с игрой активность. Таким образом, игровое приложение 432 указывает целевой темп или целевой ритм, с которым игровое приложение 432 хочет принимать состояние пользовательского ввода, чтобы лучше синхронизировать это состояние пользовательского ввода с элементами на экране. Игровое приложение 432 может преимущественно оптимизировать задержку состояния пользовательского ввода, чтобы совпадать с воспроизводимыми событиями, электрической синхронизацией экрана дисплея или другими рекуррентными системными событиями. После того как API 441 принимает, от игрового приложения 432, одно или более указаний рекуррентных системных событий и смещений, затем система 440 пользовательского интерфейса может в ответ инициировать фазу регулирования синхронизации. Одно или более указаний рекуррентных системных событий и смещений содержат целевой темп или целевой ритм, который также указывает смещение от рекуррентного системного события.
[0072] Альтернативно приему одного или более указаний рекуррентного системного события или смещения от рекуррентного системного события система 442 регулирования может выполнять предикативный или адаптивный процесс регулирования. В этом адаптивном процессе регулирования система 442 регулирования изучает характер вызовов игрового приложения 432 и определяет, запрашивает ли игровое приложение 432 состояние пользовательского ввода прогнозируемым образом. Если такой характер может быть обнаружен, система 442 регулирования запрашивает синхронизацию ввода от имени игрового приложения 432 без необходимости игровому приложению 432 запрашивать такую синхронизацию ввода. Этот характер может быть использован для определения релевантного рекуррентного системного события, от которого необходимо отсчитывать доставку состояния пользовательского ввода игровому приложению 432, также как любое смещение от этого рекуррентного системного события.
[0073] Система 440 пользовательского интерфейса определяет синхронизацию и планирование для передачи/доставки пользовательского ввода на основе указаний, принимаемых от игрового приложения 432, или на основе адаптивных или предикативных определений. Однако, часть этой синхронизации и планирования передачи/доставки пользовательского ввода может зависеть от запаздывания передачи или задержки передачи, испытываемой между передачей состояния пользовательского ввода от игрового контроллера 301 и приемом игровым приложением 432. Фаза определения запаздывания может, таким образом, быть инициирована, чтобы определять это запаздывание передачи или задержку передачи. Кроме того, фаза определения запаздывания может периодически быть инициирована, чтобы учитывать дрейф и изменения линии связи со временем. Эта периодическая регулировка дрейфа может быть особенно полезна, когда используются беспроводные линии связи.
[0074] В фазе определения запаздывания могут происходить различные процессы определения запаздывания. В первом примерном процессе определения запаздывания игровое приложение 432 принимает указатель синхронизации, передаваемый игровым контроллером 301, который соответствует времени, когда игровой контроллер 301 передает состояние пользовательского ввода. Этот указатель синхронизации может содержать монотонно изменяющееся значение счетчика, формируемое игровым контроллером 301 и сопровождающее или включенное в сообщения, содержащие состояние пользовательского ввода, передаваемые устройством пользовательского ввода. После того как игровое приложение 432 принимает это состояние пользовательского ввода с сопровождающим значением счетчика, игровое приложение 432 может указывать значение счетчика и время приема состояния пользовательского ввода системе 440 пользовательского интерфейса. В одном случае, игровое приложение 432 помечает или обновляет структуру данных или cookie-данные, которые являются видимыми для системы 440 пользовательского ввода. Система 440 пользовательского ввода может считывать эту структуру данных, чтобы определять значение счетчика или временную метку, ассоциированную с моментом, когда игровой контроллер 301 первоначально передал состояние пользовательского ввода, и когда игровое приложение 432 принимает состояние пользовательского ввода. Система 442 регулирования определяет разницу во времени, указанную посредством значения счетчика и временной метки, чтобы определять запаздывание или задержку передачи между передачей состояния пользовательского ввода игровым контроллером 301 и приемом игровым приложением 432.
[0075] Во втором примерном процессе определения запаздывания указатель синхронизации, такой как значение счетчика, упомянутое выше, передается игровым контроллером 301 для доставки системе 440 пользовательского интерфейса или системе 442 регулирования. Система 442 регулирования определяет время или временную метку, ассоциированную с приемом указателя синхронизации, передаваемого игровым контроллером 301. Из этого времени или временной метки система 442 регулирования может получать запаздывание или задержку передачи. В этом втором примерном процессе система 442 регулирования может также определять дополнительную задержку между приемом указателя синхронизации системой 440 пользовательского интерфейса и игровым приложением 432, чтобы определять суммарное запаздывание передачи между игровым контроллером 301 и игровым приложением 432. Когда значение счетчика, обсужденное выше, применяется, система 442 регулирования может быть выполнена с возможностью иметь дело со сбрасыванием, которое происходит в счетчике, принимаемом от игрового контроллера 432.
[0076] После того как запаздывание передачи определено, тогда система 442 регулирования может проводить фазу регулирования доставки. В фазе регулирования доставки система 442 регулирования обрабатывает одно или более указаний рекуррентных системных событий и смещений, принимаемых через API 441, также как запаздывание передачи, чтобы определять один или более параметров синхронизации, используемых для передачи состояния пользовательского ввода. Один или более параметров синхронизации содержат смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от игрового контроллера 432. Смещение передачи определяется, по меньшей мере, частично на основе смещения от рекуррентного системного события, принятого через API 441, и запаздывания передачи, определенного в процессе определения запаздывания.
[0077] В одном примере смещение передачи содержит смещение от рекуррентного системного события, указанного игровым приложением 432, и запаздывание передачи для игрового контроллера 301. Смещение передачи содержит указание в +/-микросекундах, информирующее игровой контроллер 301, чтобы ускорять или задерживать его следующую доставку состояния ввода. Это предоставляет возможность корректировки в реальном времени дрейфа тактового сигнала игрового контроллера 301, также как уменьшения влияния запаздывания передачи, чтобы гарантировать правильную синхронизацию приема состояния пользовательского ввода игровым приложением 432 относительно рекуррентного системного события. Система 442 регулирования может вычислять два значения, число микросекунд до момента, когда следующее состояние ввода должно быть отправлено от устройства ввода, и интервал в микросекундах, в котором последующий трафик состояния пользовательского ввода должен быть отправлен из устройства. Эти значения затем отправляются игровому контроллеру 301 по линии 360 связи.
[0078] Система 333 регулирования синхронизации игрового контроллера 360 затем в ответ изменяет темп/ритм доставки и синхронизацию для состояния пользовательского ввода. Улучшенная фаза доставки содержит доставку состояния пользовательского ввода от игрового контроллера 301 хост-системе 410, после того как игровой контроллер регулирует трафик состояния пользовательского ввода, как описано выше. Как может быть видно на фиг. 5, смещение передачи используется игровым контроллером 301, чтобы регулировать время передачи первого состояния пользовательского ввода, а интервал передачи используется, чтобы циклически передавать время последующего состояния пользовательского ввода. Хотя три таких цикла показаны на фиг. 5, следует понимать, что этот цикл передачи состояния пользовательского ввода может продолжаться во время работы хост-системы 410 и игрового приложения 432. Периодические рекурсии фазы определения запаздывания и фазы регулирования доставки могут выполняться, чтобы корректировать дрейф тактовых сигналов и синхронизацию линии связи между игровым контроллером 301 и игровым приложением 432.
[0079] Некоторые аспекты изобретения могут быть оценены из предшествующего описания, из которых последующее является различными примерами.
[0080] Пример 1: Устройство, содержащее один или более компьютерно-читаемых носителей информации, система обработки, функционально соединенная с одним или более компьютерно-читаемыми носителями информации, и интерфейс пользовательского ввода, содержащий программные инструкции, сохраненные на одном или более компьютерно-читаемых носителях информации. На основе считывания и исполнения системой обработки программные инструкции инструктируют системе обработки, по меньшей мере, идентифицировать целевой темп доставки состояния пользовательского ввода приложению, определять, по меньшей мере, на основе целевого темпа, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода и указывать один или более параметров синхронизации устройству пользовательского ввода, когда устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно одному или более параметрам синхронизации.
[0081] Пример 2: Интерфейс пользовательского ввода из примера 1, когда один или более параметров синхронизации содержат смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода, когда смещение передачи основывается, по меньшей мере, частично на запаздывании между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода.
[0082] Пример 3: Интерфейс пользовательского ввода из примеров 1-2, содержащий дополнительные программные инструкции, которые, на основе исполнения системой обработки, инструктируют системе обработки, по меньшей мере, принимать указание целевого темпа от приложения, когда указание целевого темпа содержит указание рекуррентного события в хост-системе, исполняющей приложение, и смещение синхронизации от рекуррентного события.
[0083] Пример 4: Интерфейс пользовательского ввода из примеров 1-3, когда рекуррентное событие содержит, по меньшей мере, один из указателя обновления отображения, указателя кадровой синхронизации дисплея или характеристику синхронизации частоты графических кадров для графического процесса хост-системы.
[0084] Пример 5: Интерфейс пользовательского ввода из примеров 1-4, содержащий дополнительные программные инструкции, которые, на основе исполнения системой обработки, инструктируют системе обработки, по меньшей мере, принимать указатель синхронизации, передаваемый устройством пользовательского ввода, который соответствует времени, когда устройство пользовательского ввода передает состояние пользовательского ввода.
[0085] Пример 6: Интерфейс пользовательского ввода из примеров 1-5, содержащий дополнительные программные инструкции, которые, на основе исполнения системой обработки, инструктируют системе обработки, по меньшей мере, определять запаздывание между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода и определять, на основе целевого темпа и запаздывания, один или более параметров синхронизации.
[0086] Пример 7: Интерфейс пользовательского ввода из примеров 1-6, когда указатель синхронизации содержит монотонно изменяющееся значение счетчика, формируемое устройством пользовательского ввода и включенное в сообщения, содержащие состояние пользовательского ввода, передаваемые устройством пользовательского ввода.
[0087] Пример 8: Интерфейс пользовательского ввода из примеров 1-7, содержащий дополнительные программные инструкции, которые, на основе исполнения системой обработки, инструктируют системе обработки, по меньшей мере, наблюдать за синхронизацией, ассоциированной с одним или более запросами от приложения для состояния пользовательского ввода, и на основе, по меньшей мере, синхронизации, ассоциированной с одним или более запросами, определять целевой темп, когда целевой темп содержит, по меньшей мере, смещение синхронизации от рекуррентного события в хост-системе, исполняющей приложение.
[0088] Пример 9: Интерфейс пользовательского ввода из примеров 1-8, когда устройство пользовательского ввода содержит, по меньшей мере, одно из игрового контроллера, клавиатуры, мыши, сенсорной панели, адаптивного контроллера, контроллера виртуальной реальности, контроллера дополненной реальности и сенсорного экрана.
[0089] Пример 10: Способ работы интерфейса пользовательского ввода на хост-системе, способ содержит идентификацию целевого темпа для доставки состояния пользовательского ввода приложению, определение, на основе, по меньшей мере, целевого темпа, одного или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода, и указание одного или более параметров синхронизации устройству пользовательского ввода, когда устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно одному или более параметрам синхронизации.
[0090] Пример 11: Способ из примера 10, когда один или более параметров синхронизации содержат смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода, когда смещение передачи основывается, по меньшей мере, частично на запаздывании между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода.
[0091] Пример 12: Способ из примеров 10-11, дополнительно содержащий прием указания целевого темпа от приложения, когда указание целевого темпа содержит указание рекуррентного события в хост-системе, исполняющей приложение, и смещение синхронизации от рекуррентного события.
[0092] Пример 13: Способ из примеров 10-12, когда рекуррентное событие содержит, по меньшей мере, один из указателя обновления отображения, указателя кадровой синхронизации дисплея или характеристику синхронизации частоты графических кадров для графического процесса хост-системы.
[0093] Пример 14: Способ из примеров 10-13, дополнительно содержащий прием указателя синхронизации, передаваемого устройством пользовательского ввода, который соответствует времени, когда устройство пользовательского ввода передает состояние пользовательского ввода.
[0094] Пример 15: Способ из примеров 10-14, дополнительно содержащий определение запаздывания между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода и определение, на основе целевого темпа и запаздывания, одного или более параметров синхронизации.
[0095] Пример 16: Способ из примеров 10-15, когда указатель синхронизации содержит монотонно изменяющееся значение счетчика, формируемое устройством пользовательского ввода и включенное в сообщения, содержащие состояние пользовательского ввода, передаваемые устройством пользовательского ввода.
[0096] Пример 17: Способ из примеров 10-16, дополнительно содержащий наблюдение за синхронизацией, ассоциированной с одним или более запросами от приложения для состояния пользовательского ввода, и на основе, по меньшей мере, синхронизации, ассоциированной с одним или более запросами, определение целевого темпа, когда целевой темп соответствует, по меньшей мере, рекуррентному событию в хост-системе, исполняющей приложение, и смещению синхронизации от рекуррентного события.
[0097] Пример 18: Способ из примеров 10-17, когда устройство пользовательского ввода содержит, по меньшей мере, одно из игрового контроллера, клавиатуры, мыши, сенсорной панели, адаптивного контроллера, контроллера виртуальной реальности, контроллера дополненной реальности и сенсорного экрана.
[0098] Пример 19: Система пользовательского интерфейса, содержащая прикладной интерфейс, выполненный с возможностью идентифицировать предпочтительную синхронизацию доставки состояния пользовательского ввода приложению, когда предпочтительная синхронизация доставки соответствует, по меньшей мере, рекуррентному событию в хост-системе, исполняющей приложение, и смещению синхронизации от рекуррентного события. Система пользовательского интерфейса включает в себя систему регулирования синхронизации, выполненную с возможностью определять, на основе, по меньшей мере, одной предпочтительной синхронизации доставки, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода. Система пользовательского интерфейса включает в себя интерфейс ввода, указывающий один или более параметров синхронизации устройству пользовательского ввода, когда устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно одному или более параметрам синхронизации.
[0099] Пример 20: Система пользовательского интерфейса из примера 19, система регулирования синхронизации, выполненная с возможностью определять запаздывание между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода системой пользовательского ввода и определять, на основе запаздывания и предпочтительной синхронизации доставки, один или более параметров синхронизации, содержащих смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода.
[00100] Функциональные блок-схемы, операционные сценарии и последовательности операций, и блок-схемы последовательности операций, предоставленные на чертежах, являются представителями примерных систем, окружений и методологий для выполнения новых аспектов изобретения. В то же время, в целях простоты объяснения, способы, включенные в данный документ, могут быть в форме функциональной схемы, операционного сценария или последовательности, или блок-схемой последовательности операций, и могут быть описаны как последовательности действий, следует понимать и принимать во внимание, что способы не ограничиваются порядком действий, поскольку некоторые действия могут, в соответствии с ними, происходить в другом порядке и/или одновременно с другими действиями по сравнению с порядком, показанным и описанным в данном документе. Например, специалисты в данной области техники поймут и примут во внимание, что способ может быть альтернативно представлен как последовательность взаимосвязанных состояний или событий, например, в схеме состояния. Кроме того, не все действия, проиллюстрированные в технологии, могут потребоваться для реализации изобретения.
[00101] Описания и чертежи, включенные в данный документ, изображают конкретные реализации, чтобы научить специалистов в области техники тому, как создать и использовать лучший вариант. В целях обучения принципам изобретения некоторые традиционные аспекты были упрощены или опущены. Специалисты в данной области техники поймут вариации из этих реализаций, которые подпадают под рамки изобретения. Специалисты в области техники также примут во внимание, что отличительные признаки, описанные выше, могут быть объединены различными способами, чтобы формировать множество реализаций. В результате, изобретение не ограничивается конкретными реализациями, описанными ниже, а только формулой изобретения и ее эквивалентами.

Claims (42)

1. Вычислительное устройство, выполненное с возможностью регулирования доставки состояния ввода при работе интерфейса пользовательского ввода, при этом вычислительное устройство содержит:
один или более машиночитаемых носителей информации;
систему обработки, функционально соединенную с одним или более машиночитаемыми носителями информации; и
интерфейс пользовательского ввода, содержащий программные инструкции, сохраненные на одном или более машиночитаемых носителях информации, которые, на основе их считывания и исполнения системой обработки, инструктируют системе обработки, по меньшей мере:
идентифицировать целевой темп для доставки состояния пользовательского ввода приложению;
определять, на основе, по меньшей мере, целевого темпа, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода; и
указывать эти один или более параметров синхронизации устройству пользовательского ввода, при этом устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно упомянутым одному или более параметрам синхронизации.
2. Устройство по п.1, при этом упомянутые один или более параметров синхронизации содержат смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода, при этом смещение передачи основывается, по меньшей мере, отчасти на запаздывании между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода.
3. Устройство по п.1, в котором один или более машиночитаемых носителей информации содержат дополнительные программные инструкции, которые, на основе их исполнения системой обработки, инструктируют системе обработки, по меньшей мере, принимать указание целевого темпа от приложения, при этом указание целевого темпа содержит указание рекуррентного события в хост-системе, исполняющей приложение, и смещение синхронизации от рекуррентного события.
4. Устройство по п.3, при этом рекуррентное событие содержит по меньшей мере одно из указателя обновления отображения, указателя кадровой синхронизации дисплея и характеристики синхронизации частоты графических кадров графического процесса хост-системы.
5. Устройство по п.1, в котором один или более машиночитаемых носителей информации содержат дополнительные программные инструкции, которые, на основе их исполнения системой обработки, инструктируют системе обработки, по меньшей мере, принимать указатель синхронизации, передаваемый устройством пользовательского ввода, который соответствует времени, когда устройство пользовательского ввода передает состояние пользовательского ввода.
6. Устройство по п.5, в котором один или более машиночитаемых носителей информации содержат дополнительные программные инструкции, которые, на основе их исполнения системой обработки, инструктируют системе обработки, по меньшей мере:
определять запаздывание между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода; и
определять, на основе целевого темпа и запаздывания, упомянутые один или более параметров синхронизации.
7. Устройство по п.5, при этом указатель синхронизации содержит монотонно изменяющееся значение счетчика, формируемое устройством пользовательского ввода и включенное в сообщения, содержащие состояние пользовательского ввода, передаваемые устройством пользовательского ввода.
8. Устройство по п.1, в котором один или более машиночитаемых носителей информации содержат дополнительные программные инструкции, которые, на основе их исполнения системой обработки, инструктируют системе обработки, по меньшей мере:
наблюдать за синхронизацией, ассоциированной с одним или более запросами от приложения, для состояния пользовательского ввода; и
на основе, по меньшей мере, синхронизации, ассоциированной с одним или более запросами, определять целевой темп, при этом целевой темп содержит, по меньшей мере, смещение синхронизации от рекуррентного события в хост-системе, исполняющей приложение.
9. Устройство по п.1, при этом устройство пользовательского ввода содержит, по меньшей мере, одно из игрового контроллера, клавиатуры, мыши, сенсорной панели, адаптивного контроллера, контроллера виртуальной реальности, контроллера дополненной реальности и сенсорного экрана.
10. Способ регулирования доставки состояния ввода при работе интерфейса пользовательского ввода в хост-системе, содержащий этапы, на которых:
идентифицируют целевой темп для доставки состояния пользовательского ввода приложению;
определяют, на основе, по меньшей мере, целевого темпа, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода; и
указывают эти один или более параметров синхронизации устройству пользовательского ввода, при этом устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно упомянутым одному или более параметрам синхронизации.
11. Способ по п.10, в котором упомянутые один или более параметров синхронизации содержат смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода, при этом смещение передачи основывается, по меньшей мере, отчасти на запаздывании между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода.
12. Способ по п.10, дополнительно содержащий этап, на котором принимают указание целевого темпа от приложения, при этом указание целевого темпа содержит указание рекуррентного события в хост-системе, исполняющей приложение, и смещение синхронизации от рекуррентного события.
13. Способ по п.12, в котором рекуррентное событие содержит по меньшей мере одно из указателя обновления отображения, указателя кадровой синхронизации дисплея и характеристики синхронизации частоты графических кадров графического процесса хост-системы.
14. Способ по п.10, дополнительно содержащий этап, на котором принимают указатель синхронизации, передаваемый устройством пользовательского ввода, который соответствует времени, когда устройство пользовательского ввода передает состояние пользовательского ввода.
15. Способ по п.14, дополнительно содержащий этапы, на которых:
определяют запаздывание между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода интерфейсом пользовательского ввода; и
определяют, на основе целевого темпа и запаздывания, упомянутые один или более параметров синхронизации.
16. Способ по п.14, в котором указатель синхронизации содержит монотонно изменяющееся значение счетчика, формируемое устройством пользовательского ввода и включенное в сообщения, содержащие состояние пользовательского ввода, передаваемые устройством пользовательского ввода.
17. Способ по п.10, дополнительно содержащий этапы, на которых:
наблюдают за синхронизацией, ассоциированной с одним или более запросами от приложения, для состояния пользовательского ввода; и
на основе, по меньшей мере, синхронизации, ассоциированной с одним или более запросами, определят целевой темп, при этом целевой темп соответствует, по меньшей мере, рекуррентному событию в хост-системе, исполняющей приложение, и смещению синхронизации от рекуррентного события.
18. Способ по п.10, в котором устройство пользовательского ввода содержит, по меньшей мере, одно из игрового контроллера, клавиатуры, мыши, сенсорной панели, адаптивного контроллера, контроллера виртуальной реальности, контроллера дополненной реальности и сенсорного экрана.
19. Система пользовательского интерфейса, выполненная с возможностью регулирования доставки состояния ввода, причем система пользовательского интерфейса, содержащая:
прикладной интерфейс, выполненный с возможностью идентифицировать предпочтительную синхронизацию доставки состояния пользовательского ввода приложению, при этом предпочтительная синхронизация доставки соответствует, по меньшей мере, рекуррентному событию в хост-системе, исполняющей приложение, и смещению синхронизации от рекуррентного события;
систему регулирования синхронизации, выполненную с возможностью определять, на основе, по меньшей мере, предпочтительной синхронизации доставки, один или более параметров синхронизации для передачи состояния пользовательского ввода от устройства пользовательского ввода; и
интерфейс ввода, чтобы указывать эти один или более параметров синхронизации устройству пользовательского ввода, при этом устройство пользовательского ввода в ответ передает состояние пользовательского ввода согласно упомянутым одному или более параметрам синхронизации.
20. Система пользовательского интерфейса по п.19, в которой система регулирования синхронизации выполнена с возможностью:
определять запаздывание между передачей состояния пользовательского ввода устройством пользовательского ввода и приемом состояния пользовательского ввода системой пользовательского ввода; и
определять, на основе запаздывания и предпочтительного момента доставки, упомянутые один или более параметров синхронизации, содержащих смещение передачи и интервал передачи для регулирования передачи последующего состояния пользовательского ввода от устройства пользовательского ввода.
RU2021128650A 2019-03-02 2020-02-24 Регулировка задержки устройств пользовательского ввода RU2815331C2 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US16/290,867 2019-03-02

Publications (2)

Publication Number Publication Date
RU2021128650A RU2021128650A (ru) 2023-04-04
RU2815331C2 true RU2815331C2 (ru) 2024-03-13

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070087836A1 (en) * 2005-08-18 2007-04-19 Pasula Markus I System and/or method for adjusting for key latency
US20150301960A1 (en) * 2012-10-04 2015-10-22 Sony Computer Entertainment America Llc Method and apparatus for improving decreasing presentation latency
RU2567378C2 (ru) * 2011-01-21 2015-11-10 Квэлкомм Инкорпорейтед Обратный канал пользовательского ввода для беспроводных дисплеев
US20160180811A1 (en) * 2014-12-23 2016-06-23 Sony Computer Entertainment America Llc Latency tester

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070087836A1 (en) * 2005-08-18 2007-04-19 Pasula Markus I System and/or method for adjusting for key latency
RU2567378C2 (ru) * 2011-01-21 2015-11-10 Квэлкомм Инкорпорейтед Обратный канал пользовательского ввода для беспроводных дисплеев
US20150301960A1 (en) * 2012-10-04 2015-10-22 Sony Computer Entertainment America Llc Method and apparatus for improving decreasing presentation latency
US20160180811A1 (en) * 2014-12-23 2016-06-23 Sony Computer Entertainment America Llc Latency tester

Similar Documents

Publication Publication Date Title
JP7494203B2 (ja) ユーザ入力デバイスの待ち時間調整
US10771565B2 (en) Sending application input commands over a network
US11553222B2 (en) Low latency wireless virtual reality systems and methods
US9052959B2 (en) Load balancing between general purpose processors and graphics processors
US20150301617A1 (en) Systems and methods for providing enhanced motion detection
US10751611B2 (en) Using a game controller as a mouse or gamepad
US9893974B2 (en) Synchronization of data for colliding bodies
CN106575302B (zh) 用于帧调步的方法和系统
US20220212102A1 (en) Method and apparatus for controlling cursor control, and related device
WO2022265766A1 (en) Updated driver parameters determined by telemetry data
CN111672132A (zh) 游戏的控制方法、控制装置、服务器和存储介质
US9497238B1 (en) Application control translation
US9111080B1 (en) Reducing input processing latency for remotely executed applications
RU2815331C2 (ru) Регулировка задержки устройств пользовательского ввода
WO2017112138A1 (en) Direct motion sensor input to rendering pipeline
WO2014097451A1 (ja) 遅延時間検出装置、遅延時間検出システム、映像表示装置、映像表示システム、演算装置、及び遅延時間検出方法
WO2013108446A1 (ja) サーバ、端末、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体