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

Commit ef3ecd50 authored by Alec Mouri's avatar Alec Mouri
Browse files

Add metrics for TextureView dataspace changes

Bug: 329475035
Flag: EXEMPT logging only
Test: builds
Test: GraphicsAtomTests
Change-Id: Ia65ceb3bf205e3050b182aa6d170a453076bdc4c
parent 1be78c0f
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;
};