34 Q_PROPERTY(
int fps READ fps NOTIFY fpsChanged)
35 Q_PROPERTY(
float frameTime READ frameTime NOTIFY frameTimeChanged)
36 Q_PROPERTY(
float renderTime READ renderTime NOTIFY renderTimeChanged)
37 Q_PROPERTY(
float renderPrepareTime READ renderPrepareTime NOTIFY renderTimeChanged)
38 Q_PROPERTY(
float syncTime READ syncTime NOTIFY syncTimeChanged)
39 Q_PROPERTY(
float maxFrameTime READ maxFrameTime NOTIFY maxFrameTimeChanged)
41 Q_PROPERTY(
bool extendedDataCollectionEnabled READ extendedDataCollectionEnabled WRITE setExtendedDataCollectionEnabled NOTIFY extendedDataCollectionEnabledChanged)
42 Q_PROPERTY(quint64 drawCallCount READ drawCallCount NOTIFY drawCallCountChanged)
43 Q_PROPERTY(quint64 drawVertexCount READ drawVertexCount NOTIFY drawVertexCountChanged)
44 Q_PROPERTY(quint64 imageDataSize READ imageDataSize NOTIFY imageDataSizeChanged)
45 Q_PROPERTY(quint64 meshDataSize READ meshDataSize NOTIFY meshDataSizeChanged)
46 Q_PROPERTY(
int renderPassCount READ renderPassCount NOTIFY renderPassCountChanged)
47 Q_PROPERTY(QString renderPassDetails READ renderPassDetails NOTIFY renderPassDetailsChanged)
48 Q_PROPERTY(QString textureDetails READ textureDetails NOTIFY textureDetailsChanged)
49 Q_PROPERTY(QString meshDetails READ meshDetails NOTIFY meshDetailsChanged)
50 Q_PROPERTY(
int pipelineCount READ pipelineCount NOTIFY pipelineCountChanged)
51 Q_PROPERTY(qint64 materialGenerationTime READ materialGenerationTime NOTIFY materialGenerationTimeChanged)
52 Q_PROPERTY(qint64 effectGenerationTime READ effectGenerationTime NOTIFY effectGenerationTimeChanged)
53 Q_PROPERTY(qint64 pipelineCreationTime READ pipelineCreationTime NOTIFY pipelineCreationTimeChanged)
54 Q_PROPERTY(quint32 vmemAllocCount READ vmemAllocCount NOTIFY vmemAllocCountChanged)
55 Q_PROPERTY(quint64 vmemUsedBytes READ vmemUsedBytes NOTIFY vmemUsedBytesChanged)
56 Q_PROPERTY(QString graphicsApiName READ graphicsApiName NOTIFY graphicsApiNameChanged)
57 Q_PROPERTY(
float lastCompletedGpuTime READ lastCompletedGpuTime NOTIFY lastCompletedGpuTimeChanged)
59 QML_NAMED_ELEMENT(RenderStats)
60 QML_UNCREATABLE(
"The type is internal and only intended to be accessed by user through a View3D.")
61 QML_ADDED_IN_VERSION(6, 10)
64 QQuick3DRenderStats(QObject *parent =
nullptr);
67 float frameTime()
const;
68 float renderTime()
const;
69 float renderPrepareTime()
const;
70 float syncTime()
const;
71 float maxFrameTime()
const;
74 void endSync(
bool dump =
false);
77 void startRenderPrepare();
78 void endRenderPrepare();
79 void endRender(
bool dump =
false);
81 void setRhiContext(QSSGRhiContext *ctx, QSSGRenderLayer *layer);
83 bool extendedDataCollectionEnabled()
const;
84 void setExtendedDataCollectionEnabled(
bool enable);
86 quint64 drawCallCount()
const;
87 quint64 drawVertexCount()
const;
88 quint64 imageDataSize()
const;
89 quint64 meshDataSize()
const;
90 int renderPassCount()
const;
91 QString renderPassDetails()
const;
92 QString textureDetails()
const;
93 QString meshDetails()
const;
94 int pipelineCount()
const;
95 qint64 materialGenerationTime()
const;
96 qint64 effectGenerationTime()
const;
97 qint64 pipelineCreationTime()
const;
98 quint32 vmemAllocCount()
const;
99 quint64 vmemUsedBytes()
const;
100 QString graphicsApiName()
const;
101 float lastCompletedGpuTime()
const;
103 Q_INVOKABLE
void releaseCachedResources();
105 void setWindow(QQuickWindow *window);
109 void frameTimeChanged();
110 void renderTimeChanged();
111 void syncTimeChanged();
112 void maxFrameTimeChanged();
113 void extendedDataCollectionEnabledChanged();
114 void drawCallCountChanged();
115 void drawVertexCountChanged();
116 void imageDataSizeChanged();
117 void meshDataSizeChanged();
118 void renderPassCountChanged();
119 void renderPassDetailsChanged();
120 void textureDetailsChanged();
121 void meshDetailsChanged();
122 void pipelineCountChanged();
123 void materialGenerationTimeChanged();
124 void effectGenerationTimeChanged();
125 void pipelineCreationTimeChanged();
126 void vmemAllocCountChanged();
127 void vmemUsedBytesChanged();
128 void graphicsApiNameChanged();
129 void lastCompletedGpuTimeChanged();
132 void onFrameSwapped();
135 float timestamp()
const;
136 void processRhiContextStats();
137 void notifyRhiContextStats();
139 QElapsedTimer m_frameTimer;
140 int m_frameCount = 0;
141 float m_secTimer = 0;
142 float m_notifyTimer = 0;
143 float m_renderStartTime = 0;
144 float m_renderPrepareStartTime = 0;
145 float m_syncStartTime = 0;
147 float m_internalMaxFrameTime = 0;
148 float m_maxFrameTime = 0;
154 float renderTime = 0;
155 float renderPrepareTime = 0;
157 float lastCompletedGpuTime = 0;
158 quint64 drawCallCount = 0;
159 quint64 drawVertexCount = 0;
160 quint64 imageDataSize = 0;
161 quint64 meshDataSize = 0;
162 int renderPassCount = 0;
163 QString renderPassDetails;
164 QString textureDetails;
166 QSet<QRhiTexture *> activeTextures;
167 QSet<QSSGRenderMesh *> activeMeshes;
168 int pipelineCount = 0;
169 qint64 materialGenerationTime = 0;
170 qint64 effectGenerationTime = 0;
175 Results m_notifiedResults;
176 QSSGRhiContextStats *m_contextStats =
nullptr;
177 bool m_extendedDataCollectionEnabled =
false;
178 QSSGRenderLayer *m_layer =
nullptr;
179 QMetaObject::Connection m_frameSwappedConnection;
180 QQuickWindow *m_window =
nullptr;
181 bool m_renderingThisFrame =
false;
182 QString m_graphicsApiName;