// Copyright 2020 The TensorFlow Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace tflite.acceleration; enum Comparison : byte { EQUAL = 0, MINIMUM = 1, MAXIMUM = 2, } // Mapping from available device features to compatibility decisions. Basic usage is to: // 1) Map easily available device data (like Android version, // Manufacturer, Device) to things like SoC vendor, SoC model. // 2) Map complete device data to delegate-specific features and support status // 3) Map delegate-specific features to delegate configuration. // // The structure describes a decision tree, with multiple matching branches. // The branches are applied depth-first. table DeviceDatabase { root:[DeviceDecisionTreeNode]; } table DeviceDecisionTreeNode { // The variables are strings, as we have multiple clients that want to // introduce their own fields. Known variables are listed in variables.h. variable:string (shared); comparison:Comparison; items:[DeviceDecisionTreeEdge]; } table DeviceDecisionTreeEdge { // Under which variable value does this item match. value:string (key, shared); // Which child branches should also be consulted and used to override this // node. children:[DeviceDecisionTreeNode]; // What information can be derived about this device. derived_properties:[DerivedProperty]; } // Derived variable value to combine with detected variables. table DerivedProperty { variable:string (shared); value:string (shared); } root_type DeviceDatabase;