blob: e00b39e068f3758ff0ce4796786ef8d38210de12 [file] [log] [blame] [edit]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* 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.
*/
syntax = "proto2";
package perfetto.protos;
// next id: 15
message GpuRenderStageEvent {
// required. Unique ID for the event.
optional uint64 event_id = 1;
// optional. Duration of the event in nanoseconds. If unset, this is a
// single time point event.
optional uint64 duration = 2;
// required. ID to a hardware queue description in the specifications.
// InternedGpuRenderStageSpecification
optional uint64 hw_queue_iid = 13;
// required. ID to a render stage description in the specifications.
// InternedGpuRenderStageSpecification
optional uint64 stage_iid = 14;
// optional. Identifier for GPU in a multi-gpu device.
optional int32 gpu_id = 11;
// required. Graphics context for the event.
// For OpenGL, this is the GL context.
// For Vulkan, this is the VkDevice.
optional uint64 context = 5;
// optional. The render target for this event.
// For OpenGL, this is the GL frame buffer handle.
// For Vulkan, this is the VkFrameBuffer handle.
optional uint64 render_target_handle = 8;
// optional. Submission ID generated by the UMD.
// For OpenGL, the ID should map to an API submission (e.g., glFlush,
// glFinish, eglSwapBufffers) event. The set of submissions to the HW due
// to a single API submission should share the same ID.
// For Vulkan, it should map 1:1 with a vkQueueSubmit.
optional uint32 submission_id = 10;
// optional. Additional data for the user. This may include attributes for
// the event like resource ids, shaders, etc.
message ExtraData {
optional string name = 1;
optional string value = 2;
}
repeated ExtraData extra_data = 6;
// VULKAN SPECIFICS
// optional. The Vulkan render pass handle.
optional uint64 render_pass_handle = 9;
// optional. A bit mask representing which render subpasses contributed to
// this render stage event. Subpass index 0 is represented by setting the
// LSB of the mask. Additional mask can be added for subpass index greater
// than 63.
repeated uint64 render_subpass_index_mask = 15;
// optional. The Vulkan command buffer handle.
optional uint64 command_buffer_handle = 12;
// DEPRECATED
// Deprecated. Use InternedGpuRenderStageSpecification instead.
// The first trace packet of each session should include a Specifications
// to enumerate *all* IDs that will be used. The timestamp of this packet
// must be earlier than all other packets. Only one packet with Specifications
// is expected.
message Specifications {
message ContextSpec {
optional uint64 context = 1;
optional int32 pid = 2;
}
optional ContextSpec context_spec = 1;
message Description {
optional string name = 1;
optional string description = 2;
}
// Labels to categorize the hw Queue this event goes on.
repeated Description hw_queue = 2;
// Labels to categorize render stage(binning, render, compute etc).
repeated Description stage = 3;
}
// Deprecated. Use hw_queue_iid and stage_iid to refer to
// InternedGpuRenderStageSpecification instead.
optional Specifications specifications = 7 [deprecated = true];
// Deprecated. Use hw_queue_iid instead;
optional int32 hw_queue_id = 3 [deprecated = true];
// Deprecated. Use stage_iid instead;
optional int32 stage_id = 4 [deprecated = true];
// Extension for vendor's custom proto.
extensions 100;
}
// Interned data.
// The iid is the numeric value of either the GL Context or the VkDevice
// handle.
message InternedGraphicsContext {
optional uint64 iid = 1;
optional int32 pid = 2;
enum Api {
UNDEFINED = 0;
OPEN_GL = 1;
VULKAN = 2;
OPEN_CL = 3;
}
optional Api api = 3;
}
message InternedGpuRenderStageSpecification {
optional uint64 iid = 1;
optional string name = 2;
optional string description = 3;
enum RenderStageCategory {
OTHER = 0;
GRAPHICS = 1;
COMPUTE = 2;
}
optional RenderStageCategory category = 4;
}