• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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