summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredLayerUpdater.cpp
diff options
context:
space:
mode:
author Alec Mouri <alecmouri@google.com> 2024-09-24 21:00:32 +0000
committer Alec Mouri <alecmouri@google.com> 2024-10-04 19:14:46 +0000
commitef3ecd5096d8f4a4c92dd19e0d9ae09320455ba9 (patch)
tree30ad908fd45c4dcc2385052cf1842cf59f52cada /libs/hwui/DeferredLayerUpdater.cpp
parent1be78c0ffa559ea633744da3cd258edf3d13e607 (diff)
Add metrics for TextureView dataspace changes
Bug: 329475035 Flag: EXEMPT logging only Test: builds Test: GraphicsAtomTests Change-Id: Ia65ceb3bf205e3050b182aa6d170a453076bdc4c
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.cpp')
-rw-r--r--libs/hwui/DeferredLayerUpdater.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp
index b763a96e8e8a..c0160705fd47 100644
--- a/libs/hwui/DeferredLayerUpdater.cpp
+++ b/libs/hwui/DeferredLayerUpdater.cpp
@@ -19,6 +19,7 @@
#include <GLES2/gl2ext.h>
// TODO: Use public SurfaceTexture APIs once available and include public NDK header file instead.
+#include <statslog_hwui.h>
#include <surfacetexture/surface_texture_platform.h>
#include "AutoBackendTextureRelease.h"
@@ -50,6 +51,14 @@ DeferredLayerUpdater::~DeferredLayerUpdater() {
setTransform(nullptr);
mRenderState.removeContextCallback(this);
destroyLayer();
+ if (mFirstTimeForDataspace > std::chrono::steady_clock::time_point::min()) {
+ auto currentTime = std::chrono::steady_clock::now();
+ stats_write(stats::TEXTURE_VIEW_EVENT, static_cast<int32_t>(getuid()),
+ static_cast<int64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(
+ currentTime - mFirstTimeForDataspace)
+ .count()),
+ mDataspace);
+ }
}
void DeferredLayerUpdater::setSurfaceTexture(AutoTextureRelease&& consumer) {
@@ -195,6 +204,21 @@ void DeferredLayerUpdater::apply() {
updateLayer(forceFilter, layerImage, outTransform, currentCropRect,
maxLuminanceNits);
}
+
+ if (dataspace != mDataspace ||
+ mFirstTimeForDataspace == std::chrono::steady_clock::time_point::min()) {
+ auto currentTime = std::chrono::steady_clock::now();
+ if (mFirstTimeForDataspace > std::chrono::steady_clock::time_point::min()) {
+ stats_write(stats::TEXTURE_VIEW_EVENT, static_cast<int32_t>(getuid()),
+ static_cast<int64_t>(
+ std::chrono::duration_cast<std::chrono::milliseconds>(
+ currentTime - mFirstTimeForDataspace)
+ .count()),
+ mDataspace);
+ }
+ mFirstTimeForDataspace = currentTime;
+ mDataspace = dataspace;
+ }
}
}