diff options
Diffstat (limited to 'src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h index 379c0ee00e..c38c483df4 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h @@ -371,7 +371,7 @@ public: float lastOpacity; }; - ShaderManager() : blitProgram(0) { } + ShaderManager() : blitProgram(0), visualizeProgram(0) { } ~ShaderManager() { qDeleteAll(rewrittenShaders.values()); qDeleteAll(stockShaders.values()); @@ -388,6 +388,7 @@ public: QHash<QSGMaterialType *, Shader *> stockShaders; QOpenGLShaderProgram *blitProgram; + QOpenGLShaderProgram *visualizeProgram; }; class Q_QUICK_PRIVATE_EXPORT Renderer : public QSGRenderer @@ -396,6 +397,14 @@ public: Renderer(QSGRenderContext *); ~Renderer(); + enum VisualizeMode { + VisualizeNothing, + VisualizeBatches, + VisualizeClipping, + VisualizeChanges, + VisualizeOverdraw + }; + protected: void nodeChanged(QSGNode *node, QSGNode::DirtyState state); void preprocess() Q_DECL_OVERRIDE; @@ -451,6 +460,16 @@ private: inline Batch *newBatch(); void invalidateAndRecycleBatch(Batch *b); + void visualize(); + void visualizeBatch(Batch *b); + void visualizeClipping(QSGNode *node); + void visualizeChangesPrepare(Node *n, uint parentChanges = 0); + void visualizeChanges(Node *n); + void visualizeOverdraw(); + void visualizeOverdraw_helper(Node *node); + void visualizeDrawGeometry(const QSGGeometry *g); + void setCustomRenderMode(const QByteArray &mode); + QSet<Node *> m_taggedRoots; QDataBuffer<Element *> m_opaqueRenderList; QDataBuffer<Element *> m_alphaRenderList; @@ -487,6 +506,9 @@ private: // For minimal OpenGL core profile support QOpenGLVertexArrayObject *m_vao; + + QHash<Node *, uint> m_visualizeChanceSet; + VisualizeMode m_visualizeMode; }; Batch *Renderer::newBatch() |