--- origsrc/libvpl-2.16.0/libvpl/src/windows/mfx_library_iterator.cpp	2026-01-09 10:10:50.891147700 +0900
+++ src/libvpl-2.16.0/libvpl/src/windows/mfx_library_iterator.cpp	2026-01-09 10:38:05.078994400 +0900
@@ -619,9 +619,13 @@ mfxStatus MFXLibraryIterator::GetRegkeyD
     mfxStatus sts = MFX_ERR_UNSUPPORTED;
     MFX::MFXLibraryIterator libIterator;
     wchar_t wRegDir[MFX_MAX_DLL_PATH];
+    int adapterNum = 0;
 
     regDir.clear();
-    sts = libIterator.Init(MFX_LIB_HARDWARE, MFX_IMPL_VIA_D3D11, 0, storageID);
+    do {
+        sts = libIterator.Init(MFX_LIB_HARDWARE, MFX_IMPL_VIA_D3D11, adapterNum, storageID);
+        adapterNum++;
+    } while (sts == MFX_ERR_NONE && !libIterator.isIntelAdapter());
     if (sts)
         return MFX_ERR_UNSUPPORTED;
 
--- origsrc/libvpl-2.16.0/libvpl/src/windows/mfx_library_iterator.h	2025-12-18 08:04:39.000000000 +0900
+++ src/libvpl-2.16.0/libvpl/src/windows/mfx_library_iterator.h	2026-01-09 10:38:11.450167700 +0900
@@ -99,6 +99,9 @@ public:
                                        mfxU32 deviceID,
                                        int storageID);
     static mfxStatus GetRegkeyDir(std::wstring &regDir, size_t length, int storageID);
+    bool isIntelAdapter() const {
+        return m_vendorID == INTEL_VENDOR_ID;
+    }
 
 protected:
     // Release the iterator
