aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2020-06-11 12:35:04 +0200
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2020-06-11 22:23:48 +0200
commit2cb24f7054e1105be0dcb1a4d61a5b52d62d1a55 (patch)
tree6e059ba5184c0e7b618a874f581dfc63ed0e3f06
parent66056aba7b47c147b4cf9fd70a855dd15b8a9eb6 (diff)
Move QSGRenderContext::RenderMode to QSGRendererInterface
We want to be able to use this enum from the public API, so we move it out to a suitable public class. Task-number: QTBUG-84695 Change-Id: I8a3860ecfd0da7990941540bcf39fb0c2bf0ff83 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
-rw-r--r--src/quick/items/qquickwindow.cpp4
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp2
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarecontext_p.h2
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp18
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h6
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendererinterface.cpp7
-rw-r--r--src/quick/scenegraph/coreapi/qsgrendererinterface.h6
-rw-r--r--src/quick/scenegraph/qsgcontext_p.h9
-rw-r--r--src/quick/scenegraph/qsgdefaultrendercontext.cpp4
-rw-r--r--src/quick/scenegraph/qsgdefaultrendercontext_p.h2
-rw-r--r--src/quick/scenegraph/qsgrhilayer.cpp4
11 files changed, 37 insertions, 27 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 39f85e1f6d..f7bebeff5a 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -584,8 +584,8 @@ void QQuickWindowPrivate::syncSceneGraph()
QSGRootNode *rootNode = new QSGRootNode;
rootNode->appendChildNode(QQuickItemPrivate::get(contentItem)->itemNode());
static const bool useDepth = qEnvironmentVariableIsEmpty("QSG_NO_DEPTH_BUFFER");
- static const QSGRenderContext::RenderMode renderMode = useDepth ? QSGRenderContext::RenderMode2D
- : QSGRenderContext::RenderMode2DNoDepthBuffer;
+ static const QSGRendererInterface::RenderMode renderMode = useDepth ? QSGRendererInterface::RenderMode2D
+ : QSGRendererInterface::RenderMode2DNoDepthBuffer;
renderer = context->createRenderer(renderMode);
renderer->setRootNode(rootNode);
}
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
index 4f61e615f6..cb2af431f8 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext.cpp
@@ -151,7 +151,7 @@ QSGTexture *QSGSoftwareRenderContext::createTexture(const QImage &image, uint fl
return new QSGSoftwarePixmapTexture(image, flags);
}
-QSGRenderer *QSGSoftwareRenderContext::createRenderer(RenderMode)
+QSGRenderer *QSGSoftwareRenderContext::createRenderer(QSGRendererInterface::RenderMode)
{
return new QSGSoftwareRenderer(this);
}
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext_p.h b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext_p.h
index c523bfbb13..feb664cfd1 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext_p.h
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarecontext_p.h
@@ -74,7 +74,7 @@ public:
void invalidate() override;
void renderNextFrame(QSGRenderer *renderer) override;
QSGTexture *createTexture(const QImage &image, uint flags = CreateTexture_Alpha) const override;
- QSGRenderer *createRenderer(RenderMode) override;
+ QSGRenderer *createRenderer(QSGRendererInterface::RenderMode) override;
int maxTextureSize() const override;
bool m_initialized;
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index b4b027aea6..b2d8ab5ff0 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -888,7 +888,7 @@ static int qsg_countNodesInBatches(const QDataBuffer<Batch *> &batches)
return sum;
}
-Renderer::Renderer(QSGDefaultRenderContext *ctx, QSGRenderContext::RenderMode renderMode)
+Renderer::Renderer(QSGDefaultRenderContext *ctx, QSGRendererInterface::RenderMode renderMode)
: QSGRenderer(ctx)
, m_context(ctx)
, m_renderMode(renderMode)
@@ -2958,7 +2958,7 @@ bool Renderer::prepareRenderMergedBatch(Batch *batch, PreparedRenderBatch *rende
m_current_projection_matrix_native_ndc = projectionMatrixWithNativeNDC();
QSGMaterial *material = gn->activeMaterial();
- if (m_renderMode != QSGRenderContext::RenderMode3D)
+ if (m_renderMode != QSGRendererInterface::RenderMode3D)
updateClipState(gn->clipList(), batch);
const QSGGeometry *g = gn->geometry();
@@ -3035,7 +3035,7 @@ bool Renderer::prepareRenderMergedBatch(Batch *batch, PreparedRenderBatch *rende
if (!hasPipeline)
return false;
- if (m_renderMode == QSGRenderContext::RenderMode3D) {
+ if (m_renderMode == QSGRendererInterface::RenderMode3D) {
m_gstateStack.push(m_gstate);
setStateForDepthPostPass();
ensurePipelineState(e, sms, true);
@@ -3131,7 +3131,7 @@ bool Renderer::prepareRenderUnmergedBatch(Batch *batch, PreparedRenderBatch *ren
m_current_projection_matrix_native_ndc = projectionMatrixWithNativeNDC();
QSGGeometryNode *gn = e->node;
- if (m_renderMode != QSGRenderContext::RenderMode3D)
+ if (m_renderMode != QSGRendererInterface::RenderMode3D)
updateClipState(gn->clipList(), batch);
// We always have dirty matrix as all batches are at a unique z range.
@@ -3242,7 +3242,7 @@ bool Renderer::prepareRenderUnmergedBatch(Batch *batch, PreparedRenderBatch *ren
return false;
}
ps = e->ps;
- if (m_renderMode == QSGRenderContext::RenderMode3D) {
+ if (m_renderMode == QSGRendererInterface::RenderMode3D) {
m_gstateStack.push(m_gstate);
setStateForDepthPostPass();
ensurePipelineState(e, sms, true);
@@ -3251,7 +3251,7 @@ bool Renderer::prepareRenderUnmergedBatch(Batch *batch, PreparedRenderBatch *ren
}
} else {
e->ps = ps;
- if (m_renderMode == QSGRenderContext::RenderMode3D)
+ if (m_renderMode == QSGRendererInterface::RenderMode3D)
e->depthPostPassPs = depthPostPassPs;
}
@@ -3613,7 +3613,7 @@ void Renderer::prepareRenderPass(RenderPassContext *ctx)
// special case: the 3D plane mode tests against the depth buffer, but does
// not write (and all batches are alpha because this render mode evaluates
// to useDepthBuffer()==false)
- if (m_renderMode == QSGRenderContext::RenderMode3D) {
+ if (m_renderMode == QSGRendererInterface::RenderMode3D) {
Q_ASSERT(m_opaqueBatches.isEmpty());
m_gstate.depthTest = true;
}
@@ -3690,7 +3690,7 @@ void Renderer::recordRenderPass(RenderPassContext *ctx)
renderUnmergedBatch(renderBatch);
}
- if (m_renderMode == QSGRenderContext::RenderMode3D) {
+ if (m_renderMode == QSGRendererInterface::RenderMode3D) {
// depth post-pass
for (int i = 0, ie = ctx->alphaRenderBatches.count(); i != ie; ++i) {
PreparedRenderBatch *renderBatch = &ctx->alphaRenderBatches[i];
@@ -3755,7 +3755,7 @@ bool Renderer::prepareRhiRenderNode(Batch *batch, PreparedRenderBatch *renderBat
QSGRenderNodePrivate *rd = QSGRenderNodePrivate::get(e->renderNode);
rd->m_clip_list = nullptr;
- if (m_renderMode != QSGRenderContext::RenderMode3D) {
+ if (m_renderMode != QSGRendererInterface::RenderMode3D) {
QSGNode *clip = e->renderNode->parent();
while (clip != rootNode()) {
if (clip->type() == QSGNode::ClipNodeType) {
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
index 3eb135275e..08b61984bd 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h
@@ -747,7 +747,7 @@ protected:
class Q_QUICK_PRIVATE_EXPORT Renderer : public QSGRenderer
{
public:
- Renderer(QSGDefaultRenderContext *ctx, QSGRenderContext::RenderMode renderMode = QSGRenderContext::RenderMode2D);
+ Renderer(QSGDefaultRenderContext *ctx, QSGRendererInterface::RenderMode renderMode = QSGRendererInterface::RenderMode2D);
~Renderer();
protected:
@@ -862,7 +862,7 @@ private:
void invalidatePipelineCacheDependency(QRhiRenderPassDescriptor *rpDesc) override;
QSGDefaultRenderContext *m_context;
- QSGRenderContext::RenderMode m_renderMode;
+ QSGRendererInterface::RenderMode m_renderMode;
QSet<Node *> m_taggedRoots;
QDataBuffer<Element *> m_opaqueRenderList;
QDataBuffer<Element *> m_alphaRenderList;
@@ -955,7 +955,7 @@ int Renderer::mergedIndexElemSize() const
bool Renderer::useDepthBuffer() const
{
- return !m_forceNoDepthBuffer && m_renderMode == QSGRenderContext::RenderMode2D;
+ return !m_forceNoDepthBuffer && m_renderMode == QSGRendererInterface::RenderMode2D;
}
void Renderer::setStateForDepthPostPass()
diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
index febd155c40..6970aa0afb 100644
--- a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
+++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp
@@ -175,6 +175,13 @@ QT_BEGIN_NAMESPACE
supported
*/
+/*!
+ \enum QSGRendererInterface::RenderMode
+
+ \value RenderMode2D Normal 2D rendering
+ \value RenderMode2DNoDepthBuffer Normal 2D rendering with depth buffer disabled
+ \value RenderMode3D Scene is rendered as part of a 3D graph
+ */
QSGRendererInterface::~QSGRendererInterface()
{
}
diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.h b/src/quick/scenegraph/coreapi/qsgrendererinterface.h
index 0c009de77b..9d7b9a5738 100644
--- a/src/quick/scenegraph/coreapi/qsgrendererinterface.h
+++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.h
@@ -96,6 +96,12 @@ public:
};
Q_DECLARE_FLAGS(ShaderSourceTypes, ShaderSourceType)
+ enum RenderMode {
+ RenderMode2D,
+ RenderMode2DNoDepthBuffer,
+ RenderMode3D
+ };
+
virtual ~QSGRendererInterface();
virtual GraphicsApi graphicsApi() const = 0;
diff --git a/src/quick/scenegraph/qsgcontext_p.h b/src/quick/scenegraph/qsgcontext_p.h
index 7140432c30..2928d2ea4a 100644
--- a/src/quick/scenegraph/qsgcontext_p.h
+++ b/src/quick/scenegraph/qsgcontext_p.h
@@ -62,6 +62,7 @@
#include <private/qrawfont_p.h>
#include <QtQuick/qsgnode.h>
+#include <QtQuick/qsgrendererinterface.h>
QT_BEGIN_NAMESPACE
@@ -155,12 +156,6 @@ class Q_QUICK_PRIVATE_EXPORT QSGRenderContext : public QObject
{
Q_OBJECT
public:
- enum RenderMode {
- RenderMode2D,
- RenderMode2DNoDepthBuffer,
- RenderMode3D
- };
-
enum CreateTextureFlags {
CreateTexture_Alpha = 0x1,
CreateTexture_Atlas = 0x2,
@@ -201,7 +196,7 @@ public:
QSGTexture *textureForFactory(QQuickTextureFactory *factory, QQuickWindow *window);
virtual QSGTexture *createTexture(const QImage &image, uint flags = CreateTexture_Alpha) const = 0;
- virtual QSGRenderer *createRenderer(RenderMode renderMode = RenderMode2D) = 0;
+ virtual QSGRenderer *createRenderer(QSGRendererInterface::RenderMode renderMode = QSGRendererInterface::RenderMode2D) = 0;
virtual QSGTexture *compressedTextureForFactory(const QSGCompressedTextureFactory *) const;
virtual int maxTextureSize() const = 0;
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext.cpp b/src/quick/scenegraph/qsgdefaultrendercontext.cpp
index d939f64590..62d5ccd710 100644
--- a/src/quick/scenegraph/qsgdefaultrendercontext.cpp
+++ b/src/quick/scenegraph/qsgdefaultrendercontext.cpp
@@ -49,6 +49,8 @@
#include <QtQuick/private/qsgcompressedtexture_p.h>
+#include <QtQuick/qsgrendererinterface.h>
+
QT_BEGIN_NAMESPACE
QSGDefaultRenderContext::QSGDefaultRenderContext(QSGContext *context)
@@ -235,7 +237,7 @@ QSGTexture *QSGDefaultRenderContext::createTexture(const QImage &image, uint fla
return texture;
}
-QSGRenderer *QSGDefaultRenderContext::createRenderer(RenderMode renderMode)
+QSGRenderer *QSGDefaultRenderContext::createRenderer(QSGRendererInterface::RenderMode renderMode)
{
return new QSGBatchRenderer::Renderer(this, renderMode);
}
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext_p.h b/src/quick/scenegraph/qsgdefaultrendercontext_p.h
index d92d83eb6b..0b4902ca71 100644
--- a/src/quick/scenegraph/qsgdefaultrendercontext_p.h
+++ b/src/quick/scenegraph/qsgdefaultrendercontext_p.h
@@ -109,7 +109,7 @@ public:
QSGDistanceFieldGlyphCache *distanceFieldGlyphCache(const QRawFont &font) override;
QSGTexture *createTexture(const QImage &image, uint flags) const override;
- QSGRenderer *createRenderer(RenderMode renderMode = RenderMode2D) override;
+ QSGRenderer *createRenderer(QSGRendererInterface::RenderMode renderMode = QSGRendererInterface::RenderMode2D) override;
QSGTexture *compressedTextureForFactory(const QSGCompressedTextureFactory *factory) const override;
virtual void initializeRhiShader(QSGMaterialShader *shader, QShader::Variant shaderVariant);
diff --git a/src/quick/scenegraph/qsgrhilayer.cpp b/src/quick/scenegraph/qsgrhilayer.cpp
index d70f5e97ab..9d3db8354d 100644
--- a/src/quick/scenegraph/qsgrhilayer.cpp
+++ b/src/quick/scenegraph/qsgrhilayer.cpp
@@ -353,8 +353,8 @@ void QSGRhiLayer::grab()
if (!m_renderer) {
static const bool useDepth = qEnvironmentVariableIsEmpty("QSG_NO_DEPTH_BUFFER");
- static const QSGRenderContext::RenderMode renderMode = useDepth ? QSGRenderContext::RenderMode2D
- : QSGRenderContext::RenderMode2DNoDepthBuffer;
+ static const QSGRendererInterface::RenderMode renderMode = useDepth ? QSGRendererInterface::RenderMode2D
+ : QSGRendererInterface::RenderMode2DNoDepthBuffer;
m_renderer = m_context->createRenderer(renderMode);
connect(m_renderer, SIGNAL(sceneGraphChanged()), this, SLOT(markDirtyTexture()));
}