~mmach/netext73/mesa-ryzen

« back to all changes in this revision

Viewing changes to src/virtio/vulkan/vn_device.h

  • Committer: mmach
  • Date: 2023-11-02 21:31:35 UTC
  • Revision ID: netbit73@gmail.com-20231102213135-18d4tzh7tj0uz752
2023-11-02 22:11:57

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
#include "vn_device_memory.h"
18
18
#include "vn_feedback.h"
19
19
 
 
20
struct vn_device_memory_report {
 
21
   PFN_vkDeviceMemoryReportCallbackEXT callback;
 
22
   void *data;
 
23
};
 
24
 
20
25
struct vn_device {
21
26
   struct vn_device_base base;
22
27
 
24
29
   struct vn_physical_device *physical_device;
25
30
   struct vn_renderer *renderer;
26
31
 
 
32
   struct vn_device_memory_report *memory_reports;
 
33
   uint32_t memory_report_count;
 
34
 
27
35
   /* unique queue family indices in which to create the device queues */
28
36
   uint32_t *queue_families;
29
37
   uint32_t queue_family_count;
30
38
 
31
39
   struct vn_device_memory_pool memory_pools[VK_MAX_MEMORY_TYPES];
32
40
 
33
 
   struct vn_buffer_cache buffer_cache;
34
 
 
35
41
   struct vn_feedback_pool feedback_pool;
36
42
 
37
43
   /* feedback cmd pool per queue family used by the device
42
48
 
43
49
   struct vn_queue *queues;
44
50
   uint32_t queue_count;
 
51
 
 
52
   struct vn_buffer_cache buffer_cache;
45
53
};
46
54
VK_DEFINE_HANDLE_CASTS(vn_device,
47
55
                       base.base.base,
48
56
                       VkDevice,
49
57
                       VK_OBJECT_TYPE_DEVICE)
50
58
 
 
59
static inline void
 
60
vn_device_emit_device_memory_report(struct vn_device *dev,
 
61
                                    VkDeviceMemoryReportEventTypeEXT type,
 
62
                                    uint64_t mem_obj_id,
 
63
                                    VkDeviceSize size,
 
64
                                    struct vn_object_base *obj,
 
65
                                    uint32_t heap_index)
 
66
{
 
67
   assert(dev->memory_reports);
 
68
   const VkDeviceMemoryReportCallbackDataEXT report = {
 
69
      .sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
 
70
      .type = type,
 
71
      .memoryObjectId = mem_obj_id,
 
72
      .size = size,
 
73
      .objectType = obj->base.type,
 
74
      .objectHandle = obj->id,
 
75
      .heapIndex = heap_index,
 
76
   };
 
77
   for (uint32_t i = 0; i < dev->memory_report_count; i++)
 
78
      dev->memory_reports[i].callback(&report, dev->memory_reports[i].data);
 
79
}
 
80
 
51
81
#endif /* VN_DEVICE_H */