[dxvk] Add new methods to find adapters by LUID or device ID

Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
This commit is contained in:
Philip Rebohle 2018-12-03 21:18:19 +01:00
parent bb1f431e44
commit f7b3b9ca5c
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 45 additions and 0 deletions

View File

@ -37,6 +37,31 @@ namespace dxvk {
? m_adapters[index]
: nullptr;
}
Rc<DxvkAdapter> DxvkInstance::findAdapterByLuid(const void* luid) const {
for (const auto& adapter : m_adapters) {
const auto& props = adapter->devicePropertiesExt().coreDeviceId;
if (props.deviceLUIDValid && !std::memcmp(luid, props.deviceLUID, VK_LUID_SIZE))
return adapter;
}
return nullptr;
}
Rc<DxvkAdapter> DxvkInstance::findAdapterByDeviceId(uint16_t vendorId, uint16_t deviceId) const {
for (const auto& adapter : m_adapters) {
const auto& props = adapter->deviceProperties();
if (props.vendorID == vendorId
&& props.deviceID == deviceId)
return adapter;
}
return nullptr;
}
VkInstance DxvkInstance::createInstance() {

View File

@ -48,6 +48,26 @@ namespace dxvk {
Rc<DxvkAdapter> enumAdapters(
uint32_t index) const;
/**
* \brief Finds adapter by LUID
*
* \param [in] luid Pointer to LUID
* \returns Matching adapter, if any
*/
Rc<DxvkAdapter> findAdapterByLuid(
const void* luid) const;
/**
* \brief Finds adapter by device IDs
*
* \param [in] vendorId Vendor ID
* \param [in] deviceId Device ID
* \returns Matching adapter, if any
*/
Rc<DxvkAdapter> findAdapterByDeviceId(
uint16_t vendorId,
uint16_t deviceId) const;
/**
* \brief Retrieves configuration options
*