blob: 2d1e488748e71bcdcd282e5ee8bd6f2d25259662 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_STARTUP_METRIC_UTILS_GPU_STARTUP_METRIC_UTILS_H_
#define COMPONENTS_STARTUP_METRIC_UTILS_GPU_STARTUP_METRIC_UTILS_H_
#include "base/component_export.h"
#include "base/time/time.h"
// Utility functions to support metric collection for gpu startup. Timings
// should use TimeTicks whenever possible.
namespace startup_metric_utils {
class COMPONENT_EXPORT(STARTUP_METRIC_UTILS) GpuStartupMetricRecorder final {
public:
// Call this when the GPU has finished its initialization. Must be called
// after RecordStartupProcessCreationTime, because it computes time deltas
// based on process creation time.
void RecordGpuInitialized(base::TimeTicks ticks);
private:
friend COMPONENT_EXPORT(STARTUP_METRIC_UTILS)
GpuStartupMetricRecorder& GetGpu();
base::TimeTicks gpu_initialized_ticks_;
void RecordGpuInitializationTicks(base::TimeTicks ticks);
};
COMPONENT_EXPORT(STARTUP_METRIC_UTILS)
GpuStartupMetricRecorder& GetGpu();
} // namespace startup_metric_utils
#endif // COMPONENTS_STARTUP_METRIC_UTILS_GPU_STARTUP_METRIC_UTILS_H_