1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd. 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 <client/include/CounterStatus.hpp> 9*89c4ff92SAndroid Build Coastguard Worker #include <client/include/CounterValue.hpp> 10*89c4ff92SAndroid Build Coastguard Worker #include <client/include/IProfilingService.hpp> 11*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ISendCounterPacket.hpp> 12*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ISendTimelinePacket.hpp> 13*89c4ff92SAndroid Build Coastguard Worker #include <client/include/ProfilingOptions.hpp> 14*89c4ff92SAndroid Build Coastguard Worker #include <client/include/Timestamp.hpp> 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker #include <common/include/IProfilingGuidGenerator.hpp> 17*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Optional.hpp> 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker #include <memory> 20*89c4ff92SAndroid Build Coastguard Worker #include <vector> 21*89c4ff92SAndroid Build Coastguard Worker 22*89c4ff92SAndroid Build Coastguard Worker namespace arm 23*89c4ff92SAndroid Build Coastguard Worker { 24*89c4ff92SAndroid Build Coastguard Worker 25*89c4ff92SAndroid Build Coastguard Worker namespace pipe 26*89c4ff92SAndroid Build Coastguard Worker { 27*89c4ff92SAndroid Build Coastguard Worker 28*89c4ff92SAndroid Build Coastguard Worker class IRegisterBackendCounters 29*89c4ff92SAndroid Build Coastguard Worker { 30*89c4ff92SAndroid Build Coastguard Worker public: 31*89c4ff92SAndroid Build Coastguard Worker virtual void RegisterCategory(const std::string& categoryName) = 0; 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard Worker virtual uint16_t RegisterDevice(const std::string& deviceName, 34*89c4ff92SAndroid Build Coastguard Worker uint16_t cores = 0, 35*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName 36*89c4ff92SAndroid Build Coastguard Worker = arm::pipe::EmptyOptional()) = 0; 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker virtual uint16_t RegisterCounterSet(const std::string& counterSetName, 39*89c4ff92SAndroid Build Coastguard Worker uint16_t count = 0, 40*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName 41*89c4ff92SAndroid Build Coastguard Worker = arm::pipe::EmptyOptional()) = 0; 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker virtual uint16_t RegisterCounter(const uint16_t uid, 44*89c4ff92SAndroid Build Coastguard Worker const std::string& parentCategoryName, 45*89c4ff92SAndroid Build Coastguard Worker uint16_t counterClass, 46*89c4ff92SAndroid Build Coastguard Worker uint16_t interpolation, 47*89c4ff92SAndroid Build Coastguard Worker double multiplier, 48*89c4ff92SAndroid Build Coastguard Worker const std::string& name, 49*89c4ff92SAndroid Build Coastguard Worker const std::string& description, 50*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(), 51*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(), 52*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(), 53*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) = 0; 54*89c4ff92SAndroid Build Coastguard Worker ~IRegisterBackendCounters()55*89c4ff92SAndroid Build Coastguard Worker virtual ~IRegisterBackendCounters() {} 56*89c4ff92SAndroid Build Coastguard Worker }; 57*89c4ff92SAndroid Build Coastguard Worker 58*89c4ff92SAndroid Build Coastguard Worker class IBackendProfiling 59*89c4ff92SAndroid Build Coastguard Worker { 60*89c4ff92SAndroid Build Coastguard Worker public: 61*89c4ff92SAndroid Build Coastguard Worker static std::unique_ptr<IBackendProfiling> CreateBackendProfiling(const ProfilingOptions& options, 62*89c4ff92SAndroid Build Coastguard Worker IProfilingService& profilingService, 63*89c4ff92SAndroid Build Coastguard Worker const std::string& backendId); ~IBackendProfiling()64*89c4ff92SAndroid Build Coastguard Worker virtual ~IBackendProfiling() 65*89c4ff92SAndroid Build Coastguard Worker {} 66*89c4ff92SAndroid Build Coastguard Worker 67*89c4ff92SAndroid Build Coastguard Worker virtual std::unique_ptr<IRegisterBackendCounters> 68*89c4ff92SAndroid Build Coastguard Worker GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0; 69*89c4ff92SAndroid Build Coastguard Worker 70*89c4ff92SAndroid Build Coastguard Worker virtual std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() = 0; 71*89c4ff92SAndroid Build Coastguard Worker 72*89c4ff92SAndroid Build Coastguard Worker virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0; 73*89c4ff92SAndroid Build Coastguard Worker 74*89c4ff92SAndroid Build Coastguard Worker virtual void ReportCounters(const std::vector<Timestamp>& counterValues) = 0; 75*89c4ff92SAndroid Build Coastguard Worker 76*89c4ff92SAndroid Build Coastguard Worker virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0; 77*89c4ff92SAndroid Build Coastguard Worker 78*89c4ff92SAndroid Build Coastguard Worker virtual std::vector<CounterStatus> GetActiveCounters() = 0; 79*89c4ff92SAndroid Build Coastguard Worker 80*89c4ff92SAndroid Build Coastguard Worker virtual bool IsProfilingEnabled() const = 0; 81*89c4ff92SAndroid Build Coastguard Worker 82*89c4ff92SAndroid Build Coastguard Worker }; 83*89c4ff92SAndroid Build Coastguard Worker 84*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 85*89c4ff92SAndroid Build Coastguard Worker 86*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 87