xref: /aosp_15_r20/external/mesa3d/src/panfrost/vulkan/panvk_instance.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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