blob: a2e0a3b9d129298ea804fc8b31a76d33d76944ad [file] [log] [blame]
Colm Donelane49755b2020-01-29 15:22:43 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
Colm Donelan1aff3932020-02-05 17:48:59 +00007#include "IBackendProfiling.hpp"
Jim Flynn3e9bc192022-03-23 23:01:26 +00008
9#include <common/include/Optional.hpp>
10
Colm Donelane49755b2020-01-29 15:22:43 +000011#include <vector>
12
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace arm
Colm Donelane49755b2020-01-29 15:22:43 +000014{
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000015namespace pipe
Colm Donelane49755b2020-01-29 15:22:43 +000016{
17
18class IBackendProfilingContext
19{
Colm Donelane49755b2020-01-29 15:22:43 +000020public:
21 virtual ~IBackendProfilingContext()
22 {}
David Monahanc1536d62020-02-12 15:52:35 +000023 virtual uint16_t RegisterCounters(uint16_t currentMaxGlobalCounterID) = 0;
Jim Flynndecd08b2022-03-13 22:35:46 +000024 virtual arm::pipe::Optional<std::string> ActivateCounters(
25 uint32_t capturePeriod, const std::vector<uint16_t>& counterIds) = 0;
Jim Flynn3e9bc192022-03-23 23:01:26 +000026 virtual std::vector<arm::pipe::Timestamp> ReportCounterValues() = 0;
David Monahanb015e5d2020-02-26 10:24:03 +000027 virtual bool EnableProfiling(bool flag) = 0;
Keith Davis33ed2212020-03-30 10:43:41 +010028 virtual bool EnableTimelineReporting(bool flag) = 0;
Colm Donelane49755b2020-01-29 15:22:43 +000029};
30
31using IBackendProfilingContextUniquePtr = std::unique_ptr<IBackendProfilingContext>;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000032} // namespace pipe
Jim Flynn8de9d442022-03-07 14:14:28 +000033} // namespace arm