Мне нужно создать D3D-устройство и контекст на правильном графическом процессоре, который является графическим процессором, реализующим кодировщик.
В документации для MFT_ENUM_ADAPTER_LUID
говорится, что для этого требуется Windows 10, на самом деле NVENC MFT не предоставляет этот атрибут даже в Win10.
В документации для MFT_ENUM_HARDWARE_URL_Attribute
указано, что значение является символической ссылкой для драйвера устройства, на самом деле NVENC MFT не возвращает никаких ссылок GUID, значение такое же, как и в MFT_FRIENDLY_NAME_Attribute
, в частности L"NVIDIA H.264 Encoder MFT"
MFT_ENUM_HARDWARE_VENDOR_ID_Attribute
работает нормально, возвращает L"VEN_10DE"
, поэтому я могу разобрать его на число и сопоставить с полем VendorId
структуры DXGI_ADAPTER_DESC
. Однако в документации для этого атрибута говорится, что поддержка не является обязательной.
Не люблю необязательные, хочу надежные. Как сопоставить MFT аппаратного кодировщика с графическими процессорами? Будут выпущены ПК с двумя графическими процессорами от AMD, например Asus FX505DY, трюк с идентификатором поставщика не будет работать на таких системах.