diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 1 | ||||
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgrendererinterface.cpp | 4 | ||||
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgrendererinterface.h | 1 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgdefaultcontext.cpp | 4 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgrhisupport.cpp | 5 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgrhisupport_p.h | 4 |
6 files changed, 15 insertions, 4 deletions
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h index afc47ce848..a65b87f8b6 100644 --- a/src/quick/items/qquickwindow_p.h +++ b/src/quick/items/qquickwindow_p.h @@ -131,6 +131,7 @@ public: }; static inline QQuickWindowPrivate *get(QQuickWindow *c) { return c->d_func(); } + static inline const QQuickWindowPrivate *get(const QQuickWindow *c) { return c->d_func(); } QQuickWindowPrivate(); ~QQuickWindowPrivate() override; diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp index 9b5701df5a..febd155c40 100644 --- a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp +++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp @@ -112,6 +112,10 @@ QT_BEGIN_NAMESPACE \value RhiResource The resource is a pointer to the QRhi instance used by the scenegraph, when applicable. This value was introduced in Qt 5.14. + \value RhiSwapchainResource The resource is a pointer to a QRhiSwapchain + instance that is associated with the window. This value was introduced in + Qt 6.0. + \value PhysicalDeviceResource The resource is a pointer to the pysical device object used by the scenegraph, when applicable. For example, a \c{VkPhysicalDevice *}. Note that with Vulkan the returned value is a diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.h b/src/quick/scenegraph/coreapi/qsgrendererinterface.h index 6224e08e84..0c009de77b 100644 --- a/src/quick/scenegraph/coreapi/qsgrendererinterface.h +++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.h @@ -67,6 +67,7 @@ public: CommandListResource, PainterResource, RhiResource, + RhiSwapchainResource, PhysicalDeviceResource, OpenGLContextResource, DeviceContextResource, diff --git a/src/quick/scenegraph/qsgdefaultcontext.cpp b/src/quick/scenegraph/qsgdefaultcontext.cpp index fee1a8449e..8318d96eac 100644 --- a/src/quick/scenegraph/qsgdefaultcontext.cpp +++ b/src/quick/scenegraph/qsgdefaultcontext.cpp @@ -324,13 +324,13 @@ void *QSGDefaultContext::getResource(QQuickWindow *window, Resource resource) co if (rhiSupport->graphicsApi() == OpenGL) return rc->openglContext(); else - return const_cast<void *>(rhiSupport->rifResource(resource, rc)); + return const_cast<void *>(rhiSupport->rifResource(resource, rc, window)); #if QT_CONFIG(vulkan) case VulkanInstanceResource: return window->vulkanInstance(); #endif default: - return const_cast<void *>(rhiSupport->rifResource(resource, rc)); + return const_cast<void *>(rhiSupport->rifResource(resource, rc, window)); } } diff --git a/src/quick/scenegraph/qsgrhisupport.cpp b/src/quick/scenegraph/qsgrhisupport.cpp index 510f98ed6b..07730a5d2b 100644 --- a/src/quick/scenegraph/qsgrhisupport.cpp +++ b/src/quick/scenegraph/qsgrhisupport.cpp @@ -436,7 +436,8 @@ static const void *qsgrhi_mtl_rifResource(QSGRendererInterface::Resource res, co #endif const void *QSGRhiSupport::rifResource(QSGRendererInterface::Resource res, - const QSGDefaultRenderContext *rc) + const QSGDefaultRenderContext *rc, + const QQuickWindow *w) { // ### This condition is a temporary workaround to allow compilation // with -no-opengl, but Vulkan or Metal enabled, to succeed. Full @@ -447,6 +448,8 @@ const void *QSGRhiSupport::rifResource(QSGRendererInterface::Resource res, QRhi *rhi = rc->rhi(); if (res == QSGRendererInterface::RhiResource || !rhi) return rhi; + if (res == QSGRendererInterface::RhiSwapchainResource) + return QQuickWindowPrivate::get(w)->swapchain; const QRhiNativeHandles *nat = rhi->nativeHandles(); if (!nat) diff --git a/src/quick/scenegraph/qsgrhisupport_p.h b/src/quick/scenegraph/qsgrhisupport_p.h index 9e9b6f88bc..587ecb2df3 100644 --- a/src/quick/scenegraph/qsgrhisupport_p.h +++ b/src/quick/scenegraph/qsgrhisupport_p.h @@ -119,7 +119,9 @@ public: QSurface::SurfaceType windowSurfaceType() const; - const void *rifResource(QSGRendererInterface::Resource res, const QSGDefaultRenderContext *rc); + const void *rifResource(QSGRendererInterface::Resource res, + const QSGDefaultRenderContext *rc, + const QQuickWindow *w); int chooseSampleCountForWindowWithRhi(QWindow *window, QRhi *rhi); |