rhi: Make it possible to query the backend name beforehand

The goal is to make it possible to implement QSGRhiSupport::backendName()
in Qt Quick with just a single line:

return QString::fromUtf8(QRhi::backendName(m_rhiBackend));

instead of duplicating the strings and the logic.

Similarly, QBackingStoreRhiSupport can now drop its apiName() helper
entirely.

Change-Id: Ia8cbb1f1243539ed4d7a98e71dcc2ed56b017e40
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
This commit is contained in:
Laszlo Agocs 2022-07-01 09:25:29 +02:00
parent 5a136716a9
commit a09e518f65
5 changed files with 16 additions and 25 deletions

View File

@ -232,25 +232,6 @@ QRhi::Implementation QBackingStoreRhiSupport::apiToRhiBackend(QPlatformBackingSt
return QRhi::Null;
}
const char *QBackingStoreRhiSupport::apiName(QPlatformBackingStoreRhiConfig::Api api)
{
switch (api) {
case QPlatformBackingStoreRhiConfig::OpenGL:
return "OpenGL";
case QPlatformBackingStoreRhiConfig::Metal:
return "Metal";
case QPlatformBackingStoreRhiConfig::Vulkan:
return "Vulkan";
case QPlatformBackingStoreRhiConfig::D3D11:
return "D3D11";
case QPlatformBackingStoreRhiConfig::Null:
return "Null";
default:
break;
}
return "Unknown";
}
bool QBackingStoreRhiSupport::checkForceRhi(QPlatformBackingStoreRhiConfig *outConfig, QSurface::SurfaceType *outType)
{
static QPlatformBackingStoreRhiConfig config;
@ -304,7 +285,7 @@ bool QBackingStoreRhiSupport::checkForceRhi(QPlatformBackingStoreRhiConfig *outC
}
qCDebug(lcQpaBackingStore) << "Check for forced use of QRhi resulted in enable"
<< config.isEnabled() << "with api" << apiName(config.api());
<< config.isEnabled() << "with api" << QRhi::backendName(apiToRhiBackend(config.api()));
}
if (config.isEnabled()) {

View File

@ -44,7 +44,6 @@ public:
static bool checkForceRhi(QPlatformBackingStoreRhiConfig *outConfig, QSurface::SurfaceType *outType);
static QRhi::Implementation apiToRhiBackend(QPlatformBackingStoreRhiConfig::Api api);
static const char *apiName(QPlatformBackingStoreRhiConfig::Api api);
QRhi *rhi() const { return m_rhi; }

View File

@ -5456,11 +5456,12 @@ QRhi::Implementation QRhi::backend() const
}
/*!
\return the backend type as string for this QRhi.
\return a friendly name for the backend \a impl, usually the name of the 3D
API in use.
*/
const char *QRhi::backendName() const
const char *QRhi::backendName(Implementation impl)
{
switch (d->implType) {
switch (impl) {
case QRhi::Null:
return "Null";
case QRhi::Vulkan:
@ -5474,7 +5475,15 @@ const char *QRhi::backendName() const
}
Q_UNREACHABLE();
return nullptr;
return "Unknown";
}
/*!
\return the backend type as string for this QRhi.
*/
const char *QRhi::backendName() const
{
return backendName(d->implType);
}
/*!

View File

@ -1701,6 +1701,7 @@ public:
Implementation backend() const;
const char *backendName() const;
static const char *backendName(Implementation impl);
QRhiDriverInfo driverInfo() const;
QThread *thread() const;

View File

@ -255,6 +255,7 @@ void tst_QRhi::create()
QCOMPARE(rhi->backend(), impl);
QVERIFY(strcmp(rhi->backendName(), ""));
QVERIFY(!strcmp(rhi->backendName(), QRhi::backendName(rhi->backend())));
QVERIFY(!rhi->driverInfo().deviceName.isEmpty());
QCOMPARE(rhi->thread(), QThread::currentThread());