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 PANVK_DEBUG_COPY_GFX = 1 << 9,
26 PANVK_DEBUG_FORCE_SIMULTANEOUS = 1 << 10,
27 PANVK_DEBUG_IMPLICIT_OTHERS_INV = 1 << 11,
28 };
29
30 #if defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
31 defined(VK_USE_PLATFORM_XCB_KHR) || \
32 defined(VK_USE_PLATFORM_XLIB_KHR)
33 #define PANVK_USE_WSI_PLATFORM
34 #endif
35
36 struct panvk_instance {
37 struct vk_instance vk;
38
39 uint32_t api_version;
40
41 enum panvk_debug_flags debug_flags;
42
43 uint8_t driver_build_sha[20];
44
45 struct {
46 struct pan_kmod_allocator allocator;
47 } kmod;
48 };
49
50 VK_DEFINE_HANDLE_CASTS(panvk_instance, vk.base, VkInstance,
51 VK_OBJECT_TYPE_INSTANCE)
52
53 static inline struct panvk_instance *
to_panvk_instance(struct vk_instance * instance)54 to_panvk_instance(struct vk_instance *instance)
55 {
56 return container_of(instance, struct panvk_instance, vk);
57 }
58
59 #endif
60