         
syntax = "proto2";
package NV.Profiler.Messages;
enum GpuArch
{
    option allow_alias = true;
    InvalidArch = 0;
    MinArch = 53;
    CC_53 = 53;
    CC_60 = 60;
    CC_61 = 61;
    CC_62 = 62;
    CC_70 = 70;
    CC_72 = 72;
    CC_75 = 75;
    CC_80 = 80;
    CC_86 = 86;
    CC_87 = 87;
    CC_88 = 88;
    CC_89 = 89;
    CC_90 = 90;
    CC_100 = 100;
    CC_103 = 103;
    CC_110 = 110;
    CC_120 = 120;
    CC_121 = 121;
    MaxArch = 121;
}
enum CollectionScope
{
    CollectionScope_Launch = 1;
    CollectionScope_Range = 2;
    CollectionScope_Cmdlist = 3;
}
enum CollectionImportance
{
    CollectionImportance_Required = 1;
    CollectionImportance_Optional = 2;
}
message CollectionFilter
{
    // if set, scopes for which to enable collection
    repeated CollectionScope CollectionScopes = 1;
    optional CollectionImportance Importance = 2;
}
enum PlatformSupport
{
    // platform is supported (but not required)
    Platform_Supported = 1;
    // platform is not supported
    Platform_NotSupported = 2;
    // platform is required
    Platform_Required = 3;
}
message MetricOptionFilterItem
{
    // if either one is not set, the respective value from GpuArch is taken
    optional GpuArch MinArch = 1;
    optional GpuArch MaxArch = 2;
    // Gpu display driver version information.
    // If MinKmd is not set, 1 is taken as minimum driver version
    // If MaxKmd is not set, float max limit is taken as maximum driver version
    optional float MinKmd = 3;
    optional float MaxKmd = 4;
}
message MetricOptionFilter
{
    // kept for backwards-compatibility
    optional GpuArch MinArch = 1;
    optional GpuArch MaxArch = 2;
    // setting Items overrides MinArch/MaxArch
    repeated MetricOptionFilterItem Items = 3;
    optional CollectionFilter CollectionFilter = 4;
    optional PlatformSupport VGpu = 5;
    optional float MinKmd = 6;
    optional float MaxKmd = 7;
}
