Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Механизм синхронизации для DirectX VA 2.0 улучшен с версии 1.0 и более похож на механизмы синхронизации, используемые операциями Microsoft Direct3D.
В DirectX VA 1.0 синхронизация выполняется главным образом декодером. Прежде чем декодировщик может использовать сжатый буфер, он вызывает функцию DdMoCompQueryStatus , чтобы определить, доступен ли буфер для использования (то есть оборудование не обращается к буферу). Если буфер недоступен, декодировщик должен спянуть, провести опрос или выполнить другую операцию.
DirectX VA 2.0 использует модель синхронизации, которую Direct3D уже использует в буферах вершин и индексных буферах. В DirectX VA 2.0 синхронизация выполняется декодером, блокирующим сжатый буфер. Если драйвер отображения в пользовательском режиме пытается заблокировать сжатый буфер и буфер используется, драйвер может завершить блокировку или переименовать буфер. В пользовательском режиме драйвер отображения запрашивает переименование буфера у диспетчера памяти видео, когда драйвер устанавливает член Discard структуры D3DDDICB_LOCKFLAGS в вызове функции pfnLockCb. Если драйвер отображения в пользовательском режиме переименовывает буфер, драйвер возвращает указатель на альтернативный буфер, чтобы декодер не был заблокирован.
Как правило, для DirectX VA 2.0 синхронизация является только проблемой, если оборудование может использовать сжатые буферы напрямую без дополнительных копий буферов.