From 3192c3cd5593fc82694fb4ea5392380847f925a2 Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Thu, 12 Mar 2026 17:10:16 +0000 Subject: [PATCH 1/5] Comment typo fixes --- layer_gpu_timeline/timeline.proto | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/layer_gpu_timeline/timeline.proto b/layer_gpu_timeline/timeline.proto index fa22823..0217846 100644 --- a/layer_gpu_timeline/timeline.proto +++ b/layer_gpu_timeline/timeline.proto @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2025 Arm Limited + * Copyright (c) 2025-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -107,7 +107,7 @@ enum HeaderVersionNo { /* The connection header message sent to identify the version of the timeline protocol used. This should be sent exactly once per connection */ message Header { - /* The only mandatory field of this message. This identifys the version. Any subsequent fields are versioned based on this. + /* The only mandatory field of this message. This identifies the version. Any subsequent fields are versioned based on this. * All additional fields must be optional and additive (no removals) */ HeaderVersionNo version_no = 1; } @@ -170,30 +170,30 @@ message RenderpassAttachment { bool resolved = 5; } -/* Start a new renderpass */ +/* Start a new render pass */ message BeginRenderpass { - /* The unique identifier for this new renderpass */ + /* The unique identifier for this new render pass */ uint64 tag_id = 1; - /* The dimensions of the renderpass' attachments */ + /* The dimensions of the render pass' attachments */ uint32 width = 2; uint32 height = 3; - /* The number of drawcalls in the renderpass */ + /* The number of draw calls in the render pass */ uint32 draw_call_count = 4; /* The subpass count */ uint32 subpass_count = 5; - /* Any user defined debug labels associated with the renderpass */ + /* Any user defined debug labels associated with the render pass */ repeated string debug_label = 6; - /* Any attachments associated with the renderpass */ + /* Any attachments associated with the render pass */ repeated RenderpassAttachment attachments = 7; } -/* Continue a split renderpass */ +/* Continue a split render pass */ message ContinueRenderpass { - /* The unique identifier for the renderpass that is being continued */ + /* The unique identifier for the render pass that is being continued */ uint64 tag_id = 1; - /* The number of drawcalls to add to the total in the renderpass */ + /* The number of draw calls to add to the total in the render pass */ uint32 draw_call_count = 2; - /* Any user defined debug labels to add to the renderpass */ + /* Any user defined debug labels to add to the render pass */ repeated string debug_label = 3; } @@ -242,7 +242,7 @@ enum ImageTransferType { message ImageTransfer { /* The unique identifier for this operation */ uint64 tag_id = 1; - /* The number of pixels being transfered */ + /* The number of pixels being transferred */ int64 pixel_count = 2; /* The image type */ ImageTransferType transfer_type = 3; From 876efbe6dab000eadc06404ede3556af92525c3f Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Thu, 12 Mar 2026 17:20:01 +0000 Subject: [PATCH 2/5] Timeline layer: Support vkCmdCopyMemory*Indirect transfers --- .../source/layer_device_functions.hpp | 15 +++++- .../layer_device_functions_transfer.cpp | 46 ++++++++++++++++++- .../source/timeline_protobuf_encoder.cpp | 8 +++- layer_gpu_timeline/timeline.proto | 3 +- .../trackers/layer_command_stream.cpp | 4 ++ .../trackers/layer_command_stream.hpp | 4 +- 6 files changed, 75 insertions(+), 5 deletions(-) diff --git a/layer_gpu_timeline/source/layer_device_functions.hpp b/layer_gpu_timeline/source/layer_device_functions.hpp index 38f78be..802da7d 100644 --- a/layer_gpu_timeline/source/layer_device_functions.hpp +++ b/layer_gpu_timeline/source/layer_device_functions.hpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2024-2025 Arm Limited + * Copyright (c) 2024-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -462,6 +462,19 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL + layer_vkCmdCopyMemoryIndirectKHR(VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo); + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL + layer_vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); + // Functions for debug /* See Vulkan API for documentation. */ diff --git a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp index 38ecd5e..9dafe4f 100644 --- a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp +++ b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2024 Arm Limited + * Copyright (c) 2024-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -582,6 +582,50 @@ VKAPI_ATTR void VKAPI_CALL emitEndTag(layer, commandBuffer); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // TODO: Indirect so unknown size = report as generic memory transfer. + uint64_t tagID = registerBufferTransfer(layer, commandBuffer, Tracker::LCSBufferTransfer::Type::copy_memory, -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyMemoryIndirectKHR(commandBuffer, pCopyMemoryIndirectInfo); + emitEndTag(layer, commandBuffer); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // TODO: Indirect so unknown size = report as generic memory transfer. + uint64_t tagID = registerImageTransfer(layer, commandBuffer, Tracker::LCSImageTransfer::Type::copy_memory_to_image, -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyMemoryToImageIndirectKHR(commandBuffer, pCopyMemoryToImageIndirectInfo); + emitEndTag(layer, commandBuffer); +} + /* See Vulkan API for documentation. */ template<> VKAPI_ATTR void VKAPI_CALL diff --git a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp index 21f0c77..f9e2320 100644 --- a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp +++ b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2025 Arm Limited + * Copyright (c) 2025-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -174,6 +174,7 @@ enum class ImageTransferType copy_image = 2, copy_buffer_to_image = 3, copy_image_to_buffer = 4, + copy_memory_to_image = 5, }; /* An image transfer submission */ @@ -193,6 +194,7 @@ enum class BufferTransferType unknown_buffer_transfer = 0, fill_buffer = 1, copy_buffer = 2, + copy_memory = 3, }; /* An buffer transfer submission */ @@ -382,6 +384,8 @@ constexpr BufferTransferType mapBufferTransferType(Tracker::LCSBufferTransfer::T return BufferTransferType::fill_buffer; case Tracker::LCSBufferTransfer::Type::copy_buffer: return BufferTransferType::copy_buffer; + case Tracker::LCSBufferTransfer::Type::copy_memory: + return BufferTransferType::copy_memory; default: assert(false && "Unexpected LCSBufferTransfer::Type"); return BufferTransferType::unknown_buffer_transfer; @@ -413,6 +417,8 @@ constexpr ImageTransferType mapImageTransferType(Tracker::LCSImageTransfer::Type return ImageTransferType::copy_buffer_to_image; case Tracker::LCSImageTransfer::Type::copy_image_to_buffer: return ImageTransferType::copy_image_to_buffer; + case Tracker::LCSImageTransfer::Type::copy_memory_to_image: + return ImageTransferType::copy_memory_to_image; default: assert(false && "Unexpected LCSImageTransfer::Type"); return ImageTransferType::unknown_image_transfer; diff --git a/layer_gpu_timeline/timeline.proto b/layer_gpu_timeline/timeline.proto index 0217846..fba6e86 100644 --- a/layer_gpu_timeline/timeline.proto +++ b/layer_gpu_timeline/timeline.proto @@ -236,6 +236,7 @@ enum ImageTransferType { copy_image = 2; copy_buffer_to_image = 3; copy_image_to_buffer = 4; + copy_memory_to_image = 5; } /* An image transfer submission */ @@ -250,12 +251,12 @@ message ImageTransfer { repeated string debug_label = 4; } - /* Enumerates possible buffer transfer types */ enum BufferTransferType { unknown_buffer_transfer = 0; fill_buffer = 1; copy_buffer = 2; + copy_memory = 3; } /* A buffer transfer submission */ diff --git a/source_common/trackers/layer_command_stream.cpp b/source_common/trackers/layer_command_stream.cpp index 350572a..7bcfcb3 100644 --- a/source_common/trackers/layer_command_stream.cpp +++ b/source_common/trackers/layer_command_stream.cpp @@ -109,6 +109,8 @@ std::string LCSImageTransfer::getTransferTypeStr() const return "Copy buffer to image"; case Type::copy_image_to_buffer: return "Copy image to buffer"; + case Type::copy_memory_to_image: + return "Copy memory to image"; default: assert(false && "Unexpected LCSImageTransfer::Type"); return ""; @@ -134,6 +136,8 @@ std::string LCSBufferTransfer::getTransferTypeStr() const return "Fill buffer"; case Type::copy_buffer: return "Copy buffer"; + case Type::copy_memory: + return "Copy memory"; default: assert(false && "Unexpected LCSBufferTransfer::Type"); return ""; diff --git a/source_common/trackers/layer_command_stream.hpp b/source_common/trackers/layer_command_stream.hpp index ec2b47a..05c7d33 100644 --- a/source_common/trackers/layer_command_stream.hpp +++ b/source_common/trackers/layer_command_stream.hpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2024-2025 Arm Limited + * Copyright (c) 2024-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -344,6 +344,7 @@ class LCSImageTransfer : public LCSWorkload copy_image, copy_buffer_to_image, copy_image_to_buffer, + copy_memory_to_image, }; /** @@ -390,6 +391,7 @@ class LCSBufferTransfer : public LCSWorkload unknown, fill_buffer, copy_buffer, + copy_memory, }; /** From 0fd6eb583f450df3aa3341540c965531cbfbeb8a Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Thu, 12 Mar 2026 17:28:08 +0000 Subject: [PATCH 3/5] Timeline layer: Support vkCmdCopy*Micromap transfers --- .../source/layer_device_functions.hpp | 18 +++++ .../layer_device_functions_transfer.cpp | 76 +++++++++++++++++++ .../source/timeline_protobuf_encoder.cpp | 11 ++- layer_gpu_timeline/timeline.proto | 3 + .../trackers/layer_command_stream.cpp | 8 +- .../trackers/layer_command_stream.hpp | 3 + 6 files changed, 117 insertions(+), 2 deletions(-) diff --git a/layer_gpu_timeline/source/layer_device_functions.hpp b/layer_gpu_timeline/source/layer_device_functions.hpp index 802da7d..29606b6 100644 --- a/layer_gpu_timeline/source/layer_device_functions.hpp +++ b/layer_gpu_timeline/source/layer_device_functions.hpp @@ -475,6 +475,24 @@ VKAPI_ATTR void VKAPI_CALL VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToMicromapInfoEXT* pInfo); + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapInfoEXT* pInfo); + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapToMemoryEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapToMemoryInfoEXT* pInfo); + // Functions for debug /* See Vulkan API for documentation. */ diff --git a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp index 9dafe4f..ed53919 100644 --- a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp +++ b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp @@ -718,3 +718,79 @@ VKAPI_ATTR void VKAPI_CALL layer->driver.vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo); emitEndTag(layer, commandBuffer); } + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToMicromapInfoEXT* pInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + uint64_t tagID = + registerAccelerationStructureTransfer(layer, + commandBuffer, + Tracker::LCSAccelerationStructureTransfer::Type::mem_to_micromap, + -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyMemoryToMicromapEXT(commandBuffer, pInfo); + emitEndTag(layer, commandBuffer); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapInfoEXT* pInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + uint64_t tagID = + registerAccelerationStructureTransfer(layer, + commandBuffer, + Tracker::LCSAccelerationStructureTransfer::Type::micromap_to_micromap, + -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyMicromapEXT(commandBuffer, pInfo); + emitEndTag(layer, commandBuffer); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapToMemoryEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapToMemoryInfoEXT* pInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + uint64_t tagID = + registerAccelerationStructureTransfer(layer, + commandBuffer, + Tracker::LCSAccelerationStructureTransfer::Type::micromap_to_mem, + -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyMicromapToMemoryEXT(commandBuffer, pInfo); + emitEndTag(layer, commandBuffer); +} + diff --git a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp index f9e2320..c719908 100644 --- a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp +++ b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp @@ -234,6 +234,9 @@ enum class AccelerationStructureTransferType struct_to_struct = 1, struct_to_mem = 2, mem_to_struct = 3, + micromap_to_micromap = 4, + micromap_to_mem = 5, + mem_to_micromap = 6, }; /* An acceleration structure transfer submission */ @@ -448,8 +451,14 @@ constexpr AccelerationStructureTransferType mapASTransferType(Tracker::LCSAccele return AccelerationStructureTransferType::struct_to_mem; case Tracker::LCSAccelerationStructureTransfer::Type::mem_to_struct: return AccelerationStructureTransferType::mem_to_struct; + case Tracker::LCSAccelerationStructureTransfer::Type::micromap_to_micromap: + return AccelerationStructureTransferType::micromap_to_micromap; + case Tracker::LCSAccelerationStructureTransfer::Type::micromap_to_mem: + return AccelerationStructureTransferType::micromap_to_mem; + case Tracker::LCSAccelerationStructureTransfer::Type::mem_to_micromap: + return AccelerationStructureTransferType::mem_to_micromap; default: - assert(false && "Unexpected LCSBufferTransfer::Type"); + assert(false && "Unexpected LCSAccelerationStructureTransfer::Type"); return AccelerationStructureTransferType::unknown_as_transfer; } } diff --git a/layer_gpu_timeline/timeline.proto b/layer_gpu_timeline/timeline.proto index fba6e86..6439204 100644 --- a/layer_gpu_timeline/timeline.proto +++ b/layer_gpu_timeline/timeline.proto @@ -298,6 +298,9 @@ enum AccelerationStructureTransferType struct_to_struct = 1; struct_to_mem = 2; mem_to_struct = 3; + micromap_to_micromap = 4; + micromap_to_mem = 5; + mem_to_micromap = 6; } /* An acceleration structure transfer submission */ diff --git a/source_common/trackers/layer_command_stream.cpp b/source_common/trackers/layer_command_stream.cpp index 7bcfcb3..b117c95 100644 --- a/source_common/trackers/layer_command_stream.cpp +++ b/source_common/trackers/layer_command_stream.cpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2024-2025 Arm Limited + * Copyright (c) 2024-2026 Arm Limited * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -192,6 +192,12 @@ std::string LCSAccelerationStructureTransfer::getTransferTypeStr() const return "Copy acceleration structure to memory"; case Type::mem_to_struct: return "Copy memory to acceleration structure"; + case Type::micromap_to_micromap: + return "Copy micromap"; + case Type::micromap_to_mem: + return "Copy micromap to memory"; + case Type::mem_to_micromap: + return "Copy memory to micromap"; default: assert(false && "Unexpected LCSAccelerationStructureTransfer::Type"); return ""; diff --git a/source_common/trackers/layer_command_stream.hpp b/source_common/trackers/layer_command_stream.hpp index 05c7d33..8d8f056 100644 --- a/source_common/trackers/layer_command_stream.hpp +++ b/source_common/trackers/layer_command_stream.hpp @@ -486,6 +486,9 @@ class LCSAccelerationStructureTransfer : public LCSWorkload struct_to_struct, struct_to_mem, mem_to_struct, + micromap_to_micromap, + mem_to_micromap, + micromap_to_mem }; /** From a6350efc35b7e9d3b53b79bdffba2a863c9f15c1 Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Mon, 16 Mar 2026 09:43:23 +0000 Subject: [PATCH 4/5] Timeline layer: Support vkCmdCopyTensor transfers --- .../source/layer_device_functions.hpp | 6 +++++ .../layer_device_functions_transfer.cpp | 22 +++++++++++++++++++ .../source/timeline_protobuf_encoder.cpp | 3 +++ layer_gpu_timeline/timeline.proto | 1 + .../trackers/layer_command_stream.cpp | 2 ++ .../trackers/layer_command_stream.hpp | 1 + 6 files changed, 35 insertions(+) diff --git a/layer_gpu_timeline/source/layer_device_functions.hpp b/layer_gpu_timeline/source/layer_device_functions.hpp index 29606b6..afa2dd4 100644 --- a/layer_gpu_timeline/source/layer_device_functions.hpp +++ b/layer_gpu_timeline/source/layer_device_functions.hpp @@ -493,6 +493,12 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapToMemoryEXT( VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo); +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyTensorARM( + VkCommandBuffer commandBuffer, + const VkCopyTensorInfoARM* pCopyTensorInfo); + // Functions for debug /* See Vulkan API for documentation. */ diff --git a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp index ed53919..d8a3e2a 100644 --- a/layer_gpu_timeline/source/layer_device_functions_transfer.cpp +++ b/layer_gpu_timeline/source/layer_device_functions_transfer.cpp @@ -794,3 +794,25 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMicromapToMemoryEXT( emitEndTag(layer, commandBuffer); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyTensorARM( + VkCommandBuffer commandBuffer, + const VkCopyTensorInfoARM* pCopyTensorInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // TODO: Parameters define size in elements, rather than bytes, and we + // currently don't track tensor data type to convert to bytes + uint64_t tagID = registerBufferTransfer(layer, commandBuffer, Tracker::LCSBufferTransfer::Type::copy_tensor, -1); + + // Release the lock to call into the driver + lock.unlock(); + emitStartTag(layer, commandBuffer, tagID); + layer->driver.vkCmdCopyTensorARM(commandBuffer, pCopyTensorInfo); + emitEndTag(layer, commandBuffer); +} diff --git a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp index c719908..3654606 100644 --- a/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp +++ b/layer_gpu_timeline/source/timeline_protobuf_encoder.cpp @@ -195,6 +195,7 @@ enum class BufferTransferType fill_buffer = 1, copy_buffer = 2, copy_memory = 3, + copy_tensor = 4, }; /* An buffer transfer submission */ @@ -389,6 +390,8 @@ constexpr BufferTransferType mapBufferTransferType(Tracker::LCSBufferTransfer::T return BufferTransferType::copy_buffer; case Tracker::LCSBufferTransfer::Type::copy_memory: return BufferTransferType::copy_memory; + case Tracker::LCSBufferTransfer::Type::copy_tensor: + return BufferTransferType::copy_tensor; default: assert(false && "Unexpected LCSBufferTransfer::Type"); return BufferTransferType::unknown_buffer_transfer; diff --git a/layer_gpu_timeline/timeline.proto b/layer_gpu_timeline/timeline.proto index 6439204..1193c3d 100644 --- a/layer_gpu_timeline/timeline.proto +++ b/layer_gpu_timeline/timeline.proto @@ -257,6 +257,7 @@ enum BufferTransferType { fill_buffer = 1; copy_buffer = 2; copy_memory = 3; + copy_tensor = 4; } /* A buffer transfer submission */ diff --git a/source_common/trackers/layer_command_stream.cpp b/source_common/trackers/layer_command_stream.cpp index b117c95..ceb7553 100644 --- a/source_common/trackers/layer_command_stream.cpp +++ b/source_common/trackers/layer_command_stream.cpp @@ -138,6 +138,8 @@ std::string LCSBufferTransfer::getTransferTypeStr() const return "Copy buffer"; case Type::copy_memory: return "Copy memory"; + case Type::copy_tensor: + return "Copy tensor"; default: assert(false && "Unexpected LCSBufferTransfer::Type"); return ""; diff --git a/source_common/trackers/layer_command_stream.hpp b/source_common/trackers/layer_command_stream.hpp index 8d8f056..7b11513 100644 --- a/source_common/trackers/layer_command_stream.hpp +++ b/source_common/trackers/layer_command_stream.hpp @@ -392,6 +392,7 @@ class LCSBufferTransfer : public LCSWorkload fill_buffer, copy_buffer, copy_memory, + copy_tensor }; /** From d313d778eb72ad50826654bdaf5a4e5983886234 Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Mon, 16 Mar 2026 10:08:09 +0000 Subject: [PATCH 5/5] Timeline layer: Update Python bindings --- .mypy.ini | 3 + lglpy/comms/service_gpu_timeline.py | 28 ++++- .../protos/layer_driver/timeline_pb2.py | 109 ++++++++---------- 3 files changed, 76 insertions(+), 64 deletions(-) diff --git a/.mypy.ini b/.mypy.ini index 726b660..d92ed91 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -3,6 +3,9 @@ exclude = lglpy/timeline/protos/ ignore_missing_imports = True disable_error_code = annotation-unchecked +[mypy-lglpy.timeline.protos.*] +follow_imports = skip + [mypy-lglpy.timeline.data.raw_trace] disable_error_code = attr-defined diff --git a/lglpy/comms/service_gpu_timeline.py b/lglpy/comms/service_gpu_timeline.py index b9fa79d..bbb13d5 100644 --- a/lglpy/comms/service_gpu_timeline.py +++ b/lglpy/comms/service_gpu_timeline.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: MIT # ----------------------------------------------------------------------------- -# Copyright (c) 2024-2025 Arm Limited +# Copyright (c) 2024-2026 Arm Limited # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to @@ -202,6 +202,9 @@ def map_image_transfer_type(type) -> str: if type == timeline_pb2.ImageTransferType.copy_image_to_buffer: return "Copy image to buffer" + if type == timeline_pb2.ImageTransferType.copy_memory_to_image: + return "Copy memory to image" + assert False @@ -218,6 +221,12 @@ def map_buffer_transfer_type(type) -> str: if type == timeline_pb2.BufferTransferType.copy_buffer: return "Copy buffer" + if type == timeline_pb2.BufferTransferType.copy_memory: + return "Copy memory" + + if type == timeline_pb2.BufferTransferType.copy_tensor: + return "Copy tensor" + assert False @@ -228,10 +237,10 @@ def map_as_build_type(type) -> str: if type == timeline_pb2.AccelerationStructureBuildType.unknown_as_build: return "Unknown" - if type == timeline_pb2.AccelerationStructureTransferType.fast_build: + if type == timeline_pb2.AccelerationStructureBuildType.fast_build: return "Fast build" - if type == timeline_pb2.AccelerationStructureTransferType.fast_trace: + if type == timeline_pb2.AccelerationStructureBuildType.fast_trace: return "Fast trace" assert False @@ -250,10 +259,19 @@ def map_as_transfer_type(type) -> str: return "Copy acceleration structure" if type == base_type.struct_to_mem: - return "Copy acceleration structure to mem" + return "Copy acceleration structure to memory" if type == base_type.mem_to_struct: - return "Copy mem to acceleration structure" + return "Copy memory to acceleration structure" + + if type == base_type.micromap_to_micromap: + return "Copy micromap" + + if type == base_type.micromap_to_mem: + return "Copy micromap to memory" + + if type == base_type.mem_to_micromap: + return "Copy memory to micromap" assert False diff --git a/lglpy/timeline/protos/layer_driver/timeline_pb2.py b/lglpy/timeline/protos/layer_driver/timeline_pb2.py index 84ecb59..1dbc3a1 100644 --- a/lglpy/timeline/protos/layer_driver/timeline_pb2.py +++ b/lglpy/timeline/protos/layer_driver/timeline_pb2.py @@ -1,22 +1,11 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE # source: timeline.proto -# Protobuf Python Version: 5.29.3 """Generated protocol buffer code.""" +from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 5, - 29, - 3, - '', - 'timeline.proto' -) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -24,52 +13,54 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0etimeline.proto\x12\x12gpulayers.timeline\"A\n\x06Header\x12\x37\n\nversion_no\x18\x01 \x01(\x0e\x32#.gpulayers.timeline.HeaderVersionNo\"\x83\x01\n\x0e\x44\x65viceMetadata\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x12\n\nprocess_id\x18\x02 \x01(\r\x12\x15\n\rmajor_version\x18\x03 \x01(\r\x12\x15\n\rminor_version\x18\x04 \x01(\r\x12\x15\n\rpatch_version\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\"6\n\x05\x46rame\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0e\n\x06\x64\x65vice\x18\x02 \x01(\x04\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\":\n\x06Submit\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0e\n\x06\x64\x65vice\x18\x02 \x01(\x04\x12\r\n\x05queue\x18\x03 \x01(\x04\"\x9b\x01\n\x14RenderpassAttachment\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.gpulayers.timeline.RenderpassAttachmentType\x12\r\n\x05index\x18\x02 \x01(\r\x12\x12\n\nnot_loaded\x18\x03 \x01(\x08\x12\x12\n\nnot_stored\x18\x04 \x01(\x08\x12\x10\n\x08resolved\x18\x05 \x01(\x08\"\xc4\x01\n\x0f\x42\x65ginRenderpass\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x17\n\x0f\x64raw_call_count\x18\x04 \x01(\r\x12\x15\n\rsubpass_count\x18\x05 \x01(\r\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x06 \x03(\t\x12=\n\x0b\x61ttachments\x18\x07 \x03(\x0b\x32(.gpulayers.timeline.RenderpassAttachment\"R\n\x12\x43ontinueRenderpass\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x64raw_call_count\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x03 \x03(\t\"e\n\x08\x44ispatch\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x10\n\x08x_groups\x18\x02 \x01(\x03\x12\x10\n\x08y_groups\x18\x03 \x01(\x03\x12\x10\n\x08z_groups\x18\x04 \x01(\x03\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x05 \x03(\t\"c\n\tTraceRays\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x0f\n\x07x_items\x18\x02 \x01(\x03\x12\x0f\n\x07y_items\x18\x03 \x01(\x03\x12\x0f\n\x07z_items\x18\x04 \x01(\x03\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x05 \x03(\t\"\x87\x01\n\rImageTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x13\n\x0bpixel_count\x18\x02 \x01(\x03\x12<\n\rtransfer_type\x18\x03 \x01(\x0e\x32%.gpulayers.timeline.ImageTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\x88\x01\n\x0e\x42ufferTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x03\x12=\n\rtransfer_type\x18\x03 \x01(\x0e\x32&.gpulayers.timeline.BufferTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\xa2\x01\n\x1a\x41\x63\x63\x65lerationStructureBuild\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x17\n\x0fprimitive_count\x18\x02 \x01(\x03\x12\x46\n\nbuild_type\x18\x03 \x01(\x0e\x32\x32.gpulayers.timeline.AccelerationStructureBuildType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\xa6\x01\n\x1d\x41\x63\x63\x65lerationStructureTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x03\x12L\n\rtransfer_type\x18\x03 \x01(\x0e\x32\x35.gpulayers.timeline.AccelerationStructureTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\xd3\x05\n\x0eTimelineRecord\x12*\n\x06header\x18\x01 \x01(\x0b\x32\x1a.gpulayers.timeline.Header\x12\x34\n\x08metadata\x18\x02 \x01(\x0b\x32\".gpulayers.timeline.DeviceMetadata\x12(\n\x05\x66rame\x18\x03 \x01(\x0b\x32\x19.gpulayers.timeline.Frame\x12*\n\x06submit\x18\x04 \x01(\x0b\x32\x1a.gpulayers.timeline.Submit\x12\x37\n\nrenderpass\x18\x05 \x01(\x0b\x32#.gpulayers.timeline.BeginRenderpass\x12\x43\n\x13\x63ontinue_renderpass\x18\x06 \x01(\x0b\x32&.gpulayers.timeline.ContinueRenderpass\x12.\n\x08\x64ispatch\x18\x07 \x01(\x0b\x32\x1c.gpulayers.timeline.Dispatch\x12\x31\n\ntrace_rays\x18\x08 \x01(\x0b\x32\x1d.gpulayers.timeline.TraceRays\x12\x39\n\x0eimage_transfer\x18\t \x01(\x0b\x32!.gpulayers.timeline.ImageTransfer\x12;\n\x0f\x62uffer_transfer\x18\n \x01(\x0b\x32\".gpulayers.timeline.BufferTransfer\x12T\n\x1c\x61\x63\x63\x65leration_structure_build\x18\x0b \x01(\x0b\x32..gpulayers.timeline.AccelerationStructureBuild\x12Z\n\x1f\x61\x63\x63\x65leration_structure_transfer\x18\x0c \x01(\x0b\x32\x31.gpulayers.timeline.AccelerationStructureTransfer* \n\x0fHeaderVersionNo\x12\r\n\tversion_1\x10\x00*L\n\x18RenderpassAttachmentType\x12\r\n\tundefined\x10\x00\x12\t\n\x05\x63olor\x10\x01\x12\t\n\x05\x64\x65pth\x10\x02\x12\x0b\n\x07stencil\x10\x03*\x84\x01\n\x11ImageTransferType\x12\x1a\n\x16unknown_image_transfer\x10\x00\x12\x0f\n\x0b\x63lear_image\x10\x01\x12\x0e\n\ncopy_image\x10\x02\x12\x18\n\x14\x63opy_buffer_to_image\x10\x03\x12\x18\n\x14\x63opy_image_to_buffer\x10\x04*S\n\x12\x42ufferTransferType\x12\x1b\n\x17unknown_buffer_transfer\x10\x00\x12\x0f\n\x0b\x66ill_buffer\x10\x01\x12\x0f\n\x0b\x63opy_buffer\x10\x02*V\n\x1e\x41\x63\x63\x65lerationStructureBuildType\x12\x14\n\x10unknown_as_build\x10\x00\x12\x0e\n\nfast_build\x10\x01\x12\x0e\n\nfast_trace\x10\x02*x\n!AccelerationStructureTransferType\x12\x17\n\x13unknown_as_transfer\x10\x00\x12\x14\n\x10struct_to_struct\x10\x01\x12\x11\n\rstruct_to_mem\x10\x02\x12\x11\n\rmem_to_struct\x10\x03\x42\x02H\x03\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0etimeline.proto\x12\x12gpulayers.timeline\"A\n\x06Header\x12\x37\n\nversion_no\x18\x01 \x01(\x0e\x32#.gpulayers.timeline.HeaderVersionNo\"\x83\x01\n\x0e\x44\x65viceMetadata\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x12\n\nprocess_id\x18\x02 \x01(\r\x12\x15\n\rmajor_version\x18\x03 \x01(\r\x12\x15\n\rminor_version\x18\x04 \x01(\r\x12\x15\n\rpatch_version\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\"6\n\x05\x46rame\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0e\n\x06\x64\x65vice\x18\x02 \x01(\x04\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\":\n\x06Submit\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0e\n\x06\x64\x65vice\x18\x02 \x01(\x04\x12\r\n\x05queue\x18\x03 \x01(\x04\"\x9b\x01\n\x14RenderpassAttachment\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.gpulayers.timeline.RenderpassAttachmentType\x12\r\n\x05index\x18\x02 \x01(\r\x12\x12\n\nnot_loaded\x18\x03 \x01(\x08\x12\x12\n\nnot_stored\x18\x04 \x01(\x08\x12\x10\n\x08resolved\x18\x05 \x01(\x08\"\xc4\x01\n\x0f\x42\x65ginRenderpass\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x17\n\x0f\x64raw_call_count\x18\x04 \x01(\r\x12\x15\n\rsubpass_count\x18\x05 \x01(\r\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x06 \x03(\t\x12=\n\x0b\x61ttachments\x18\x07 \x03(\x0b\x32(.gpulayers.timeline.RenderpassAttachment\"R\n\x12\x43ontinueRenderpass\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x64raw_call_count\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x03 \x03(\t\"e\n\x08\x44ispatch\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x10\n\x08x_groups\x18\x02 \x01(\x03\x12\x10\n\x08y_groups\x18\x03 \x01(\x03\x12\x10\n\x08z_groups\x18\x04 \x01(\x03\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x05 \x03(\t\"8\n\x11\x44ispatchDataGraph\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x02 \x03(\t\"c\n\tTraceRays\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x0f\n\x07x_items\x18\x02 \x01(\x03\x12\x0f\n\x07y_items\x18\x03 \x01(\x03\x12\x0f\n\x07z_items\x18\x04 \x01(\x03\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x05 \x03(\t\"\x87\x01\n\rImageTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x13\n\x0bpixel_count\x18\x02 \x01(\x03\x12<\n\rtransfer_type\x18\x03 \x01(\x0e\x32%.gpulayers.timeline.ImageTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\x88\x01\n\x0e\x42ufferTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x03\x12=\n\rtransfer_type\x18\x03 \x01(\x0e\x32&.gpulayers.timeline.BufferTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\xa2\x01\n\x1a\x41\x63\x63\x65lerationStructureBuild\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x17\n\x0fprimitive_count\x18\x02 \x01(\x03\x12\x46\n\nbuild_type\x18\x03 \x01(\x0e\x32\x32.gpulayers.timeline.AccelerationStructureBuildType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\xa6\x01\n\x1d\x41\x63\x63\x65lerationStructureTransfer\x12\x0e\n\x06tag_id\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x03\x12L\n\rtransfer_type\x18\x03 \x01(\x0e\x32\x35.gpulayers.timeline.AccelerationStructureTransferType\x12\x13\n\x0b\x64\x65\x62ug_label\x18\x04 \x03(\t\"\x97\x06\n\x0eTimelineRecord\x12*\n\x06header\x18\x01 \x01(\x0b\x32\x1a.gpulayers.timeline.Header\x12\x34\n\x08metadata\x18\x02 \x01(\x0b\x32\".gpulayers.timeline.DeviceMetadata\x12(\n\x05\x66rame\x18\x03 \x01(\x0b\x32\x19.gpulayers.timeline.Frame\x12*\n\x06submit\x18\x04 \x01(\x0b\x32\x1a.gpulayers.timeline.Submit\x12\x37\n\nrenderpass\x18\x05 \x01(\x0b\x32#.gpulayers.timeline.BeginRenderpass\x12\x43\n\x13\x63ontinue_renderpass\x18\x06 \x01(\x0b\x32&.gpulayers.timeline.ContinueRenderpass\x12.\n\x08\x64ispatch\x18\x07 \x01(\x0b\x32\x1c.gpulayers.timeline.Dispatch\x12\x31\n\ntrace_rays\x18\x08 \x01(\x0b\x32\x1d.gpulayers.timeline.TraceRays\x12\x39\n\x0eimage_transfer\x18\t \x01(\x0b\x32!.gpulayers.timeline.ImageTransfer\x12;\n\x0f\x62uffer_transfer\x18\n \x01(\x0b\x32\".gpulayers.timeline.BufferTransfer\x12T\n\x1c\x61\x63\x63\x65leration_structure_build\x18\x0b \x01(\x0b\x32..gpulayers.timeline.AccelerationStructureBuild\x12Z\n\x1f\x61\x63\x63\x65leration_structure_transfer\x18\x0c \x01(\x0b\x32\x31.gpulayers.timeline.AccelerationStructureTransfer\x12\x42\n\x13\x64ispatch_data_graph\x18\r \x01(\x0b\x32%.gpulayers.timeline.DispatchDataGraph* \n\x0fHeaderVersionNo\x12\r\n\tversion_1\x10\x00*L\n\x18RenderpassAttachmentType\x12\r\n\tundefined\x10\x00\x12\t\n\x05\x63olor\x10\x01\x12\t\n\x05\x64\x65pth\x10\x02\x12\x0b\n\x07stencil\x10\x03*\x9e\x01\n\x11ImageTransferType\x12\x1a\n\x16unknown_image_transfer\x10\x00\x12\x0f\n\x0b\x63lear_image\x10\x01\x12\x0e\n\ncopy_image\x10\x02\x12\x18\n\x14\x63opy_buffer_to_image\x10\x03\x12\x18\n\x14\x63opy_image_to_buffer\x10\x04\x12\x18\n\x14\x63opy_memory_to_image\x10\x05*u\n\x12\x42ufferTransferType\x12\x1b\n\x17unknown_buffer_transfer\x10\x00\x12\x0f\n\x0b\x66ill_buffer\x10\x01\x12\x0f\n\x0b\x63opy_buffer\x10\x02\x12\x0f\n\x0b\x63opy_memory\x10\x03\x12\x0f\n\x0b\x63opy_tensor\x10\x04*V\n\x1e\x41\x63\x63\x65lerationStructureBuildType\x12\x14\n\x10unknown_as_build\x10\x00\x12\x0e\n\nfast_build\x10\x01\x12\x0e\n\nfast_trace\x10\x02*\xbc\x01\n!AccelerationStructureTransferType\x12\x17\n\x13unknown_as_transfer\x10\x00\x12\x14\n\x10struct_to_struct\x10\x01\x12\x11\n\rstruct_to_mem\x10\x02\x12\x11\n\rmem_to_struct\x10\x03\x12\x18\n\x14micromap_to_micromap\x10\x04\x12\x13\n\x0fmicromap_to_mem\x10\x05\x12\x13\n\x0fmem_to_micromap\x10\x06\x42\x02H\x03\x62\x06proto3') + +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'timeline_pb2', globals()) +if _descriptor._USE_C_DESCRIPTORS == False: -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'timeline_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'H\003' - _globals['_HEADERVERSIONNO']._serialized_start=2337 - _globals['_HEADERVERSIONNO']._serialized_end=2369 - _globals['_RENDERPASSATTACHMENTTYPE']._serialized_start=2371 - _globals['_RENDERPASSATTACHMENTTYPE']._serialized_end=2447 - _globals['_IMAGETRANSFERTYPE']._serialized_start=2450 - _globals['_IMAGETRANSFERTYPE']._serialized_end=2582 - _globals['_BUFFERTRANSFERTYPE']._serialized_start=2584 - _globals['_BUFFERTRANSFERTYPE']._serialized_end=2667 - _globals['_ACCELERATIONSTRUCTUREBUILDTYPE']._serialized_start=2669 - _globals['_ACCELERATIONSTRUCTUREBUILDTYPE']._serialized_end=2755 - _globals['_ACCELERATIONSTRUCTURETRANSFERTYPE']._serialized_start=2757 - _globals['_ACCELERATIONSTRUCTURETRANSFERTYPE']._serialized_end=2877 - _globals['_HEADER']._serialized_start=38 - _globals['_HEADER']._serialized_end=103 - _globals['_DEVICEMETADATA']._serialized_start=106 - _globals['_DEVICEMETADATA']._serialized_end=237 - _globals['_FRAME']._serialized_start=239 - _globals['_FRAME']._serialized_end=293 - _globals['_SUBMIT']._serialized_start=295 - _globals['_SUBMIT']._serialized_end=353 - _globals['_RENDERPASSATTACHMENT']._serialized_start=356 - _globals['_RENDERPASSATTACHMENT']._serialized_end=511 - _globals['_BEGINRENDERPASS']._serialized_start=514 - _globals['_BEGINRENDERPASS']._serialized_end=710 - _globals['_CONTINUERENDERPASS']._serialized_start=712 - _globals['_CONTINUERENDERPASS']._serialized_end=794 - _globals['_DISPATCH']._serialized_start=796 - _globals['_DISPATCH']._serialized_end=897 - _globals['_TRACERAYS']._serialized_start=899 - _globals['_TRACERAYS']._serialized_end=998 - _globals['_IMAGETRANSFER']._serialized_start=1001 - _globals['_IMAGETRANSFER']._serialized_end=1136 - _globals['_BUFFERTRANSFER']._serialized_start=1139 - _globals['_BUFFERTRANSFER']._serialized_end=1275 - _globals['_ACCELERATIONSTRUCTUREBUILD']._serialized_start=1278 - _globals['_ACCELERATIONSTRUCTUREBUILD']._serialized_end=1440 - _globals['_ACCELERATIONSTRUCTURETRANSFER']._serialized_start=1443 - _globals['_ACCELERATIONSTRUCTURETRANSFER']._serialized_end=1609 - _globals['_TIMELINERECORD']._serialized_start=1612 - _globals['_TIMELINERECORD']._serialized_end=2335 + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'H\003' + _HEADERVERSIONNO._serialized_start=2463 + _HEADERVERSIONNO._serialized_end=2495 + _RENDERPASSATTACHMENTTYPE._serialized_start=2497 + _RENDERPASSATTACHMENTTYPE._serialized_end=2573 + _IMAGETRANSFERTYPE._serialized_start=2576 + _IMAGETRANSFERTYPE._serialized_end=2734 + _BUFFERTRANSFERTYPE._serialized_start=2736 + _BUFFERTRANSFERTYPE._serialized_end=2853 + _ACCELERATIONSTRUCTUREBUILDTYPE._serialized_start=2855 + _ACCELERATIONSTRUCTUREBUILDTYPE._serialized_end=2941 + _ACCELERATIONSTRUCTURETRANSFERTYPE._serialized_start=2944 + _ACCELERATIONSTRUCTURETRANSFERTYPE._serialized_end=3132 + _HEADER._serialized_start=38 + _HEADER._serialized_end=103 + _DEVICEMETADATA._serialized_start=106 + _DEVICEMETADATA._serialized_end=237 + _FRAME._serialized_start=239 + _FRAME._serialized_end=293 + _SUBMIT._serialized_start=295 + _SUBMIT._serialized_end=353 + _RENDERPASSATTACHMENT._serialized_start=356 + _RENDERPASSATTACHMENT._serialized_end=511 + _BEGINRENDERPASS._serialized_start=514 + _BEGINRENDERPASS._serialized_end=710 + _CONTINUERENDERPASS._serialized_start=712 + _CONTINUERENDERPASS._serialized_end=794 + _DISPATCH._serialized_start=796 + _DISPATCH._serialized_end=897 + _DISPATCHDATAGRAPH._serialized_start=899 + _DISPATCHDATAGRAPH._serialized_end=955 + _TRACERAYS._serialized_start=957 + _TRACERAYS._serialized_end=1056 + _IMAGETRANSFER._serialized_start=1059 + _IMAGETRANSFER._serialized_end=1194 + _BUFFERTRANSFER._serialized_start=1197 + _BUFFERTRANSFER._serialized_end=1333 + _ACCELERATIONSTRUCTUREBUILD._serialized_start=1336 + _ACCELERATIONSTRUCTUREBUILD._serialized_end=1498 + _ACCELERATIONSTRUCTURETRANSFER._serialized_start=1501 + _ACCELERATIONSTRUCTURETRANSFER._serialized_end=1667 + _TIMELINERECORD._serialized_start=1670 + _TIMELINERECORD._serialized_end=2461 # @@protoc_insertion_point(module_scope)