diff --git a/layer_gpu_timeline/source/layer_device_functions.hpp b/layer_gpu_timeline/source/layer_device_functions.hpp index 7b3ba0f..4f9c110 100644 --- a/layer_gpu_timeline/source/layer_device_functions.hpp +++ b/layer_gpu_timeline/source/layer_device_functions.hpp @@ -141,6 +141,16 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdBeginRenderingKHR(VkCommandBuffe template<> VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass(VkCommandBuffer commandBuffer); +/* See Vulkan API for documentation. */ +template<> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass2(VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); + + /* See Vulkan API for documentation. */ +template<> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); + /* See Vulkan API for documentation. */ template<> VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRendering(VkCommandBuffer commandBuffer); diff --git a/layer_gpu_timeline/source/layer_device_functions_render_pass.cpp b/layer_gpu_timeline/source/layer_device_functions_render_pass.cpp index 5595583..05f9ab4 100644 --- a/layer_gpu_timeline/source/layer_device_functions_render_pass.cpp +++ b/layer_gpu_timeline/source/layer_device_functions_render_pass.cpp @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: MIT * ---------------------------------------------------------------------------- - * Copyright (c) 2024 Arm Limited + * Copyright (c) 2024-2025 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 @@ -312,6 +312,40 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass(VkCommandBuffer co layer->driver.vkCmdEndDebugUtilsLabelEXT(commandBuffer); } +/* See Vulkan API for documentation. */ +template<> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass2(VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo) +{ + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock {g_vulkanLock}; + auto* layer = Device::retrieve(commandBuffer); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo); + layer->driver.vkCmdEndDebugUtilsLabelEXT(commandBuffer); +} + +/* See Vulkan API for documentation. */ +template<> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo) +{ + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock {g_vulkanLock}; + auto* layer = Device::retrieve(commandBuffer); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo); + layer->driver.vkCmdEndDebugUtilsLabelEXT(commandBuffer); +} + /* See Vulkan API for documentation. */ template<> VKAPI_ATTR void VKAPI_CALL layer_vkCmdEndRendering(VkCommandBuffer commandBuffer)