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

Author: Samuel Pitoiset <[email protected]>
Date:   Thu Sep  8 15:01:51 2022 +0200

radv: capture RT pipelines from the SQTT layer

They were just not recorded.

Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18496>

---

 src/amd/vulkan/layers/radv_sqtt_layer.c | 35 +++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c 
b/src/amd/vulkan/layers/radv_sqtt_layer.c
index 27ded222a77..1d169b1159a 100644
--- a/src/amd/vulkan/layers/radv_sqtt_layer.c
+++ b/src/amd/vulkan/layers/radv_sqtt_layer.c
@@ -1160,6 +1160,41 @@ fail:
    return result;
 }
 
+VKAPI_ATTR VkResult VKAPI_CALL
+sqtt_CreateRayTracingPipelinesKHR(VkDevice _device, VkDeferredOperationKHR 
deferredOperation,
+                                  VkPipelineCache pipelineCache, uint32_t 
count,
+                                  const VkRayTracingPipelineCreateInfoKHR 
*pCreateInfos,
+                                  const VkAllocationCallbacks *pAllocator, 
VkPipeline *pPipelines)
+{
+   RADV_FROM_HANDLE(radv_device, device, _device);
+   VkResult result;
+
+   result = radv_CreateRayTracingPipelinesKHR(_device, deferredOperation, 
pipelineCache, count,
+                                              pCreateInfos, pAllocator, 
pPipelines);
+   if (result != VK_SUCCESS)
+      return result;
+
+   for (unsigned i = 0; i < count; i++) {
+      RADV_FROM_HANDLE(radv_pipeline, pipeline, pPipelines[i]);
+
+      if (!pipeline)
+         continue;
+
+      result = radv_register_pipeline(device, pipeline);
+      if (result != VK_SUCCESS)
+         goto fail;
+   }
+
+   return VK_SUCCESS;
+
+fail:
+   for (unsigned i = 0; i < count; i++) {
+      sqtt_DestroyPipeline(_device, pPipelines[i], pAllocator);
+      pPipelines[i] = VK_NULL_HANDLE;
+   }
+   return result;
+}
+
 VKAPI_ATTR void VKAPI_CALL
 sqtt_DestroyPipeline(VkDevice _device, VkPipeline _pipeline,
                      const VkAllocationCallbacks *pAllocator)

Reply via email to