1 // Copyright (C) 2019 The Android Open Source Project 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #ifndef COMPUTEPIPE_RUNNER_ENGINE_CONFIGBUILDER_H_ 16 #define COMPUTEPIPE_RUNNER_ENGINE_CONFIGBUILDER_H_ 17 18 #include "ProfilingType.pb.h" 19 20 #include "RunnerComponent.h" 21 #include "types/Status.h" 22 23 namespace android { 24 namespace automotive { 25 namespace computepipe { 26 namespace runner { 27 namespace engine { 28 29 class ConfigBuilder { 30 public: 31 /** 32 * Set debug display stream in the final client config 33 */ 34 void setDebugDisplayStream(int id); 35 /** 36 * Does client explicitly enable display stream 37 */ 38 bool clientConfigEnablesDisplayStream(); 39 /** 40 * Update current input option 41 */ 42 ConfigBuilder& updateInputConfigOption(int id); 43 /** 44 * Update current output options 45 */ 46 ConfigBuilder& updateOutputStreamOption(int id, int maxInFlightPackets); 47 /** 48 * Update current termination options 49 */ 50 ConfigBuilder& updateTerminationOption(int id); 51 /** 52 * Update current offload options 53 */ 54 ConfigBuilder& updateOffloadOption(int id); 55 /** 56 * Update optional Config 57 */ 58 ConfigBuilder& updateOptionalConfig(std::string options); 59 /** 60 * Update profiling Config 61 */ 62 ConfigBuilder& updateProfilingType(proto::ProfilingType profilingType); 63 /** 64 * Emit Options 65 */ 66 ClientConfig emitClientOptions(); 67 /** 68 * Clear current options. 69 */ 70 ConfigBuilder& reset(); 71 72 private: 73 int mDisplayStream = ClientConfig::kInvalidId; 74 int mInputConfigId = ClientConfig::kInvalidId; 75 int mOffloadId = ClientConfig::kInvalidId; 76 int mTerminationId = ClientConfig::kInvalidId; 77 proto::ProfilingType mProfilingType = proto::ProfilingType::DISABLED; 78 bool mConfigHasDisplayStream = false; 79 std::map<int, int> mOutputConfig; 80 std::string mOptionalConfig; 81 }; 82 83 } // namespace engine 84 } // namespace runner 85 } // namespace computepipe 86 } // namespace automotive 87 } // namespace android 88 89 #endif // COMPUTEPIPE_RUNNER_ENGINE_CONFIGBUILDER_H_ 90