blob: 02217809122814d7bff9230d1789d704b7d07a8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#ifndef NVK_PHYSICAL_DEVICE_H
#define NVK_PHYSICAL_DEVICE_H 1
#include "nvk_private.h"
#include "nouveau_device.h"
#include "nv_device_info.h"
#include "vulkan/runtime/vk_physical_device.h"
#include "wsi_common.h"
#include <sys/types.h>
struct nvk_instance;
struct nvk_physical_device {
struct vk_physical_device vk;
struct nv_device_info info;
dev_t render_dev;
dev_t primary_dev;
struct wsi_device wsi_device;
uint8_t device_uuid[VK_UUID_SIZE];
// TODO: add mapable VRAM heap if possible
VkMemoryHeap mem_heaps[2];
VkMemoryType mem_types[2];
uint8_t mem_heap_cnt;
uint8_t mem_type_cnt;
const struct vk_sync_type *sync_types[2];
};
VK_DEFINE_HANDLE_CASTS(nvk_physical_device,
vk.base,
VkPhysicalDevice,
VK_OBJECT_TYPE_PHYSICAL_DEVICE)
static inline struct nvk_instance *
nvk_physical_device_instance(struct nvk_physical_device *pdev)
{
return (struct nvk_instance *)pdev->vk.instance;
}
VkResult nvk_create_drm_physical_device(struct vk_instance *vk_instance,
struct _drmDevice *device,
struct vk_physical_device **out);
void nvk_physical_device_destroy(struct vk_physical_device *vk_device);
#if defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
defined(VK_USE_PLATFORM_XCB_KHR) || \
defined(VK_USE_PLATFORM_XLIB_KHR) || \
defined(VK_USE_PLATFORM_DISPLAY_KHR)
#define NVK_USE_WSI_PLATFORM
#endif
#endif
|