xref: /aosp_15_r20/external/armnn/profiling/server/include/timelineDecoder/ITimelineDecoder.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 <cstdint>
9*89c4ff92SAndroid Build Coastguard Worker #include <string>
10*89c4ff92SAndroid Build Coastguard Worker 
11*89c4ff92SAndroid Build Coastguard Worker namespace arm
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker 
14*89c4ff92SAndroid Build Coastguard Worker namespace pipe
15*89c4ff92SAndroid Build Coastguard Worker {
16*89c4ff92SAndroid Build Coastguard Worker 
17*89c4ff92SAndroid Build Coastguard Worker class ITimelineDecoder
18*89c4ff92SAndroid Build Coastguard Worker {
19*89c4ff92SAndroid Build Coastguard Worker 
20*89c4ff92SAndroid Build Coastguard Worker public:
21*89c4ff92SAndroid Build Coastguard Worker 
22*89c4ff92SAndroid Build Coastguard Worker     enum class TimelineStatus
23*89c4ff92SAndroid Build Coastguard Worker     {
24*89c4ff92SAndroid Build Coastguard Worker         TimelineStatus_Success,
25*89c4ff92SAndroid Build Coastguard Worker         TimelineStatus_Fail
26*89c4ff92SAndroid Build Coastguard Worker     };
27*89c4ff92SAndroid Build Coastguard Worker 
28*89c4ff92SAndroid Build Coastguard Worker     enum class RelationshipType
29*89c4ff92SAndroid Build Coastguard Worker     {
30*89c4ff92SAndroid Build Coastguard Worker         RetentionLink, /// Head retains(parents) Tail
31*89c4ff92SAndroid Build Coastguard Worker         ExecutionLink, /// Head execution start depends on Tail execution completion
32*89c4ff92SAndroid Build Coastguard Worker         DataLink,      /// Head uses data of Tail
33*89c4ff92SAndroid Build Coastguard Worker         LabelLink      /// Head uses label Tail (Tail MUST be a guid of a label).
34*89c4ff92SAndroid Build Coastguard Worker     };
35*89c4ff92SAndroid Build Coastguard Worker 
GetRelationshipAsCString(RelationshipType rType)36*89c4ff92SAndroid Build Coastguard Worker     static char const* GetRelationshipAsCString(RelationshipType rType)
37*89c4ff92SAndroid Build Coastguard Worker     {
38*89c4ff92SAndroid Build Coastguard Worker         switch (rType)
39*89c4ff92SAndroid Build Coastguard Worker         {
40*89c4ff92SAndroid Build Coastguard Worker             case RelationshipType::RetentionLink: return "RetentionLink";
41*89c4ff92SAndroid Build Coastguard Worker             case RelationshipType::ExecutionLink: return "ExecutionLink";
42*89c4ff92SAndroid Build Coastguard Worker             case RelationshipType::DataLink: return "DataLink";
43*89c4ff92SAndroid Build Coastguard Worker             case RelationshipType::LabelLink: return "LabelLink";
44*89c4ff92SAndroid Build Coastguard Worker             default: return "Unknown";
45*89c4ff92SAndroid Build Coastguard Worker         }
46*89c4ff92SAndroid Build Coastguard Worker     }
47*89c4ff92SAndroid Build Coastguard Worker 
48*89c4ff92SAndroid Build Coastguard Worker     struct Entity
49*89c4ff92SAndroid Build Coastguard Worker     {
50*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_Guid;
51*89c4ff92SAndroid Build Coastguard Worker     };
52*89c4ff92SAndroid Build Coastguard Worker 
53*89c4ff92SAndroid Build Coastguard Worker     struct EventClass
54*89c4ff92SAndroid Build Coastguard Worker     {
55*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_Guid;
56*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_NameGuid;
57*89c4ff92SAndroid Build Coastguard Worker     };
58*89c4ff92SAndroid Build Coastguard Worker 
59*89c4ff92SAndroid Build Coastguard Worker     struct Event
60*89c4ff92SAndroid Build Coastguard Worker     {
61*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_Guid;
62*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_TimeStamp;
63*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_ThreadId;
64*89c4ff92SAndroid Build Coastguard Worker     };
65*89c4ff92SAndroid Build Coastguard Worker 
66*89c4ff92SAndroid Build Coastguard Worker     struct Label
67*89c4ff92SAndroid Build Coastguard Worker     {
68*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_Guid;
69*89c4ff92SAndroid Build Coastguard Worker         std::string m_Name;
70*89c4ff92SAndroid Build Coastguard Worker     };
71*89c4ff92SAndroid Build Coastguard Worker 
72*89c4ff92SAndroid Build Coastguard Worker     struct Relationship
73*89c4ff92SAndroid Build Coastguard Worker     {
74*89c4ff92SAndroid Build Coastguard Worker         RelationshipType m_RelationshipType;
75*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_Guid;
76*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_HeadGuid;
77*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_TailGuid;
78*89c4ff92SAndroid Build Coastguard Worker         uint64_t m_AttributeGuid;
79*89c4ff92SAndroid Build Coastguard Worker     };
80*89c4ff92SAndroid Build Coastguard Worker 
81*89c4ff92SAndroid Build Coastguard Worker     virtual ~ITimelineDecoder() = default;
82*89c4ff92SAndroid Build Coastguard Worker 
83*89c4ff92SAndroid Build Coastguard Worker     virtual TimelineStatus CreateEntity(const Entity&) = 0;
84*89c4ff92SAndroid Build Coastguard Worker     virtual TimelineStatus CreateEventClass(const EventClass&) = 0;
85*89c4ff92SAndroid Build Coastguard Worker     virtual TimelineStatus CreateEvent(const Event&) = 0;
86*89c4ff92SAndroid Build Coastguard Worker     virtual TimelineStatus CreateLabel(const Label&) = 0;
87*89c4ff92SAndroid Build Coastguard Worker     virtual TimelineStatus CreateRelationship(const Relationship&) = 0;
88*89c4ff92SAndroid Build Coastguard Worker };
89*89c4ff92SAndroid Build Coastguard Worker 
90*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe
91*89c4ff92SAndroid Build Coastguard Worker } // namespace arm
92