• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2024 Valve Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  */
6 
7 #include "radv_cmd_buffer.h"
8 #include "radv_device.h"
9 #include "radv_entrypoints.h"
10 
11 VKAPI_ATTR VkResult VKAPI_CALL
ctx_roll_QueuePresentKHR(VkQueue _queue,const VkPresentInfoKHR * pPresentInfo)12 ctx_roll_QueuePresentKHR(VkQueue _queue, const VkPresentInfoKHR *pPresentInfo)
13 {
14    VK_FROM_HANDLE(radv_queue, queue, _queue);
15    struct radv_device *device = radv_queue_device(queue);
16 
17    simple_mtx_lock(&device->ctx_roll_mtx);
18 
19    if (device->ctx_roll_file) {
20       fclose(device->ctx_roll_file);
21       device->ctx_roll_file = NULL;
22    }
23 
24    simple_mtx_unlock(&device->ctx_roll_mtx);
25 
26    return device->layer_dispatch.ctx_roll.QueuePresentKHR(_queue, pPresentInfo);
27 }
28 
29 VKAPI_ATTR VkResult VKAPI_CALL
ctx_roll_QueueSubmit2(VkQueue _queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence _fence)30 ctx_roll_QueueSubmit2(VkQueue _queue, uint32_t submitCount, const VkSubmitInfo2 *pSubmits, VkFence _fence)
31 {
32    VK_FROM_HANDLE(radv_queue, queue, _queue);
33    struct radv_device *device = radv_queue_device(queue);
34 
35    simple_mtx_lock(&device->ctx_roll_mtx);
36 
37    if (device->ctx_roll_file) {
38       for (uint32_t submit_index = 0; submit_index < submitCount; submit_index++) {
39          const VkSubmitInfo2 *submit = pSubmits + submit_index;
40          for (uint32_t i = 0; i < submit->commandBufferInfoCount; i++) {
41             VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, submit->pCommandBufferInfos[i].commandBuffer);
42             fprintf(device->ctx_roll_file, "\n%s:\n", vk_object_base_name(&cmd_buffer->vk.base));
43             device->ws->cs_dump(cmd_buffer->cs, device->ctx_roll_file, NULL, 0, RADV_CS_DUMP_TYPE_CTX_ROLLS);
44          }
45       }
46    }
47 
48    simple_mtx_unlock(&device->ctx_roll_mtx);
49 
50    return device->layer_dispatch.ctx_roll.QueueSubmit2(_queue, submitCount, pSubmits, _fence);
51 }
52