Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.
В этой статье описываются изменения, внесенные в IddCx 1.11. Один двоичный файл непрямого драйвера отображения (IDD), созданный для IddCx 1.11, может работать в Windows 10 1803 и выше, используя проверки во время выполнения, чтобы убедиться в доступности изменений DDI в IddCx 1.11 на этой системе. Дополнительные сведения см. в статье о создании драйвера WDF для нескольких версий Windows.
Изменения IddCx 1.11 делятся на следующие категории:
- Обновите версию IddCxGetVersion (консоль и удаленный доступ). Полный список сведений о версиях, связанных с IddCx, см. в разделе Версии IddCx.
- Добавьте возможность запрашивать поддержку функций ОС.
- Добавьте поддержку использования API D3D12.
- Добавьте новую атомарную операцию чтения/записи для I2C DDI.
- Добавьте поддержку только дескрипторов DisplayID.
- Добавьте поддержку обновления счетчика перекодирования статического десктопа.
Обновление версии IddCxGetVersion
Значение, возвращаемое IddCxGetVersion , было обновлено для возврата 0x1B00.
Запрос поддержки функций ОС
Теперь драйверы имеют возможность определить, доступна ли определенная функция IddCx 1.11 в базовой ОС путем вызова IddCxCheckOsFeatureSupport. Несколько версий ОС могут сообщать о поддержке IddCx 1.11 через IddCxGetVersion, но, возможно, будут доступны только некоторые функции.
Поддержка D3D12
Драйверы IddCx 1.11, поддерживающие D3D12, могут связывать объект ID3D12Device с цепочкой буферов и получать объекты ID3D12Resource с помощью вызовов IddCxSwapChainReleaseAndAcquireBuffer2. Общие сведения о связанных изменениях приведены в следующих разделах.
Связывание устройства D3D12 со swapchain
Если драйвер хочет получать кадры D3D12, необходимо предоставить объект ID3D12Device в вызове IddCxSwapChainSetDevice2.
Получение кадров D3D12
После того как драйвер вызвал IddCxSwapChainSetDevice2 и предоставил объект ID3D12Device, объект IDARG_OUT_RELEASEANDACQUIREBUFFER2, переданный при вызове IddCxSwapChainReleaseAndAcquireBuffer2, будет иметь установленным флаг IDDCX_METADATA2_VALID_FLAGS_D3D12SURFACE. После этого драйвер должен использовать IDARG_OUT_RELEASEANDACQUIREBUFFER2.MetaData.pD3d12Surface для доступа к пиксельным данным.
Синхронизация доступа к поверхностям D3D12
Значительное изменение при использовании драйвера D3D12 — это модель синхронизации, которая управляет доступом к поверхностям цепочки буферов для предотвращения таких проблем, как блокировка и доступ к устаревшим пиксельным данным. Благодаря более детализированному управлению, которое предоставляет D3D12, драйверы должны явно сообщить операционной системе, какая очередь команд будет использовать поверхность в качестве входных данных.
Дополнительные сведения о обязанностях водителя по синхронизации приведены в IDDCX_METADATA2 примечаниях.
Поддержка атомарного I2C
Драйвер версии 1.11, который поддерживает I2C, предоставляя DDI EVT_IDD_CX_MONITOR_I2C_RECEIVE и EVT_IDD_CX_MONITOR_I2C_TRANSMIT, также должен предоставлять EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE. Этот новый DDI выполняет операцию I2C в одном вызове, чтобы помочь драйверам, выполняющим собственные операции I2C, не пересекаясь с вызовами ОС.
Замечание
Драйверы, предоставляющие новый DDI, не должны предполагать, что существующие DDIS больше не будут использоваться.
Поддержка только дескриптора DisplayID
Новый тип дескриптора, IDDCX_MONITOR_DESCRIPTION_TYPE_DISPLAYID, добавлен в перечисление IDDCX_MONITOR_DESCRIPTION_TYPE, используемое в аргументах, передаваемых в IddCxMonitorCreate и IddCxMonitorCreate2. Это следует использовать, если предоставленный дескриптор содержит только дескриптор DisplayID и не блоки EDID вообще.
Обновление счетчика перекодирования статического рабочего стола
В настоящее время количество повторных кодировок статического рабочего стола указывается при создании адаптера. Теперь новый DDI позволяет обновить это значение в цепочке буферов после создания адаптера.
Поддержка выполнения драйвера версии 1.11 на более низких уровнях системы
Если драйвер версии 1.11 должен работать в более ранних выпусках Windows, необходимо выполнить действия для обеспечения совместимости.
- Драйвер должен задать размер структуры IDD_CX_CLIENT_CONFIG с помощью макроса IDD_CX_CLIENT_CONFIG_INIT .
- Драйвер не должен устанавливать новые флаги, добавленные в IDDCX_ADAPTER_FLAGS.
- Драйвер не должен пытаться вызывать новые функции, предоставляемые ОС, так как они недоступны. IDD_IS_FUNCTION_AVAILABLE можно использовать для проверки.
- Ни одна из новых функций не может быть экспортирована. Драйверы могут использовать макрос IDD_IS_FIELD_AVAILABLE для проверки необходимости записи обратного вызова EvtIddXxx в структуру IDD_CX_CLIENT_CONFIG .
- Даже если ОС возвращает 0x1B00 из вызова IddCxGetVersion, драйвер должен запрашивать поддержку определенных функций путем вызова IddCxCheckOsFeatureSupport.
В следующем примере показано, как можно использовать IDD_IS_FIELD_AVAILABLE :
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxMonitorI2CTransmitAndReceive))
{
IddCxClientConfig.EvtIddCxMonitorI2CTransmitAndReceive = MonitorI2CTransmitAndReceive;
}
Дополнительные сведения см. в разделе "Сборка драйверов IddCx 1.4".
Какие функции используются
| Функция IddCx 1.11 | Вызовы новых функций ОС для адаптеров версии 1.11 | Предыдущий эквивалент |
|---|---|---|
| Атомарный I2C | EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE | EVT_IDD_CX_MONITOR_I2C_TRANSMIT и EVT_IDD_CX_MONITOR_I2C_RECEIVE |
| Функция IddCx 1.11 | Новые функции, которые драйвер должен вызывать | Предыдущий эквивалент |
|---|---|---|
| D3D12 | IddCxSwapChainSetDevice2 | IddCxSwapChainSetDevice |
| Обновление счетчика перекодировок | IddCxSwapChainUpdateStaticDesktopReencodeFrameCount | N/A |
Предыдущие выпуски
Сведения об изменениях в более ранних версиях IddCx см. в следующих статьях:
- Обновления для IddCx версий 1.10 и выше
- Обновления для IddCx версии 1.9 и более поздних версий
- Обновления для IddCx версии 1.8 и более поздних версий
- Обновления для IddCx версии 1.7 и более поздних версий
- Обновления для IddCx версии 1.6 и более поздних версий
- Обновления для IddCx версии 1.4 и более поздних версий