Module: Mesa
Branch: main
Commit: 90f8cf0f36c046922ef42448232dc7d0a1647fef
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=90f8cf0f36c046922ef42448232dc7d0a1647fef

Author: Konstantin Seurer <konstantin.seu...@gmail.com>
Date:   Sun Nov 12 16:21:12 2023 +0100

radv/sqtt: Handle monolithic RT pipelines

This marks them as Unified in the RGP UI and shows the compute shader
view.

Reviewed-by: Friedrich Vock <friedrich.v...@gmx.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26158>

---

 src/amd/vulkan/layers/radv_sqtt_layer.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c 
b/src/amd/vulkan/layers/radv_sqtt_layer.c
index 3d7ac2b62c5..bcdf55fb21a 100644
--- a/src/amd/vulkan/layers/radv_sqtt_layer.c
+++ b/src/amd/vulkan/layers/radv_sqtt_layer.c
@@ -1038,6 +1038,20 @@ sqtt_CmdCopyQueryPoolResults(VkCommandBuffer 
commandBuffer, VkQueryPool queryPoo
 #define EVENT_RT_MARKER_ALIAS(cmd_name, event_name, flags, ...)                
                                        \
    EVENT_MARKER_BASE(cmd_name, Dispatch, event_name | flags, __VA_ARGS__);
 
+static uint32_t
+radv_get_ray_tracing_type(VkCommandBuffer commandBuffer)
+{
+   RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
+
+   struct radv_ray_tracing_pipeline *pipeline = cmd_buffer->state.rt_pipeline;
+
+   bool monolithic = true;
+   for (uint32_t i = 0; i < pipeline->stage_count; i++)
+      monolithic &= pipeline->stages[i].can_inline;
+
+   return monolithic ? 0 : ApiRayTracingSeparateCompiled;
+}
+
 VKAPI_ATTR void VKAPI_CALL
 sqtt_CmdTraceRaysKHR(VkCommandBuffer commandBuffer, const 
VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable,
                      const VkStridedDeviceAddressRegionKHR 
*pMissShaderBindingTable,
@@ -1045,7 +1059,7 @@ sqtt_CmdTraceRaysKHR(VkCommandBuffer commandBuffer, const 
VkStridedDeviceAddress
                      const VkStridedDeviceAddressRegionKHR 
*pCallableShaderBindingTable, uint32_t width,
                      uint32_t height, uint32_t depth)
 {
-   EVENT_RT_MARKER(TraceRaysKHR, ApiRayTracingSeparateCompiled, commandBuffer, 
pRaygenShaderBindingTable,
+   EVENT_RT_MARKER(TraceRaysKHR, radv_get_ray_tracing_type(commandBuffer), 
commandBuffer, pRaygenShaderBindingTable,
                    pMissShaderBindingTable, pHitShaderBindingTable, 
pCallableShaderBindingTable, width, height, depth);
 }
 
@@ -1057,15 +1071,16 @@ sqtt_CmdTraceRaysIndirectKHR(VkCommandBuffer 
commandBuffer,
                              const VkStridedDeviceAddressRegionKHR 
*pCallableShaderBindingTable,
                              VkDeviceAddress indirectDeviceAddress)
 {
-   EVENT_RT_MARKER(TraceRaysIndirectKHR, ApiRayTracingSeparateCompiled, 
commandBuffer, pRaygenShaderBindingTable,
-                   pMissShaderBindingTable, pHitShaderBindingTable, 
pCallableShaderBindingTable, indirectDeviceAddress);
+   EVENT_RT_MARKER(TraceRaysIndirectKHR, 
radv_get_ray_tracing_type(commandBuffer), commandBuffer,
+                   pRaygenShaderBindingTable, pMissShaderBindingTable, 
pHitShaderBindingTable,
+                   pCallableShaderBindingTable, indirectDeviceAddress);
 }
 
 VKAPI_ATTR void VKAPI_CALL
 sqtt_CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress 
indirectDeviceAddress)
 {
-   EVENT_RT_MARKER_ALIAS(TraceRaysIndirect2KHR, TraceRaysIndirectKHR, 
ApiRayTracingSeparateCompiled, commandBuffer,
-                         indirectDeviceAddress);
+   EVENT_RT_MARKER_ALIAS(TraceRaysIndirect2KHR, TraceRaysIndirectKHR, 
radv_get_ray_tracing_type(commandBuffer),
+                         commandBuffer, indirectDeviceAddress);
 }
 
 VKAPI_ATTR void VKAPI_CALL

Reply via email to