diff options
Diffstat (limited to 'src/gui/rhi/qrhimetal.mm')
-rw-r--r-- | src/gui/rhi/qrhimetal.mm | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm index 9e0655ef06..5a1183b8ef 100644 --- a/src/gui/rhi/qrhimetal.mm +++ b/src/gui/rhi/qrhimetal.mm @@ -372,7 +372,30 @@ bool QRhiMetal::create(QRhi::Flags flags) return false; } - qCDebug(QRHI_LOG_INFO, "Metal device: %s", qPrintable(QString::fromNSString([d->dev name]))); + const QString deviceName = QString::fromNSString([d->dev name]); + qCDebug(QRHI_LOG_INFO, "Metal device: %s", qPrintable(deviceName)); + driverInfoStruct.deviceName = deviceName.toUtf8(); + driverInfoStruct.deviceId = [d->dev registryID]; +#ifdef Q_OS_IOS + driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice; +#else + if (@available(macOS 10.15, *)) { + const MTLDeviceLocation deviceLocation = [d->dev location]; + switch (deviceLocation) { + case MTLDeviceLocationBuiltIn: + driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice; + break; + case MTLDeviceLocationSlot: + driverInfoStruct.deviceType = QRhiDriverInfo::DiscreteDevice; + break; + case MTLDeviceLocationExternal: + driverInfoStruct.deviceType = QRhiDriverInfo::ExternalDevice; + break; + default: + break; + } + } +#endif if (importedCmdQueue) [d->cmdQueue retain]; @@ -615,6 +638,11 @@ const QRhiNativeHandles *QRhiMetal::nativeHandles() return &nativeHandlesStruct; } +QRhiDriverInfo QRhiMetal::driverInfo() const +{ + return driverInfoStruct; +} + void QRhiMetal::sendVMemStatsToProfiler() { // nothing to do here |