summaryrefslogtreecommitdiffstats
path: root/src/gui/rhi/qrhid3d11.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2021-01-12 13:02:13 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2021-01-13 10:08:23 +0100
commit042cd97884bb86dfd0bedaa63480d99846ab06bb (patch)
tree14095c34b735179ad60135b1a53c6fb77a6d189e /src/gui/rhi/qrhid3d11.cpp
parent04f11f9935453a3db6bc5e5064a187fa25e85d90 (diff)
rhi: Expose device name, type, and IDs
...to the extent it is sensible. We have to make compromises still, meaning some fields will only be applicable with certain APIs. Most of this is already shown upon QRhi::create() as info debug prints, when enabled. Now expose it all through the QRhi API as well. This is useful for printing in qtdiag, and, while it should be avoided as much as possible, to make decisions about disabling 3D rendering features depending on the driver and GPU in use. Change-Id: Iebe1e192965c928b82a094d1c7c50ddf4b38b9a2 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhid3d11.cpp')
-rw-r--r--src/gui/rhi/qrhid3d11.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp
index 0db32e794f..247d51ecc8 100644
--- a/src/gui/rhi/qrhid3d11.cpp
+++ b/src/gui/rhi/qrhid3d11.cpp
@@ -220,7 +220,6 @@ bool QRhiD3D11::create(QRhi::Flags flags)
hasDxgi2 ? "true" : "false", supportsFlipDiscardSwapchain ? "true" : "false");
if (!importedDeviceAndContext) {
- IDXGIAdapter1 *adapterToUse = nullptr;
IDXGIAdapter1 *adapter;
int requestedAdapterIndex = -1;
if (qEnvironmentVariableIsSet("QT_D3D_ADAPTER_INDEX"))
@@ -253,6 +252,7 @@ bool QRhiD3D11::create(QRhi::Flags flags)
}
}
+ IDXGIAdapter1 *adapterToUse = nullptr;
for (int adapterIndex = 0; dxgiFactory->EnumAdapters1(UINT(adapterIndex), &adapter) != DXGI_ERROR_NOT_FOUND; ++adapterIndex) {
DXGI_ADAPTER_DESC1 desc;
adapter->GetDesc1(&desc);
@@ -266,6 +266,9 @@ bool QRhiD3D11::create(QRhi::Flags flags)
if (!adapterToUse && (requestedAdapterIndex < 0 || requestedAdapterIndex == adapterIndex)) {
adapterToUse = adapter;
adapterLuid = desc.AdapterLuid;
+ driverInfoStruct.deviceName = name.toUtf8();
+ driverInfoStruct.deviceId = desc.DeviceId;
+ driverInfoStruct.vendorId = desc.VendorId;
qCDebug(QRHI_LOG_INFO, " using this adapter");
} else {
adapter->Release();
@@ -323,6 +326,9 @@ bool QRhiD3D11::create(QRhi::Flags flags)
DXGI_ADAPTER_DESC desc;
adapter->GetDesc(&desc);
adapterLuid = desc.AdapterLuid;
+ driverInfoStruct.deviceName = QString::fromUtf16(reinterpret_cast<char16_t *>(desc.Description)).toUtf8();
+ driverInfoStruct.deviceId = desc.DeviceId;
+ driverInfoStruct.vendorId = desc.VendorId;
adapter->Release();
}
dxgiDev->Release();
@@ -575,6 +581,11 @@ const QRhiNativeHandles *QRhiD3D11::nativeHandles()
return &nativeHandlesStruct;
}
+QRhiDriverInfo QRhiD3D11::driverInfo() const
+{
+ return driverInfoStruct;
+}
+
void QRhiD3D11::sendVMemStatsToProfiler()
{
// nothing to do here