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