syntax = "proto2";
package NV.Profiler.Messages;

enum GpuArch
{
    option allow_alias = true;
    InvalidArch  = 0;

    MinArch      =

        50;

    CC_50        = 50;

    CC_52        = 52;
    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_89        = 89;

    CC_90        = 90;

    MaxArch      =

        90;

}

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;
}

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;
}

