1 /*
2 * Copyright © 2024 Igalia S.L.
3 * SPDX-License-Identifier: MIT
4 */
5
6 #include "tu_device.h"
7 #include "tu_entrypoints.h"
8 #include "tu_queue.h"
9 #include "tu_rmv.h"
10 #include "vk_common_entrypoints.h"
11 #include "wsi_common_entrypoints.h"
12
13 VKAPI_ATTR VkResult VKAPI_CALL
tu_rmv_QueuePresentKHR(VkQueue _queue,const VkPresentInfoKHR * pPresentInfo)14 tu_rmv_QueuePresentKHR(VkQueue _queue, const VkPresentInfoKHR *pPresentInfo)
15 {
16 VK_FROM_HANDLE(tu_queue, queue, _queue);
17 struct tu_device *device = queue->device;
18
19 VkResult result = wsi_QueuePresentKHR(_queue, pPresentInfo);
20 if (!(result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR)
21 || !device->vk.memory_trace_data.is_enabled)
22 return result;
23
24 vk_rmv_log_misc_token(&device->vk, VK_RMV_MISC_EVENT_TYPE_PRESENT);
25 return result;
26 }
27
28 VKAPI_ATTR VkResult VKAPI_CALL
tu_rmv_FlushMappedMemoryRanges(VkDevice _device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)29 tu_rmv_FlushMappedMemoryRanges(VkDevice _device, uint32_t memoryRangeCount,
30 const VkMappedMemoryRange *pMemoryRanges)
31 {
32 VK_FROM_HANDLE(tu_device, device, _device);
33
34 VkResult result = tu_FlushMappedMemoryRanges(_device, memoryRangeCount,
35 pMemoryRanges);
36 if (result != VK_SUCCESS || !device->vk.memory_trace_data.is_enabled)
37 return result;
38
39 vk_rmv_log_misc_token(&device->vk, VK_RMV_MISC_EVENT_TYPE_FLUSH_MAPPED_RANGE);
40 return VK_SUCCESS;
41 }
42
43 VKAPI_ATTR VkResult VKAPI_CALL
tu_rmv_InvalidateMappedMemoryRanges(VkDevice _device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)44 tu_rmv_InvalidateMappedMemoryRanges(VkDevice _device, uint32_t memoryRangeCount,
45 const VkMappedMemoryRange *pMemoryRanges)
46 {
47 VK_FROM_HANDLE(tu_device, device, _device);
48
49 VkResult result = tu_InvalidateMappedMemoryRanges(_device, memoryRangeCount,
50 pMemoryRanges);
51 if (result != VK_SUCCESS || !device->vk.memory_trace_data.is_enabled)
52 return result;
53
54 vk_rmv_log_misc_token(&device->vk, VK_RMV_MISC_EVENT_TYPE_INVALIDATE_RANGES);
55 return VK_SUCCESS;
56 }
57
tu_rmv_SetDebugUtilsObjectNameEXT(VkDevice _device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)58 VkResult tu_rmv_SetDebugUtilsObjectNameEXT(VkDevice _device,
59 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
60 {
61 assert(pNameInfo->sType == VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT);
62 VK_FROM_HANDLE(tu_device, device, _device);
63
64 VkResult result = vk_common_SetDebugUtilsObjectNameEXT(_device, pNameInfo);
65 if (result != VK_SUCCESS || !device->vk.memory_trace_data.is_enabled)
66 return result;
67
68 switch (pNameInfo->objectType) {
69 case VK_OBJECT_TYPE_BUFFER:
70 case VK_OBJECT_TYPE_DEVICE_MEMORY:
71 case VK_OBJECT_TYPE_IMAGE:
72 case VK_OBJECT_TYPE_EVENT:
73 case VK_OBJECT_TYPE_QUERY_POOL:
74 case VK_OBJECT_TYPE_DESCRIPTOR_POOL:
75 case VK_OBJECT_TYPE_PIPELINE:
76 break;
77 default:
78 return VK_SUCCESS;
79 }
80
81 tu_rmv_log_resource_name(device, (const void *) pNameInfo->objectHandle,
82 pNameInfo->pObjectName);
83 return VK_SUCCESS;
84 }
85