1 /*
2 * Copyright © 2021 Collabora Ltd.
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef PANVK_INSTANCE_H
7 #define PANVK_INSTANCE_H
8
9 #include <stdint.h>
10
11 #include "vk_instance.h"
12
13 #include "lib/kmod/pan_kmod.h"
14
15 enum panvk_debug_flags {
16 PANVK_DEBUG_STARTUP = 1 << 0,
17 PANVK_DEBUG_NIR = 1 << 1,
18 PANVK_DEBUG_TRACE = 1 << 2,
19 PANVK_DEBUG_SYNC = 1 << 3,
20 PANVK_DEBUG_AFBC = 1 << 4,
21 PANVK_DEBUG_LINEAR = 1 << 5,
22 PANVK_DEBUG_DUMP = 1 << 6,
23 PANVK_DEBUG_NO_KNOWN_WARN = 1 << 7,
24 PANVK_DEBUG_CS = 1 << 8,
25 };
26
27 #if defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
28 defined(VK_USE_PLATFORM_XCB_KHR) || \
29 defined(VK_USE_PLATFORM_XLIB_KHR)
30 #define PANVK_USE_WSI_PLATFORM
31 #endif
32
33 struct panvk_instance {
34 struct vk_instance vk;
35
36 uint32_t api_version;
37
38 enum panvk_debug_flags debug_flags;
39
40 uint8_t driver_build_sha[20];
41
42 struct {
43 struct pan_kmod_allocator allocator;
44 } kmod;
45 };
46
47 VK_DEFINE_HANDLE_CASTS(panvk_instance, vk.base, VkInstance,
48 VK_OBJECT_TYPE_INSTANCE)
49
50 static inline struct panvk_instance *
to_panvk_instance(struct vk_instance * instance)51 to_panvk_instance(struct vk_instance *instance)
52 {
53 return container_of(instance, struct panvk_instance, vk);
54 }
55
56 #endif
57