41 if (m_rhi || m_cpuOnly)
44 [[maybe_unused]] QRhi::Implementation referenceBackend =
45 referenceRhi ? referenceRhi->backend() : QRhi::Null;
46 const QPlatformIntegration *qpa = QGuiApplicationPrivate::platformIntegration();
48 if (qpa && qpa->hasCapability(QPlatformIntegration::RhiBasedRendering)) {
51 if (canUseRhiImpl(QRhi::Metal, referenceBackend)) {
52 QRhiMetalInitParams params;
53 m_rhi.reset(QRhi::create(QRhi::Metal, ¶ms));
58 if (!m_rhi && canUseRhiImpl(QRhi::D3D11, referenceBackend)) {
59 QRhiD3D11InitParams params;
60 m_rhi.reset(QRhi::create(QRhi::D3D11, ¶ms));
65 if (!m_rhi && canUseRhiImpl(QRhi::OpenGLES2, referenceBackend)) {
66 if (openGLCapsSupported(*qpa)) {
68 m_fallbackSurface.reset(QRhiGles2InitParams::newFallbackSurface());
69 QRhiGles2InitParams params;
70 params.fallbackSurface = m_fallbackSurface.get();
71 if (referenceBackend == QRhi::OpenGLES2)
72 params.shareContext =
static_cast<
const QRhiGles2NativeHandles *>(
73 referenceRhi->nativeHandles())
75 m_rhi.reset(QRhi::create(QRhi::OpenGLES2, ¶ms));
77# if defined(Q_OS_ANDROID)
80 if (!m_appStateChangedConnection) {
81 if (!m_eventsReceiver)
82 m_eventsReceiver = std::make_unique<QObject>();
84 auto onStateChanged = [
this](
auto state) {
85 if (state == Qt::ApplicationSuspended)
89 m_appStateChangedConnection =
90 QObject::connect(qApp, &QGuiApplication::applicationStateChanged,
91 m_eventsReceiver.get(), onStateChanged);
101 qWarning() << Q_FUNC_INFO <<
": No RHI backend. Using CPU conversion.";
117 const QRhi::Implementation reference)
120 if (reference != QRhi::Null)
121 return implementation == reference;
124 if (s_preferredBackend != QRhi::Null)
125 return implementation == s_preferredBackend;