• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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