         
syntax = "proto2";
package NV.Profiler.Messages;
// enable arenas for better allocation performance
option cc_enable_arenas = true;
// Array of 3 for dimensions and work offset. Rather than making a coords, and a separate dimensions message.
// Please be careful if you need to modify this, as it is used in the report file.
message Uint64x3
{
    optional uint64 X = 1;
    optional uint64 Y = 2;
    optional uint64 Z = 3;
}
enum APIType
{
    APIType_CUDA = 0;
    APIType_OpenCL = 1;
    APIType_Direct3D = 2;
    APIType_OpenGL = 3;
}
// Required to be in sync with NvGpuArch's SassLevel
enum SourceSassLevel
{
    SourceSassLevel_Unset = 0;
    SourceSassLevel_Sass1 = 1;
    SourceSassLevel_Sass2 = 2;
    SourceSassLevel_Sass3 = 3;
    SourceSassLevel_Sass4 = 4;
    SourceSassLevel_Sass5 = 5;
    SourceSassLevel_Sass6 = 6;
    SourceSassLevel_Sass7 = 7;
    SourceSassLevel_Sass8 = 8;
}
message SourceFile
{
    required string FileName = 1;
    optional string Content = 2;
}
message SourceFiles
{
    repeated SourceFile Files = 1;
}
message SourceData
{
    optional uint64 Reference = 1;
    optional string Code = 2;
    optional bytes Intermediate = 3;
    optional bytes Binary = 4;
    optional SourceSassLevel SassLevel = 5;
    optional uint32 SMRevision = 6;
    optional uint32 BinaryFlags = 7;
    optional SourceFiles SourceFiles = 8;
}
message ExecutableSettings
{
    required string ExecutablePath = 1;
    optional string WorkDirectory = 2;
    optional string CmdlineAgruments = 3;
    optional string Environment = 4;
}
