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