архитектура удаленной работы с графикой
Классы МПК: | G06F9/00 Устройства для программного управления, например блоки управления G06T19/20 редактирование 3D изображений, например, изменение форм или цветов, выравнивание объектов или расположение частей в определенном порядке |
Автор(ы): | КИУ Кан (US), АБДО Надим И. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2009-01-06 публикация патента:
20.09.2013 |
Изобретение относится к средствам удаленной работы с графическими приложениями. Техническим результатом является повышение стабильности удаленной работы с графическими приложениями за счет управления скоростью передачи кадров и прогрессивного текстурного рендеринга. Серверный компьютер содержит память; процессор; пользовательское пространство в памяти, включающее модуль абстракции для регулировки потребления пропускной способности путем ограничения скорости переноса кадров на основе функциональной возможности клиента и типа приложения 3D графики, при этом память и процессор принимают информацию о потере устройства, ассоциированную с пользовательским пространством, и, по приему указанной информации, инициируют процедуру удаления или повторного соединения клиента. 3 н. и 19 з.п. ф-лы, 6 ил.
Формула изобретения
1. Серверный компьютер, содержащий: память; процессор, функционально подключенный к памяти; и пользовательское пространство в памяти, которое соответствует одному или более клиентам, причем пользовательское пространство включает в себя модуль абстракции для мониторинга трафика данных, который включает в себя по меньшей мере одну команду трехмерной (3D) графики и по меньшей мере один объект 3D графики, при этом модуль абстракции дополнительно сконфигурирован регулировать потребление пропускной способности клиентом из упомянутых одного или более клиентов, ограничивая скорость переноса кадров на основе одной или более функциональных возможностей этого клиента и типа приложения 3D графики, ассоциированного с упомянутыми по меньшей мере одной командой 3D графики и по меньшей мере одним объектом 3D графики, и выделять пропускную способность клиенту с использованием прогрессивного текстурного рендеринга, при этом память и процессор выполнены с возможностью принимать информацию о потере устройства, ассоциированную с пользовательским пространством, и, по приему информации о потере устройства, инициировать процедуру удаления или повторного соединения клиентского устройства, ассоциированного с пользовательским пространством.
2. Серверный компьютер по п.1, в котором память включает в себя данные программ, в которых хранятся команды 3D графики, объекты 3D графики и потоки данных.
3. Серверный компьютер по п.1, в котором пользовательское пространство включает в себя адаптер для удаленной работы, который выясняет доступность и функциональные возможности адаптера дисплея в клиентском устройстве.
4. Серверный компьютер по п.3, в котором адаптер для удаленной работы устанавливает коммуникационный канал между модулем абстракции и плагином клиентского устройства, причем этот плагин принимает команды и объекты 3D графики.
5. Серверный компьютер по п.1, в котором модуль абстракции сконфигурирован принимать команды 3D графики и объекты 3D графики от приложения 3D графики через интерфейс прикладного программирования (API), который включает в себя функции для рендеринга 3D изображений в этом приложении 3D графики.
6. Серверный компьютер по п.1, в котором модуль абстракции присваивает идентификаторы объектам 3D графики.
7. Серверный компьютер по п.1, в котором модуль абстракции выполняет абстракцию команд 3D графики и объектов 3D графики в поток данных и посылает этот поток данных на упомянутые один или более клиентов.
8. Серверный компьютер по п.1, в котором модуль абстракции выполняет централизованное кодирование ресурсов посредством сжатия и прореживания.
9. Серверный компьютер по п.1, в котором команды 3D графики представляют собой команды высокой частоты.
10. Клиентский компьютер, содержащий: память; процессор, функционально подключенный к памяти; 3D-плагин в памяти, который принимает потоки данных, включающие в себя команды 3D графики и объекты 3D графики, и извлекает команды 3D графики с использованием объектов 3D графики в сеансе рендеринга графики, причем функциональные возможности 3D-плагина передаются на серверный компьютер для определения скорости кадров для взаимодействия с серверным компьютером; графический процессор (GPU), который выполняет рендеринг извлеченных команд 3D графики; и модуль уведомления о потере устройства, который уведомляет серверный компьютер о том, когда клиентским устройством потеряно соединение с серверным компьютером, при этом 3D-плагин сконфигурирован, после отсоединения клиентского компьютера, поддерживать сеанс рендеринга графики до тех пор, пока не будет установлено повторное соединение.
11. Клиентский компьютер по п.10, в котором 3D-плагин выполняет разбор потоков данных и извлекает команды 3D графики.
12. Клиентский компьютер по п.10, в котором 3D-плагин создает объекты 3D графики посредством идентификации описателей, ассоциированных с объектами 3D графики, в потоках данных.
13. Клиентский компьютер по п.12, в котором описатели включают в себя записи, включающие в себя адрес ресурса, ассоциированного с графическим приложением.
14. Клиентский компьютер по п.10, в котором 3D-плагин представляет 3D графику в полноэкранном пользовательском интерфейсе.
15. Клиентский компьютер по п.10, в котором 3D-плагин посылает информацию синхронизации на сервер.
16. Клиентский компьютер по п.10, в котором 3D-плагин выполняет рендеринг выходных графических данных на основе протокола рендеринга только на стороне клиента.
17. Клиентский компьютер по п.10, в котором GPU формирует посредническое окно для представления геометрических изменений, имеющих место в окне на серверном компьютере, который посылает потоки данных.
18. Машиночитаемый носитель информации, на котором сохранены машиночитаемые инструкции, которые при их исполнении процессором предписывают компьютеру выполнять способ, содержащий этапы, на которых: принимают и идентифицируют одну или более команд графического приложения; передают эти одну или более команд графического приложения в графические драйверы; осуществляют абстракцию одной или более команд приложения и объектов, сформированных графическими драйверами на основе упомянутых одной или более команд графического приложения, в поток данных; когда от клиентского компьютера принято сообщение о потере устройства, инициируют процесс восстановления от потери устройства для повторной синхронизации состояния сервера на упомянутом компьютере и состояния клиента на клиентском компьютере; и регулируют потребление пропускной способности клиентским компьютером посредством ограничения скорости кадров на основе типа приложения, ассоциированного с упомянутыми командами приложения и объектами, и одной или более функциональных возможностей клиентского устройства.
19. Машиночитаемый носитель информации по п.18, при этом передача выполняется через интерфейс прикладного программирования.
20. Машиночитаемый носитель информации по п.18, при этом абстракция включает в себя абстракцию сформированных команд и объектов в виде скрытых данных.
21. Машиночитаемый носитель информации по п.18, в котором способ дополнительно содержит этап, на котором посылают потоки данных через сеть на один или более клиентов.
22. Машиночитаемый носитель информации по п.21, дополнительно содержащий этап, на котором сжимают потоки данных.
Описание изобретения к патенту
Предшествующий уровень техники
Графическое программное обеспечение для создания высококачественных графических приложений, таких как редактирование фотографий, игры и т.п., может включать в себя анимацию и другие функциональные средства, которые задействуют сложные вычисления. В типичном случае, такие высококачественные графические приложения задействуют разнообразные методики для обеспечения аппаратной поддержки графики с целью управления сложными вычислениями. Например, графические приложения, работающие на операционной системе Microsoft® Windows®, могут задействовать технологии рендеринга Direct3D для обеспечения аппаратной поддержки графики. Direct3D - это интерфейс прикладного программирования (API) для трехмерной (3D) графики, который включает в себя команды для рендеринга 3D изображений в графических приложениях.
Хотя большая часть персональных компьютеров (PC) на текущий момент обеспечивают такую аппаратную поддержку графики, нет эффективного пути удаленной работы с такими технологиями. Например, в сеансах удаленной работы графические приложения могут не выполнять масштабирование согласно размеру окна или количеству пользовательских соединений и также могут вызывать проблемы со стабильностью. Помимо этого, ускорение графики может не быть доступно на серверных компьютерах, эксплуатирующих видеографический адаптер (VGA), или на виртуальных машинах. В результате, графические приложения, исполняющиеся поверх сеансов удаленной работы, могут привести к неудовлетворительному восприятию на стороне конечных пользователей.
Сущность изобретения
Это краткое изложение сущности изобретения приведено для представления в упрощенном виде концепций, связанных с архитектурой удаленной работы с графикой, которые дополнительно описываются ниже в подробном описании. Это краткое изложение сущности изобретения не предназначено ни для указания существенных признаков заявляемого изобретения, ни для использования при определении объема заявляемого изобретения.
Согласно варианту осуществления, приложение трехмерной (3D) графики, размещенное на серверном компьютере, используется удаленным клиентским компьютером. Графика, ассоциированная с этим приложением 3D графики, создается и визуализируется на удаленном клиентском компьютере посредством использования 3D команд и 3D объектов, соответствующих графике, абстрагированной в потоки данных на удаленном сервере и посланной на клиентский компьютер. 3D команды и 3D объекты извлекаются из потоков данных и исполняются для создания графических изображений на клиентском компьютере.
Перечень фигур чертежей
Ниже приводится подробное описание со ссылкой на сопровождающие чертежи. На чертежах самая левая цифра(ы) ссылочного номера соответствует чертежу, на котором этот ссылочный номер появился в первый раз. Использование одних и тех же ссылочных позиций на разных чертежах указывает на подобные или идентичные элементы.
Фиг. 1 - блок-схема, показывающая иллюстративное сетевое окружение для реализации архитектуры удаленной работы с 3D графикой.
Фиг. 2 - блок-схема, показывающая иллюстративный вычислительный сервер для реализации удаленного рендеринга 3D изображений.
Фиг. 3 - блок-схема, показывающая иллюстративный клиент для реализации удаленного рендеринга 3D изображений.
Фиг. 4 - блок-схема, показывающая иллюстративную реализацию архитектуры удаленной работы с 3D графикой.
Фиг. 5 - логическая блок-схема, показывающая иллюстративный процесс для абстракции команд в приложениях 3D графики.
Фиг. 6 - логическая блок-схема, показывающая иллюстративный процесс для рендеринга 3D изображений.
Наилучший режим реализации изобретения
Данное раскрытие относится к способам и системам для реализации архитектуры удаленной работы, чтобы обеспечить рендеринг трехмерных или 3D изображений на расположенном удаленным образом клиенте и достичь удовлетворительного уровня пользовательского восприятия при сеансе удаленной работы. В типичном случае, в окружении удаленной работы, таком как окружение TerminalServices®, любые команды приложений, интенсивно работающих с графикой, такие как команды Direct3D или D3D, исполняются на сервере. После исполнения таких команд выполняется рендеринг выходных данных, таких как графические изображения, с помощью графического процессора (GPU) сервера. Сформированные посредством рендеринга графические изображения затем посылаются на клиентское устройство в виде растрового изображения и отображаются через дисплейное устройство на стороне клиента. Работа приложений Direct3D или приложений трехмерной графики описанным способом ограничивается архитектурными факторами, такими как доступность сервера, масштабируемость, стабильность сервера, и вызывает неудовлетворительное восприятие на стороне конечных пользователей. В частности, архитектурные ограничения могут включать в себя отсутствие управления скоростью кадров и несоответствием прогрессивного текстурного рендеринга при использовании сжатия и других специализированных методов.
Методики для реализации архитектуры удаленной работы с Direct3D для обеспечения возможности рендеринга 3D графических изображений на удаленном клиенте раскрыты в нижеследующем описании. В одном варианте реализации, вместо рендеринга графических изображений на серверном компьютере и последующей посылки результирующих растровых изображений на клиентское устройство, команды D3D могут быть посланы непосредственно на клиентское устройство, которое может затем исполнить эти команды D3D. GPU на стороне клиентского устройства выполняет рендеринг выходных данных, таких как графические изображения, и отображает эти изображения на стороне клиента. Таким образом, рендеринг графических изображений может быть выполнен на клиентском устройстве без задействования GPU на стороне сервера. Помимо этого, раскрыты методики для реализации способов управления скоростью кадров и прогрессивного текстурного рендеринга для преодоления вышеупомянутых архитектурных ограничений.
В нижеследующем описании раскрыты способы и системы для реализации архитектуры удаленной работы с Direct3D для рендеринга 3D графических изображений на клиентском устройстве.
Иллюстративное сетевое окружение
Фиг. 1 показывает иллюстративное сетевое или компьютерное окружение 100 для реализации архитектуры удаленной работы с 3D графикой или Direct3D (D3D), в которой могут быть реализованы раскрываемые здесь методики и которая может быть показательной, в целом или частично, в отношении описываемых здесь элементов. Компьютерное окружение 100 является примером компьютерного окружения и не подразумевается налагающим какие-либо ограничения в отношении объема использования и/или функциональных возможностей используемых компьютерных или сетевых архитектур.
Компьютерное окружение 100 включает в себя множество клиентских устройств 102-1, 102-2, 102-3, , 102-N (в совокупности упоминаемых как клиенты 102). Клиенты 102 связаны с возможностью осуществления связи и серверным компьютером или сервером 106 через сеть 104. Клиенты 102 могут представлять собой любые из разнообразия известных компьютерных устройств, например, настольный PC, ноутбук или портативный компьютер, персональное цифровое информационное устройство (PDA), рабочую станцию, мобильное компьютерное устройство или Интернет-устройство и т.п. Каждый клиент 102 может включать в себя память, в которой хранятся различные программные модули для рендеринга. Например, клиент 102-1 включает в себя память 108, в которой могут храниться различные программные модули 110, такие как подключаемый программный модуль 112 D3D (D3D-плагин), и другие модули для осуществления рендеринга.
Сеть 104 может быть беспроводной или проводной сетью, либо их комбинацией. Сеть 104 может быть также представлена как совокупность отдельных сетей, соединенных между собой и функционирующих как единая большая сеть (например, Интернет или интранет). Примеры таких отдельных сетей включают в себя, но не в ограничительном смысле, локальные сети (LAN), глобальные сети (WAN) и городские сети (MAN). Помимо этого, такие отдельные сети также могут быть беспроводными или проводными сетями, либо их комбинацией.
Сервер 106 может быть, например, компьютерным устройством общего назначения или кластером серверов и мейнфреймов. Сервер 106 включает в себя память, имеющую пользовательское пространство 116, которое соответствует клиенту, например, клиенту 102-1. Пользовательское пространство 116 дополнительно включает в себя модуль 118 абстракции D3D и адаптер 120 для удаленной работы. Адаптер 120 для удаленной работы на сервере 106 устанавливает соединение с клиентом для отправки графических команд, абстрагируемых модулем 118 абстракции D3D, для рендеринга.
В одной реализации модуль 118 абстракции D3D исполняется на уровне абстракции терминального сервера (TS)/D3D. Уровень абстракции D3D реализуется между физическим аппаратным обеспечением сервера 106 и графическими приложениями, такими как приложения D3D. Этот уровень абстракции скрывает детали реализации аппаратного обеспечения от таких приложений.
Модуль 118 абстракции D3D принимает одну или более команд D3D и один или более объектов D3D от приложения D3D, когда клиент, такой как клиент 102-1, использует приложение D3D на сервере 106 поверх удаленного сеанса. Модуль 118 абстракции D3D также абстрагирует обмен данными между приложением D3D и графическим аппаратным обеспечением, которое исполняет приложение D3D.
Модуль 118 абстракции D3D абстрагирует команды D3D и объекты D3D в потоки данных, которые могут быть отправлены через сеть 104. Модуль 118 абстракции D3D обеспечивает таким образом серверу 106 возможность послать абстрагированные команды и объекты в виде потоков данных на один или более клиентов 102. Потоки данных посылаются через сеть на основе различных протоколов удаленной работы, таких как протокол удаленного рабочего стола (RDP), протокол удаленной работы с D3D и т.п.
Для отправки потоков данных с сервера 106 на клиент 102-1, адаптер 120 для удаленной работы устанавливает коммуникационный канал с D3D-плагином 112 клиента 102-1 через сеть 104. Адаптер 120 для удаленной работы проверяет доступность и функциональные возможности адаптера дисплея на клиенте 102-1 посредством D3D-плагина 112. По приему подтверждения от D3D-плагина 112 адаптер 120 для удаленной работы устанавливает коммуникационный канал между модулем 118 абстракции D3D и D3D-плагином 112.
Модуль 118 абстракции D3D посылает абстрагированные команды D3D и объекты D3D, ассоциированные с приложением D3D, в D3D-плагины на клиенте 102-1. В одном варианте реализации модуль 118 абстракции D3D посылает абстрагированные команды D3D и объекты D3D в виде скрытых данных в D3D-плагин 112.
На стороне клиента (т.е. на клиенте 102) потоки данных принимаются и обрабатываются одним или более D3D-плагинами, такими как D3D-плагин 112. D3D-плагин 112 принимает потоки данных и выполняет разбор этих потоков данных для извлечения команд D3D. Помимо этого, D3D-плагин создает фактические объекты D3D, исполняет команды D3D и осуществляет рендеринг выходных данных, таких как графические изображения, используя GPU на стороне клиента.
Иллюстративный сервер
На Фиг. 2 представлен иллюстративный сервер 106 для реализации удаленного рендеринга 3D изображений. Сервер 106 может быть компьютерным устройством, которое включает в себя процессор 202, сетевой интерфейс(ы) 204, интерфейс(ы) 206 ввода/вывода и память 114. Сетевой интерфейс(ы) 204 может включать в себя один или более портов для соединения ряда компьютерных устройств, таких как клиенты 102, друг с другом или с сервером 106. Сетевой интерфейс(ы) 204 может обеспечивать связь с широким разнообразием типов сетей и протоколов, включая проводные сети (например, LAN, кабельные и т.п.) и беспроводные сети (например, WLAN, сотовые, спутниковые и т.п.).
Интерфейс(ы) 206 ввода/вывода может включать в себя, например, порт сканера, порт мыши, порт клавиатуры и т.п. для приема данных от клиентов 102 и отправки данных на клиенты 102. В одном варианте осуществления интерфейс(ы) 206 ввода/вывода сервера 106 посылает данные, такие как команды D3D и объекты D3D, через сеть 104. Интерфейс(ы) 206 ввода/вывода сервера 106 принимает данные от одного или более клиентов, такие как данные или контент, которые представляют сформированные посредством рендеринга графические изображения, в целях синхронизации.
Память 114 может представлять собой любые машиночитаемые носители в форме как энергозависимой памяти, такой как оперативное запоминающее устройство (ОЗУ, RAM), так и энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ, ROM) и флэш-RAM. Память 114 в типичном случае включает в себя данные и/или программные модули, которые являются непосредственно доступными для процессора 202 и/или обрабатываться процессором 202 в текущий момент.
В одном варианте реализации память 114 включает в себя пользовательское пространство 116, соответствующее каждому из клиентов 102, и данные 208 программ. Каждое пользовательское пространство 116 может включать в себя модуль 118 абстракции D3D и адаптер 120 для удаленной работы в дополнение к другим модулям 210. В данных 208 программ могут храниться параметры, включая команды 212 D3D, объекты 214 D3D, потоки 216 данных и другие данные 218 программ.
Модуль 118 абстракции D3D может быть сконфигурирован для мониторинга трафика данных, который включает в себя команды 212 D3D и объекты 214 D3D. Как описывается более подробно ниже, модуль 118 абстракции D3D может быть сконфигурирован для приема команд 212 D3D и объектов 214 D3D от приложения D3D через API D3D. API D3D включает в себя функции, которые могут использоваться для рендеринга 3D изображений в приложении D3D. В другом варианте реализации модуль 118 абстракции D3D может быть сконфигурирован принимать команды 212 D3D и объекты 214 D3D непосредственно от приложения D3D.
В одном варианте реализации принятые команды 212 D3D могут быть командами высокой частоты, которые требуют одного или более сигнальных проходов по сети в прямом и обратном направлении от клиентов 102. Такие сигнальные проходы по сети в прямом и обратном направлении могут привести к задержке в исполнении команд высокой частоты. Во избежание таких сигнальных проходов по сети в прямом и обратном направлении модуль 118 абстракции D3D может быть сконфигурирован назначать описатель или идентификатор каждому из объектов D3D на уровне абстракции. Модуль 118 абстракции D3D затем записывает этот описатель в потоки 216 данных совместно с другими параметрами для создания объекта D3D на стороне клиента. Описатели могут храниться в других данных 218 программ в памяти 114 сервера 106.
Модуль 118 абстракции D3D абстрагирует команды 212 D3D и объекты 214 D3D в потоки 216 данных и посылает их через сеть 104. С этой целью, адаптер 120 для удаленной работы выясняет доступность и функциональные возможности адаптера дисплея клиента 102-1. По приему подтверждения доступности и функциональных возможностей от D3D-плагина 112 на клиенте 102-1 адаптер 120 для удаленной работы устанавливает коммуникационный канал между модулем 118 абстракции D3D и D3D-плагином 112. Модуль 118 абстракции D3D посылает абстрагированные команды 212 D3D и объекты 214 D3D в D3D-плагин 112 клиента 102-1 через этот коммуникационный канал.
В дополнение к абстракции, модуль 118 абстракции D3D может быть сконфигурирован для выполнения централизованного кодирования ресурсов. Централизованное кодирование ресурсов подразумевает известные в технике методы сжатия и прореживания для кодирования доступных ресурсов D3D. Это обеспечивает эффективное использование пропускной способности сервера для множества приложений и повторных соединений. Например, приложение D3D может использовать ресурсы D3D, такие как карта текстур, данные сетки или нормальное растровое изображение, размер которых может превышать доступную пропускную способность. В таких случаях модуль 118 абстракции D3D задействует известные методы сжатия и/или прореживания для уменьшения размера ресурсов. Процесс кодирования ресурсов может быть централизован, так чтобы могло выполняться перманентное кэширование в масштабе всей системы для использования пропускной способности сервера 106 эффективным образом.
Иллюстративный клиент
Фиг. 3 показывает иллюстративный клиент 102 для реализации удаленного рендеринга 3D изображений. Иллюстративный клиент 102 может быть любым из клиентов 102, например, клиентом 102-1 и включает в себя процессор 302, сетевой интерфейс(ы) 304, интерфейс(ы) 306 ввода/вывода, память 108 и устройство(а) 310 ввода/вывода. Сетевой интерфейс(ы) 304 обеспечивает связь между клиентами 102 по сети 102.
В иллюстративном варианте осуществления сетевой интерфейс(ы) 304 может включать в себя один или более портов для соединения клиента 102-1 либо с сервером 106, либо с клиентами 102, отличными от клиента 102-1. Сетевой интерфейс(ы) 304 может обеспечивать связь с широким разнообразием типов сетей и протоколов, включая проводные сети (например, LAN, кабельные и т.п.) и беспроводные сети (например, WLAN, сотовые, спутниковые и т.п.).
Интерфейс(ы) 306 ввода/вывода может включать в себя, например, порт сканера, порт мыши, порт клавиатуры и т.п. для приема данных от клиентов 102 и посылки данных на клиенты 102. В одном варианте реализации интерфейс(ы) 306 ввода/вывода клиента 102-1 принимает данные, такие как, например, команды 212 D3D и объекты 214 D3D, через сеть 104.
Интерфейс(ы) 306 ввода/вывода клиента 102-1 посылает данные на сервер 106, такие как данные или контент, которые представляют собой сформированные посредством рендеринга графические изображения, в целях синхронизации. Интерфейс(ы) 306 ввода/вывода может отображать данные, такие как сформированные посредством рендеринга графические изображения, посредством устройств 310 ввода/вывода.
Память 108 может представлять собой любые машиночитаемые носители в форме как энергозависимой памяти, такой как оперативное запоминающее устройство (ОЗУ, RAM), так и энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ, ROM) и флэш-RAM. Память 108 включает в себя данные и/или программные модули, которые являются непосредственно доступными для процессора 302 и/или обрабатываться процессором 302 в текущий момент. В иллюстративном варианте реализации память 108 включает в себя программные модули 110 и данные 308 программ. Программные модули 110 могут включать в себя D3D-плагин 112 и другие модули 312. В данных 208 программ могут храниться параметры, включая потоки 314 данных, графические изображения 316 и другие данные 318 программ.
D3D-плагин 112 принимает потоки 314 данных, которые включают в себя команды 212 D3D и объекты 214 D3D, и извлекает команды 212 D3D. Кроме того, D3D-плагин 112 исполняет команды 212 D3D и выполняет рендеринг выходных графических изображений посредством использования GPU на стороне клиента. В одном варианте реализации D3D-плагин 112 клиента 102-1 может быть сконфигурирован принимать потоки 314 данных с сервера через сеть 104. D3D-плагин 112 может быть сконфигурирован выполнять разбор потоков 314 данных, используя любые методы разбора, известные в технике, и извлекать команды 212 D3D из потоков 314 данных.
D3D-плагин 112 может быть сконфигурирован создавать объекты 214 D3D с использованием описателей, принятых наряду с потоками 314 данных. Как обсуждалось выше, описатель имеет запись, которая включает в себя адрес ресурса, ассоциированного с графическим приложением, таким как приложение D3D, с тем чтобы объекты, такие как объекты 214 D3D, могли идентифицироваться, исследоваться, создаваться и/или модифицироваться. Следовательно, объектам D3D могут назначаться описатели для создания фактических объектов 214 D3D на стороне клиента посредством D3D-плагина 112. D3D-плагин 112 может затем исполнять команды 212 D3D и выполнять рендеринг графических изображений 316, используя GPU на клиенте. Рендеринг графических изображений 316 может выполняться посредством методов рендеринга, известных в технике.
В дополнение к рендерингу D3D-плагин 112 может быть сконфигурирован отслеживать изменения в геометрии окна, отображаемого на рабочем столе сервера 106, чтобы соответственным образом изменить представление рабочего стола сервера на клиенте 102-1. Изменения в геометрии окна могут включать в себя изменение размера окна, перемещение или позиционирование окна и/или изменения видимой области на рабочем столе сервера 106.
Для поддержки изменений в геометрии окна посредническое окно может использоваться на клиенте 102-1 для воспроизведения геометрических изменений, имеющих место в окне сервера 106. Посредническое окно гарантирует возможность взаимодействия с любым окном, активируемом в том же самом сеансе, например, окнами на сервере 106 и окнами на клиентах 102. Посредническое окно может организовываться на клиентах 102, например, когда функциональная возможность компонования рабочего стола блокируется. Компонование рабочего стола - это функциональная возможность, изменяющая способ, которым пиксели графического изображения отображаются на экране дисплея клиента, и управление ею может осуществляться менеджером (средством управления) рабочего стола сервера 106.
D3D-плагин 112 может также быть сконфигурирован представлять графику Direct3D в полноэкранном эксклюзивном режиме на стороне клиента 102, например, на клиенте 102-1. Полноэкранный эксклюзивный режим отображения автоматически захватывает, устанавливает/восстанавливает разрешение экрана и формат пикселов без вмешательства пользователя. Клиентское окно может быть простым окном, используемым для отображения изображений. Однако то, что приложение Direct3D работает в полноэкранном эксклюзивном режиме отображения, может не поддерживаться простым форматом окна. D3D-плагин 112 представляет графику при полноэкранном эксклюзивном режиме с полноэкранным представлением в окне клиентов, чем усиливается пользовательское восприятие.
D3D-плагин 112 может быть сконфигурирован посылать информацию, относящуюся к сформированным посредством рендеринга графическим изображениям 316, на сервер в случае, когда сервер запрашивает эту информацию для синхронизации. В одном варианте реализации D3D-плагин 112 выполняет рендеринг выходных графических изображений в окне клиента 102-1 на основе протокола рендеринга только на стороне клиента. В таком случае, подлежащий рендерингу контент сохраняется на клиентах 102 по умолчанию, и он также может быть послан на сервер 106 в случае, когда серверу требуется этот контент. Следовательно, D3D-плагин 112 может быть дополнительно сконфигурирован допускать отслеживание и синхронизацию между воспринимаемым невидимым рабочим столом сервера 106 и видимым представлением рабочего стола сервера 106 на стороне клиента 102.
Кроме того, для достижения синхронизации и связности контента D3D-плагин 112 может быть дополнительно сконфигурирован отслеживать различные команды 212 Direct3D, выданные с сервера 106, и считывать/записывать доступы, выполненные в отношении рабочих столов клиентов 102. D3D-плагин 112 может дополнительно поддерживать обновленную информацию о каждом пикселе, посланном/принятом как сервером 106, так и клиентами 102, такими как клиент 102-1. Информация о пикселях может обновляться для синхронизации, например, когда заблокировано компонование рабочего стола.
Иллюстративная архитектура
Фиг. 4 показывает иллюстративную реализацию архитектуры 400 удаленной работы с Direct3D (D3D). Архитектура 400 представляет собой логический вид архитектуры удаленной работы с D3D, показывающий связанные компоненты, используемые для рендеринга графических изображений в сеансах удаленной работы. Архитектура 400 может включать в себя группу компонентов, которые функционируют на стороне 402 сервера (например, на сервере 106). Компоненты стороны сервера 402 принимают команды D3D от приложения D3D, абстрагируют команды D3D и объекты D3D в виде потоков данных, которые посылаются через сеть на сторону 404 клиента (например, на клиент 102). Сторона 404 клиента включает в себя группу компонентов, связанных с клиентом 102, таким как клиент 102-1. Компоненты на стороне 404 клиента принимают поток данных, извлекают команды D3D, создают фактические объекты D3D, исполняют команды D3D и выполняют рендеринг выходных графических изображений на стороне клиента. Архитектура 400 может дополнительно включать в себя компоненты, к которым осуществляется доступ со стороны сервера 106 или клиентов 102 в том же самом сеансе, упоминаемые как пространство 406 сеанса, и компоненты, к которым осуществляется доступ со стороны сервера 106 или клиентов 102 в других сеансах, упоминаемые как глобальное пространство 408.
В одном варианте осуществления приложение 410 D3D на стороне 402 сервера принимает одну или более команд 212 D3D в качестве ввода от пользователей. Приложение 410 D3D может быть приложением высококачественной графики, таким как игровое приложение, которое задействует сложные вычисления. Для таких приложений команды 212 D3D и объекты 214 D3D абстрагируются в виде потоков 216 данных на уровне 412 абстракции терминального сервера Terminal Server® TS/D3D. В одном варианте реализации модуль 118 абстракции D3D может исполнять на уровень 412 абстракции терминального сервера Terminal Server® TS/D3D для абстракции команд и объектов. Кроме того, модуль 118 абстракции D3D присваивает описатели одному или более из объектов 214 D3D, так чтобы фактические объекты 214 D3D могли быть созданы используя эти описатели на клиентской стороне.
Для абстракции команд 212 D3D и объектов D3D модуль 118 абстракции D3D сообщается с API 414 D3D; однако, в ряде случаев приложения могут использовать GPU стороны сервера (т.е. локальный драйвер 416 GPU), если он доступен. Если это так (либо по умолчанию согласно политике операционной системы (OS)), драйвер 416 GPU может присутствовать локальным образом на сервере 106 и может сообщаться с процессом 418 Win32k. Иными словами, адаптер 120 для удаленной работы, представляющий удаленный GPU на клиенте (например, клиентах 120, таких как клиент 120-1), может функционировать бок о бок с присутствующим локальным драйвером 416 GPU; однако, локальный драйвер 416 GPU может не присутствовать для функционирования в этой архитектуре удаленной работы. Локальный драйвер 416 GPU иллюстрирует то, как архитектура удаленной работы может быть интегрирована с существующей локальной графической архитектурой.
Процесс 418 Win32k - это процесс ядра операционной системы Widows®, обеспечивающий абстракцию самого низкого уровня для вычислительных ресурсов, таких как память, процессор(ы) и устройства ввода/вывода. Процесс 418 Win32k сообщается с приложением 420 интерфейса графических устройств (GDI), которое выполняет задачи, связанные с графикой. Приложение 420 GDI может представлять собой интерфейс операционной системы Microsoft® Widows®, используемый для представления графических объектов и передачи графических объектов на устройства вывода, такие как мониторы и принтеры. Приложение 420 GDI может выполнять задачи, связанные с графикой, такие как отрисовка линий и кривых и визуализация шрифтов.
В одном варианте реализации для выполнения таких связанных с графикой задач приложение 420 GDI использует процесс 422 GDI32. Процесс 422 GDI32 включает в себя функции для относящегося к операционной системе Widows® GDI сервера для создания объектов и информации процесса для отображения изображений в окне дисплея клиента 102. Процесс 422 GDI32 выполняет функции, связанные с графикой, такие как создание объектов 214 D3D для приложений 410 D3D.
После создания объектов 214 D3D команды 212 D3D и объекты 214 D3D передаются приложению 410 D3D и API 414 D3D. Во время этой передачи модуль 118 абстракции D3D на уровне 412 абстракции D3D абстрагирует команды 212 D3D и объекты 214 D3D в потоки 216 данных. Модуль 118 абстракции D3D также абстрагирует описатели объектов 214 D3D в потоки 216 данных.
Модуль 118 абстракции D3D посылает потоки 216 данных на клиенты 102 через сеть 104. Для этого, адаптер 120 для удаленной работы выясняет доступность и функциональные возможности адаптеров дисплея клиентов 102, таких как клиент 102-1. По приему подтверждения от D3D-плагина 112 клиента 102-1, адаптер 120 для удаленной работы устанавливает коммуникационный канал для посылки потоков 216 данных через сеть 104.
На стороне 404 клиента D3D-плагин 112 принимает потоки 314 данных через коммуникационный канал, установленный адаптером 120 для удаленной работы. Потоки 314 данных, принимаемые D3D-плагином 112, включают в себя команды 212 D3D, объекты 214 D3D и описатели для воссоздания фактических объектов 214 D3D. D3D-плагин 112 выполняет разбор принятых потоков 314 данных, используя любые методы разбора, известные в технике, и извлекает команды 212 D3D и объекты 214 D3D.
D3D-плагин 112 затем исполняет команды 212 D3D для отображения графики, ассоциированной с приложением 410 D3D. Для этого, D3D-плагин 112 сообщается с API 424 D3D клиентов 102, таких как клиент 102-1. API 424 D3D передает команды 212 D3D и объекты 214 между D3D-плагином 112 и графическим аппаратным обеспечением, которое исполняет графические приложения. API 424 D3D также включает в себя команды для рендеринга графических изображений, которые могут использоваться для отображения графики.
API 424 D3D дополнительно взаимодействует с процессом 426 Win32k для выполнения связанных с графикой задач, таких как создание фактических объектов 214 D3D с использованием описателей. Процесс 426 Win32k (процесс ядра операционной системы Widows®) может быть подобен процессу 418 Win32k сервера 106. Для создания фактических объектов 214 D3D процесс 426 Win32k взаимодействует с процессом 428 GDI32, процессом интерфейса графических устройств, который создает фактические объекты 214 D3D.
После создания фактических объектов 214 D3D процесс 428 GDI32 передает объекты 214 D3D в D3D-плагин 112 через API 424 D3D. Затем, D3D-плагин 112 исполняет команды 212 D3D, используя объекты 214 D3D, и выполняет рендеринг графических изображений 316. D3D-плагин 112 выполняет рендеринг графических изображений 316 аналогично драйверу GPU. Сформированные посредством рендеринга графические изображения 316 затем отображаются через устройства 310 ввода/вывода клиента 102-1. Согласно варианту реализации каждый из клиентов 102 может быть удаленным клиентом 430 терминального сервера. D3D-плагины на клиентах 102 могут поддерживать объекты 214 D3D в силе, в сеансе, в течение процесса рендеринга, даже когда клиенты 102 отсоединяются и пытаются повторно подсоединиться позже. После успешного повторного подсоединения сервер 106 и клиенты 102 возобновят исполнение приложения 410 D3D.
Согласно варианту реализации, отображение графики приложения 410 D3D подразумевает использование одного или более ресурсов D3D, таких как карта текстур, нормальный растр и т.п., которые могут совместно использоваться одним или более из клиентов 102. В целях совместного использования ресурсов D3D-плагин 112 может быть сконфигурирован для присвоения описателя или идентификатора каждому из ресурсов D3D; однако, использование описателей может потребовать от клиентов одного или более сигнальных проходов по сети в прямом и обратном направлении. Во избежание постоянных сигнальных проходов по сети в прямом и обратном направлении централизованный серверный компонент может использоваться в качестве посредника для клиентов, чтобы обеспечить присвоенные описатели. Например, драйвер 432 устройства протокола удаленного рабочего стола (RDPDD) или драйвер 434 Win32k протокола удаленного рабочего стола (RDPWD) может использоваться в пространстве 406 сеанса или глобальном пространстве 408 в качестве посредника для клиентов 102.
Кроме того, один или более методов, таких как методы прогрессивного текстурного рендеринга, методы управления скоростью кадров и методы автоматического повторного соединения, могут быть реализованы в архитектуре удаленной работы с D3D. В одном варианте реализации приложение 410 D3D может также иметь дело с ресурсами D3D, такими как сетки и текстуры, которые потребляют больше пропускной способности сети для достижения более удовлетворительного восприятия на стороне конечных пользователей. В таких случаях, метод прогрессивного текстурного рендеринга может быть сконфигурирован для эффективного распределения пропускной способности и достижения более качественного восприятия на стороне конечного пользователя.
Далее, модуль 118 абстракции D3D может использовать способы управления скоростью кадров, которые позволяют серверу 106 регулировать потребление пропускной способности посредством ограничения скорости переноса кадров на основе типа приложения 410 D3D. Такие методы управления скоростью кадров могут улучшить масштабируемость и согласованность среди множества соединений и приложений.
Помимо этого, методы автоматического повторного соединения могут быть реализованы для обеспечения прозрачного удаленного восприятия автоматического повторного соединения от приложения 410 D3D. Например, когда клиент 102 становится отсоединенным во время исполнения приложения 410 D3D, новый клиент, который выполнен с возможностью поддерживать функционирующее приложение 410 D3D, может быть подсоединен. В одном варианте реализации, во время повторного соединения нового клиента приложение 410 D3D принимает сообщение, такое как DEVICE_LOST (УСТРОЙСТВО ПОТЕРЯНО) или DEVICE_REMOVED (УСТРОЙСТВО УДАЛЕНО). Модуль 118 абстракции D3D затем восстанавливает приложение 410 D3D в состояние, предшествующее отсоединению, и возобновляет исполнение приложения 410 D3D. В другом варианте реализации, во время повторного соединения нового клиента, модуль 118 абстракции D3D выполняет полную абстракцию команд 212 D3D и объектов D3D, которые требуются для воссоздания содержимого объектов на стороне 402 сервера.
Дополнительные методы могут быть использованы для гарантирования того, что сервер 106 не накапливает неограниченное количество команд 212 D3D во время отсоединенного сеанса. В настоящем варианте реализации, чтобы избежать неограниченного количества команд 212 D3D на сервере 106, один или более потоков ядра, которые вызывают приложение 410 D3D, могут быть заблокированы.
Иллюстративные процессы
Ниже описываются иллюстративные способы реализации архитектуры удаленной работы с Direct3D. Некоторые из этих способов могут, но не в обязательном порядке, быть реализованы, по меньшей мере частично, в архитектуре, такой как показана на Фиг. 1-4. Также следует понимать, что некоторые действия в этих способах не обязательно должны выполняться в описанном порядке, могут быть изменены и/или могут быть вообще пропущены, в зависимости от обстоятельств.
Фиг. 5 иллюстрирует процесс 500 для абстракции команд в приложениях графики D3D на стороне сервера. Порядок, в котором иллюстративный процесс 500 описывается, не следует воспринимать как ограничение, и любое количество описываемых этапов способа может быть скомбинировано в любом порядке для реализации этого способа или альтернативного способа. Кроме того, отдельные этапы могут быть удалены из способа не отступая от сущности и объема описываемого здесь изобретения. Помимо этого, способ может быть реализован в любом подходящем аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или их комбинации.
На этапе 502 одна или более команд графического приложения могут быть идентифицированы и приняты от графического приложения. Модуль 118 абстракции D3D может выполнять мониторинг и прием команд графического приложения от приложения 410 D3D на уровне 412 абстракции D3D.
На этапе 504 команды приложения передаются в драйверы графического аппаратного обеспечения через API. Модуль 118 абстракции D3D может передавать принятые команды 212 драйверу графического аппаратного обеспечения через API 414 D3D.
На этапе 506 команды приложения и объекты, сформированные драйвером графического аппаратного обеспечения, абстрагируются в поток данных. Модуль 118 абстракции D3D может абстрагировать сформированные команды 212 D3D и объекты 214 D3D в виде скрытых данных в потоках 216 данных, подлежащих отправке через сеть 104. Затем, модуль 118 абстракции D3D присваивает описатель или идентификатор одному или более объектам D3D. Модуль 118 абстракции D3D записывает описатель в потоки 216 данных наряду с другими параметрами, которые могут использоваться для создания объектов 214 D3D на клиенте 102-1.
На этапе 508 потоки данных посылаются через сеть клиенту. Модуль 118 абстракции D3D может посылать потоки 216 данных одному или более клиентам 102, например, клиенту 102-1. Потоки 216 данных затем принимаются D3D-плагином 112 клиента 102-1 в качестве потоков 314 данных.
В одном варианте реализации команды 212 D3D и объекты 214 D3D в потоках 216 данных могут быть сжаты с использованием любых методик сжатия и прореживания, известных в технике. Такие методики могут использоваться, если, например, ресурсы D3D, такие как текстуры, данные сеток и т.п., являются большими по размеру и не согласуются с пропускной способностью сети 104. Сжатые ресурсы D3D могут быть затем посланы по сети 104 через адаптер 120 для удаленной работы.
Адаптер 120 для удаленной работы обеспечивает модулю 118 абстракции D3D возможность сообщаться с D3D-плагином 112 клиента 102-1. Для этого, адаптер 120 для удаленной работы проверяет статус доступности и функциональных возможностей адаптера дисплея клиента 102-1. По приему подтверждения от D3D-плагина 112 адаптер 120 для удаленной работы устанавливает коммуникационный канал между уровнем 412 абстракции D3D и D3D-плагином 112. Модуль 118 абстракции D3D посылает потоки 216 данных через установленный коммуникационный канал по сети 108 клиентам 102.
Фиг. 6 показывает иллюстративный процесс для рендеринга 3D изображений. Порядок, в котором иллюстративный процесс 600 описывается, не следует воспринимать как ограничение, и любое количество описываемых этапов способа может быть скомбинировано в любом порядке для реализации этого способа или альтернативного способа. Кроме того, отдельные этапы могут быть удалены из способа не отступая от сущности и объема описываемого здесь изобретения. Помимо этого, способ может быть реализован в любом подходящем аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или их комбинации.
На этапе 602 потоки данных принимаются от сервера. D3D-плагин 112 клиента 102-1 может принимать потоки 314 данных от модуля 118 абстракции D3D на сервере 106.
На этапе 604 команды D3D и объекты D3D извлекаются из потоков данных. D3D-плагин 112 может извлекать команды 212 D3D и объекты 214 D3D из потоков 314 данных. Кроме того, D3D-плагин 112 может исполнять команды 212 D3D с помощью GPU клиента 102-1.
На этапе 606 выполняется рендеринг выходных данных в форме графических изображений через устройства ввода/вывода в клиенте. Рендеринг выходных данных приложения 410 D3D, таких как графические изображения 316, может осуществляться через устройства 310 ввода/вывода клиента 102-1, используя любой из алгоритмов рендеринга, известных в технике.
Любое из действий, описанных выше по отношению к любому способу, может быть реализовано процессором или другим вычислительным устройством на основе инструкций, хранящихся на одном или более машиночитаемых носителях. Машиночитаемыми носителями могут быть любые доступные носители, к которым моделирующее ресурсы приложение может осуществить доступ локальным или удаленным образом. В качестве примера, но не ограничения, машиночитаемые носители могут содержать компьютерные носители данных и коммуникационные среды. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные по любому методу или технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не в ограничительном смысле, RAM, ROM, EEPROM, флэш-память или память другой технологии, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, магнитные дисковые накопители или другие магнитные устройства хранения данных, либо любой другой носитель, который может использоваться для хранения необходимой информации и к которому моделирующее ресурсы приложение может осуществить доступ. Коммуникационные среды в типичном случае воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в любых средах доставки информации. Комбинации любых из вышеуказанных сред и носителей также охватываются понятием машиночитаемый носитель .
ВЫВОД
Хотя изобретение было описано языком, характерным для структурных признаков и/или методологических действий для реализации описанного здесь рендеринга данных, следует понимать, что изобретение не обязательно ограничивается этими характерными признаками или действиями, которые описаны. Напротив, такие характерные признаки и действия раскрыты как иллюстративные формы реализации изобретения.
Класс G06F9/00 Устройства для программного управления, например блоки управления
Класс G06T19/20 редактирование 3D изображений, например, изменение форм или цветов, выравнивание объектов или расположение частей в определенном порядке