Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56c6f203 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add metrics for TextureView dataspace changes" into main

parents 7f2aa00d ef3ecd50
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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;
                }
            }
        }

+7 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

#pragma once

#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <SkBlendMode.h>
#include <SkColorFilter.h>
#include <SkImage.h>
@@ -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>

@@ -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;
};