Объекты и интерфейсы VidPN
Диспетчер сети видеотрансляции (VidPN) использует объект VidPN для хранения сведений о связях между источниками видеотрансляций, целевыми объектами видеотрансляции и режимами отображения. Дополнительные сведения см. в разделе Общие сведения о сетях видеотрансляции .
Объект VidPN
Объект VidPN содержит следующие вложенные объекты.
Топология
Набор исходного режима
Набор целевого режима
Мониторинг набора исходного режима
Мониторинг набора диапазонов частот
Набор дескрипторов мониторинга
Путь
Источник
целевого объекта
Исходный режим
Целевой режим
Мониторинг режима источника
На следующей схеме показан объект VidPN и его вложенные объекты.
На предыдущей схеме показано, является ли определенная связь "один к одному", "один ко многим", "многие к одному" или "многие ко многим". Например, на схеме показано, что источник может принадлежать нескольким путям, а целевой объект может принадлежать только одному пути.
Доступ к синим объектам на схеме осуществляется через дескрипторы и интерфейсы, а серые объекты — через указатели структуры. Интерфейс в этом контексте представляет собой структуру, содержащую указатели функций. Например, структура DXGK_VIDPNTOPOLOGY_INTERFACE содержит указатели на функции (реализованные диспетчером VidPN), которые драйвер мини-порта дисплея вызывает для проверки и изменения объекта топологии. Когда драйвер мини-порта дисплея вызывает любую из этих функций, он должен предоставить дескриптор для объекта топологии. В следующей таблице перечислены типы данных дескриптора, интерфейса и указателя, используемые для доступа к объекту VidPN и его вложенным объектам.
Объект | Метод доступа и тип данных |
---|---|
VidPN (интерфейс VidPN) | Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPN , DXGK_VIDPN_INTERFACE |
Топология (интерфейс топологии VidPN) | Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPNTOPOLOGY , DXGK_VIDPNTOPOLOGY_INTERFACE |
Набор исходного режима (интерфейс набора исходного режима VidPN) | Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPNSOURCEMODESET , DXGK_VIDPNSOURCEMODESET_INTERFACE |
Набор целевого режима (интерфейс набора целевого режима VidPN) | Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HVIDPNTARGETMODESET , DXGK_VIDPNTARGETMODESET_INTERFACE |
Мониторинг набора исходного режима | Доступ осуществляется через дескриптор и интерфейс. D3DKMDT_HMONITORSOURCEMODESET, DXGK_MONITORSOURCEMODESET_INTERFACE |
Путь | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_VIDPN_PRESENT_PATH |
Source | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_VIDEO_PRESENT_SOURCE |
целевого объекта | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_VIDEO_PRESENT_TARGET |
Исходный режим | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_VIDPN_SOURCE_MODE |
Целевой режим | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_VIDPN_TARGET_MODE |
Мониторинг режима источника | Доступ к ней осуществляется с помощью указателя структуры. D3DKMDT_MONITOR_SOURCE_MODE |
Мониторинг набора диапазонов частот | Доступ к ней осуществляется с помощью указателя структуры. [DXGK_MONITORFREQUENCYRANGESET_INTERFACE |
Набор дескрипторов мониторинга | Доступ к ней осуществляется с помощью указателя структуры. [DXGK_MONITORDESCRIPTORSET_INTERFACE |
Диспетчер VidPN
Диспетчер VidPN, который является одним из компонентов подсистемы графического ядра DirectX, взаимодействует с драйвером мини-порта дисплея для создания и обслуживания VidPN. Ниже описано, как драйвер мини-порта дисплея получает дескриптор и интерфейс для объекта VidPN.
Во время инициализации подсистема ядра графики DirectX вызывает функцию DxgkDdiStartDevice драйвера дисплея miniport. Этот вызов предоставляет драйверу мини-порта дисплея DXGKRNL_INTERFACE структуру, которая содержит указатели на функции, реализованные подсистемой графического ядра DirectX. Одной из этих функций является DxgkCbQueryVidPnInterface.
В какой-то момент диспетчеру VidPN требуется помощь от драйвера мини-порта дисплея, поэтому он предоставляет драйверу мини-порта дисплея дескриптор объекта VidPN путем вызова одной из следующих функций:
Драйвер мини-порта дисплея передает дескриптор, полученный на шаге 2, в DxgkCbQueryVidPnInterface, который возвращает указатель на структуру DXGK_VIDPN_INTERFACE .
После того как драйвер мини-порта дисплея получит дескриптор и интерфейс для объекта VidPN, он может получать дескрипторы и интерфейсы (по мере необходимости) к основным вложенным объектам: топологии, набору исходного режима, набору целевого режима и набору исходного режима мониторинга. Например, драйвер мини-порта дисплея может вызвать pfnGetTopology (одну из функций в интерфейсе VidPN), чтобы получить дескриптор объекта топологии VidPN и указатель на структуру DXGK_VIDPNTOPOLOGY_INTERFACE .
Следующие функции (в интерфейсе VidPN) предоставляют дескрипторы и интерфейсы для основных вложенных объектов объекта VidPN.
Обратите внимание, что две функции в предыдущем списке имеют соответствующие функции, которые освобождают вложенные объекты VidPN.
После того как драйвер мини-порта дисплея получает дескриптор и интерфейс для одного из основных подобъектов VidPNs, он может вызывать функции интерфейса для получения дескрипторов объектов, связанных с подобъектом. Например, учитывая дескриптор и интерфейс объекта топологии, драйвер мини-порта отображения может выполнить следующие действия, чтобы получить дескрипторы всех путей в топологии.
-
Вызовите функцию pfnAcquireFirstPathInfo интерфейса топологии VidPN, чтобы получить указатель на структуру D3DKMDT_VIDPN_PRESENT_PATH , описывающую первый путь в топологии.
-
Повторно вызывайте функцию pfnAcquireNextPathInfo , чтобы получить указатели на D3DKMDT_VIDPN_PRESENT_PATH структуры, описывающие оставшиеся пути в топологии.
Аналогичным образом драйвер мини-порта дисплея может получить дескрипторы режимов в заданном режиме путем вызова функций pfnAcquireFirstModeInfo и pfnAcquireNextModeInfo любого из следующих интерфейсов набора режимов.
Обратите внимание, что интерфейс DXGK_VIDPNSOURCEMODESET_INTERFACE не имеет функции для удаления режима из набора исходного режима. Если драйверу мини-порта дисплея необходимо обновить набор исходного режима, он не изменяет существующий режим, добавляя и удаляя режимы. Вместо этого создается новый набор режимов, заменяющий старый набор режимов. Примером функции, которая должна обновлять наборы режимов, является функция DxgkDdiEnumVidPnCofuncModality драйвера минипорта дисплея. Ниже приведены шаги, связанные с обновлением набора исходного режима.
Вызовите pfnCreateNewModeInfo интерфейса DXGK_VIDPNSOURCEMODESET_INTERFACE , чтобы получить указатель на структуру D3DKMDT_VIDPN_SOURCE_MODE (выделенную диспетчером VidPN).
Повторно вызывайте pfnAddMode , чтобы добавить режимы в набор исходного режима.
Вызовите функцию pfnAssignSourceModeSetDXGK_VIDPN_INTERFACE , чтобы назначить новый режим, заданный для определенного источника видео. Новый набор режимов источника заменяет набор исходного режима, назначенный в данный момент данному источнику.
Обновление целевого набора режимов аналогично обновлению набора исходного режима. Интерфейс DXGK_VIDPNTARGETMODESET_INTERFACE имеет следующие функции:
Интерфейс VidPN Target Mode Set
Функция pfnCreateNewModeInfo для создания нового набора целевых режимов и функция pfnAddMode для добавления режимов в набор.
Отсутствует интерфейс (набор функций) для получения источника и целевого объекта, принадлежащих определенному пути. Драйвер мини-порта дисплея может определить, какой источник и целевой объект относятся к определенному пути, проверяя члены VidPnSourceId и VidPnTargetIdструктуры D3DKMDT_VIDPN_PRESENT_PATH , представляющей путь.
См. также раздел
Определение поддержки VidPN на адаптере дисплея
Перечисление кофункционального исходного и целевого режимов VidPN