From 13f258fae3c60f84dbecee685f904360373320e0 Mon Sep 17 00:00:00 2001 From: Gregory Mitrano Date: Tue, 25 Apr 2023 21:51:29 -0400 Subject: [PATCH] radv/sqtt: Add RGP Markers for Mesh Shaders This change updates the sqtt layer to add mesh shader specific RGP instrumentation logic. This should allow RGP to correctly identify GPU work derived from vkCmdDrawMeshTasksEXT, vkCmdDrawMeshTasksIndirectEXT, and vkCmdDrawMeshTasksIndirectCountEXT API calls. This change also updates the mesa-to-RGP shader stage translation logic to handle the mesh & task stages. Part-of: --- src/amd/vulkan/layers/radv_sqtt_layer.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 0713142..0f77642 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -858,6 +858,29 @@ sqtt_CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, EVENT_RT_MARKER(CopyMemoryToAccelerationStructureKHR, commandBuffer, pInfo); } +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z) +{ + EVENT_MARKER(DrawMeshTasksEXT, commandBuffer, x, y, z); +} + +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, + VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +{ + EVENT_MARKER(DrawMeshTasksIndirectEXT, commandBuffer, buffer, offset, drawCount, stride); +} + +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, + VkDeviceSize offset, VkBuffer countBuffer, + VkDeviceSize countBufferOffset, uint32_t maxDrawCount, + uint32_t stride) +{ + EVENT_MARKER(DrawMeshTasksIndirectCountEXT, commandBuffer, buffer, offset, countBuffer, + countBufferOffset, maxDrawCount, stride); +} + #undef EVENT_RT_MARKER_ALIAS #undef EVENT_RT_MARKER @@ -1119,10 +1142,12 @@ radv_mesa_to_rgp_shader_stage(struct radv_pipeline *pipeline, gl_shader_stage st return RGP_HW_STAGE_GS; else return RGP_HW_STAGE_VS; + case MESA_SHADER_MESH: case MESA_SHADER_GEOMETRY: return RGP_HW_STAGE_GS; case MESA_SHADER_FRAGMENT: return RGP_HW_STAGE_PS; + case MESA_SHADER_TASK: case MESA_SHADER_COMPUTE: case MESA_SHADER_RAYGEN: case MESA_SHADER_CLOSEST_HIT: -- 2.7.4