diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml
index 2406fa048d..bff13cea54 100644
--- a/interface/resources/qml/Stats.qml
+++ b/interface/resources/qml/Stats.qml
@@ -263,6 +263,12 @@ Item {
}
StatText {
text: "GPU: " + root.gpuFrameTime.toFixed(1) + " ms"
+ }
+ StatText {
+ text: "GPU (Per pixel): " + root.gpuFrameTimePerPixel.toFixed(5) + " ns/pp"
+ }
+ StatText {
+ text: "GPU frame size: " + root.gpuFrameSize.x + " x " + root.gpuFrameSize.y
}
StatText {
text: "Triangles: " + root.triangles +
diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp
index c7ee868855..6bb615948c 100644
--- a/interface/src/ui/Stats.cpp
+++ b/interface/src/ui/Stats.cpp
@@ -333,7 +333,13 @@ void Stats::updateStats(bool force) {
}
auto gpuContext = qApp->getGPUContext();
-
+ auto displayPlugin = qApp->getActiveDisplayPlugin();
+ if (displayPlugin) {
+ QVector2D dims(displayPlugin->getRecommendedRenderSize().x, displayPlugin->getRecommendedRenderSize().y);
+ dims *= displayPlugin->getRenderResolutionScale();
+ STAT_UPDATE(gpuFrameSize, dims);
+ STAT_UPDATE(gpuFrameTimePerPixel, (float)(gpuContext->getFrameTimerGPUAverage()*1000000.0 / double(dims.x()*dims.y())));
+ }
// Update Frame timing (in ms)
STAT_UPDATE(gpuFrameTime, (float)gpuContext->getFrameTimerGPUAverage());
STAT_UPDATE(batchFrameTime, (float)gpuContext->getFrameTimerBatchAverage());
diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h
index 36e923261d..f4181f9788 100644
--- a/interface/src/ui/Stats.h
+++ b/interface/src/ui/Stats.h
@@ -276,7 +276,9 @@ class Stats : public QQuickItem {
STATS_PROPERTY(int, gpuTextureExternalMemory, 0)
STATS_PROPERTY(QString, gpuTextureMemoryPressureState, QString())
STATS_PROPERTY(int, gpuFreeMemory, 0)
+ STATS_PROPERTY(QVector2D, gpuFrameSize, QVector2D(0,0))
STATS_PROPERTY(float, gpuFrameTime, 0)
+ STATS_PROPERTY(float, gpuFrameTimePerPixel, 0)
STATS_PROPERTY(float, batchFrameTime, 0)
STATS_PROPERTY(float, engineFrameTime, 0)
STATS_PROPERTY(float, avatarSimulationTime, 0)
@@ -962,6 +964,20 @@ signals:
*/
void gpuFrameTimeChanged();
+ /**jsdoc
+ * Triggered when the value of the gpuFrameTime
property changes.
+ * @function Stats.gpuFrameTimeChanged
+ * @returns {Signal}
+ */
+ void gpuFrameSizeChanged();
+
+ /**jsdoc
+ * Triggered when the value of the gpuFrameTime
property changes.
+ * @function Stats.gpuFrameTimeChanged
+ * @returns {Signal}
+ */
+ void gpuFrameTimePerPixelChanged();
+
/**jsdoc
* Triggered when the value of the batchFrameTime
property changes.
* @function Stats.batchFrameTimeChanged