xref: /aosp_15_r20/external/mesa3d/src/freedreno/vulkan/layers/tu_rmv_layer.cc (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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