Loading libs/hwui/DeferredLayerUpdater.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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) { Loading Loading @@ -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; } } } Loading libs/hwui/DeferredLayerUpdater.h +7 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #pragma once #include <EGL/egl.h> #include <EGL/eglext.h> #include <SkBlendMode.h> #include <SkColorFilter.h> #include <SkImage.h> Loading @@ -24,9 +26,9 @@ #include <android/surface_texture.h> #include <cutils/compiler.h> #include <utils/Errors.h> #include <utils/Timers.h> #include <EGL/egl.h> #include <EGL/eglext.h> #include <chrono> #include <map> #include <memory> Loading Loading @@ -154,6 +156,9 @@ private: bool mGLContextAttached; bool mUpdateTexImage; int mCurrentSlot = -1; android_dataspace mDataspace = HAL_DATASPACE_UNKNOWN; std::chrono::steady_clock::time_point mFirstTimeForDataspace = std::chrono::steady_clock::time_point::min(); Layer* mLayer; }; Loading Loading
libs/hwui/DeferredLayerUpdater.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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) { Loading Loading @@ -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; } } } Loading
libs/hwui/DeferredLayerUpdater.h +7 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #pragma once #include <EGL/egl.h> #include <EGL/eglext.h> #include <SkBlendMode.h> #include <SkColorFilter.h> #include <SkImage.h> Loading @@ -24,9 +26,9 @@ #include <android/surface_texture.h> #include <cutils/compiler.h> #include <utils/Errors.h> #include <utils/Timers.h> #include <EGL/egl.h> #include <EGL/eglext.h> #include <chrono> #include <map> #include <memory> Loading Loading @@ -154,6 +156,9 @@ private: bool mGLContextAttached; bool mUpdateTexImage; int mCurrentSlot = -1; android_dataspace mDataspace = HAL_DATASPACE_UNKNOWN; std::chrono::steady_clock::time_point mFirstTimeForDataspace = std::chrono::steady_clock::time_point::min(); Layer* mLayer; }; Loading