xref: /aosp_15_r20/external/armnn/profiling/client/include/IProfilingService.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include "CounterIdMap.hpp"
9*89c4ff92SAndroid Build Coastguard Worker #include "Holder.hpp"
10*89c4ff92SAndroid Build Coastguard Worker #include "ICounterValues.hpp"
11*89c4ff92SAndroid Build Coastguard Worker #include "IInitialiseProfilingService.hpp"
12*89c4ff92SAndroid Build Coastguard Worker #include "IProfilingServiceStatus.hpp"
13*89c4ff92SAndroid Build Coastguard Worker #include "ISendCounterPacket.hpp"
14*89c4ff92SAndroid Build Coastguard Worker #include "ISendTimelinePacket.hpp"
15*89c4ff92SAndroid Build Coastguard Worker #include "IReportStructure.hpp"
16*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingOptions.hpp"
17*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingState.hpp"
18*89c4ff92SAndroid Build Coastguard Worker 
19*89c4ff92SAndroid Build Coastguard Worker #include <common/include/ICounterRegistry.hpp>
20*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Optional.hpp>
21*89c4ff92SAndroid Build Coastguard Worker #include <common/include/ProfilingGuidGenerator.hpp>
22*89c4ff92SAndroid Build Coastguard Worker 
23*89c4ff92SAndroid Build Coastguard Worker 
24*89c4ff92SAndroid Build Coastguard Worker namespace arm
25*89c4ff92SAndroid Build Coastguard Worker {
26*89c4ff92SAndroid Build Coastguard Worker 
27*89c4ff92SAndroid Build Coastguard Worker namespace pipe
28*89c4ff92SAndroid Build Coastguard Worker {
29*89c4ff92SAndroid Build Coastguard Worker 
30*89c4ff92SAndroid Build Coastguard Worker // forward declaration
31*89c4ff92SAndroid Build Coastguard Worker class IBackendProfilingContext;
32*89c4ff92SAndroid Build Coastguard Worker 
33*89c4ff92SAndroid Build Coastguard Worker class IProfilingService : public IProfilingGuidGenerator,
34*89c4ff92SAndroid Build Coastguard Worker                           public IProfilingServiceStatus,
35*89c4ff92SAndroid Build Coastguard Worker                           public IReadWriteCounterValues
36*89c4ff92SAndroid Build Coastguard Worker {
37*89c4ff92SAndroid Build Coastguard Worker public:
38*89c4ff92SAndroid Build Coastguard Worker     static std::unique_ptr<IProfilingService> CreateProfilingService(
39*89c4ff92SAndroid Build Coastguard Worker         uint16_t maxGlobalCounterId,
40*89c4ff92SAndroid Build Coastguard Worker         IInitialiseProfilingService& initialiser,
41*89c4ff92SAndroid Build Coastguard Worker         const std::string& softwareInfo,
42*89c4ff92SAndroid Build Coastguard Worker         const std::string& softwareVersion,
43*89c4ff92SAndroid Build Coastguard Worker         const std::string& hardwareVersion,
44*89c4ff92SAndroid Build Coastguard Worker         arm::pipe::Optional<IReportStructure&> reportStructure = arm::pipe::EmptyOptional());
~IProfilingService()45*89c4ff92SAndroid Build Coastguard Worker     virtual ~IProfilingService() {};
46*89c4ff92SAndroid Build Coastguard Worker     virtual std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() const = 0;
47*89c4ff92SAndroid Build Coastguard Worker     virtual const ICounterMappings& GetCounterMappings() const = 0;
48*89c4ff92SAndroid Build Coastguard Worker     virtual ISendCounterPacket& GetSendCounterPacket() = 0;
49*89c4ff92SAndroid Build Coastguard Worker     virtual bool IsProfilingEnabled() const = 0;
50*89c4ff92SAndroid Build Coastguard Worker     virtual bool IsTimelineReportingEnabled() const = 0;
51*89c4ff92SAndroid Build Coastguard Worker     virtual CaptureData GetCaptureData() = 0;
52*89c4ff92SAndroid Build Coastguard Worker     virtual ProfilingState GetCurrentState() const = 0;
53*89c4ff92SAndroid Build Coastguard Worker     // Resets the profiling options, optionally clears the profiling service entirely
54*89c4ff92SAndroid Build Coastguard Worker     virtual void ResetExternalProfilingOptions(const ProfilingOptions& options,
55*89c4ff92SAndroid Build Coastguard Worker                                                bool resetProfilingService = false) = 0;
56*89c4ff92SAndroid Build Coastguard Worker     virtual ProfilingState ConfigureProfilingService(const ProfilingOptions& options,
57*89c4ff92SAndroid Build Coastguard Worker                                                      bool resetProfilingService = false) = 0;
58*89c4ff92SAndroid Build Coastguard Worker     // Store a profiling context returned from a backend that support profiling.
59*89c4ff92SAndroid Build Coastguard Worker     virtual void AddBackendProfilingContext(const std::string& backendId,
60*89c4ff92SAndroid Build Coastguard Worker         std::shared_ptr<IBackendProfilingContext> profilingContext) = 0;
61*89c4ff92SAndroid Build Coastguard Worker     virtual ICounterRegistry& GetCounterRegistry() = 0;
62*89c4ff92SAndroid Build Coastguard Worker     virtual IRegisterCounterMapping& GetCounterMappingRegistry() = 0;
63*89c4ff92SAndroid Build Coastguard Worker     virtual bool IsCategoryRegistered(const std::string& categoryName) const = 0;
64*89c4ff92SAndroid Build Coastguard Worker     virtual void InitializeCounterValue(uint16_t counterUid) = 0;
65*89c4ff92SAndroid Build Coastguard Worker 
66*89c4ff92SAndroid Build Coastguard Worker     // IProfilingGuidGenerator functions
67*89c4ff92SAndroid Build Coastguard Worker     /// Return the next random Guid in the sequence
68*89c4ff92SAndroid Build Coastguard Worker     ProfilingDynamicGuid NextGuid() override;
69*89c4ff92SAndroid Build Coastguard Worker     /// Create a ProfilingStaticGuid based on a hash of the string
70*89c4ff92SAndroid Build Coastguard Worker     ProfilingStaticGuid GenerateStaticId(const std::string& str) override;
71*89c4ff92SAndroid Build Coastguard Worker     static ProfilingDynamicGuid GetNextGuid();
72*89c4ff92SAndroid Build Coastguard Worker     static ProfilingStaticGuid GetStaticId(const std::string& str);
73*89c4ff92SAndroid Build Coastguard Worker     void ResetGuidGenerator();
74*89c4ff92SAndroid Build Coastguard Worker 
75*89c4ff92SAndroid Build Coastguard Worker     virtual void Disconnect() = 0;
76*89c4ff92SAndroid Build Coastguard Worker 
77*89c4ff92SAndroid Build Coastguard Worker private:
78*89c4ff92SAndroid Build Coastguard Worker     static ProfilingGuidGenerator m_GuidGenerator;
79*89c4ff92SAndroid Build Coastguard Worker };
80*89c4ff92SAndroid Build Coastguard Worker 
81*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe
82*89c4ff92SAndroid Build Coastguard Worker 
83*89c4ff92SAndroid Build Coastguard Worker } // namespace arm
84