1 #pragma once
2 
3 #ifndef COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS
4 #define COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS(FLAG) COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_##FLAG
5 #endif
6 
7 #ifndef COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_SWAPCHAIN_MUTABLE_FORMAT_EXT
8 #define COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_SWAPCHAIN_MUTABLE_FORMAT_EXT false
9 #endif
10 #ifndef COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_VULKAN_1_4_INSTANCE_API
11 #define COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_VULKAN_1_4_INSTANCE_API false
12 #endif
13 
14 #ifdef __cplusplus
15 
16 #include <memory>
17 
18 namespace com::android::graphics::libvulkan::flags {
19 
20 class flag_provider_interface {
21 public:
22     virtual ~flag_provider_interface() = default;
23     virtual bool swapchain_mutable_format_ext() = 0;
24     virtual bool vulkan_1_4_instance_api() = 0;
25 };
26 
27 extern std::unique_ptr<flag_provider_interface> provider_;
28 
29 
swapchain_mutable_format_ext()30 inline bool swapchain_mutable_format_ext() {
31     return COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_SWAPCHAIN_MUTABLE_FORMAT_EXT;
32 }
vulkan_1_4_instance_api()33 inline bool vulkan_1_4_instance_api() {
34     return COM_ANDROID_GRAPHICS_LIBVULKAN_FLAGS_VULKAN_1_4_INSTANCE_API;
35 }
36 
37 }
38 
39 extern "C" {
40 #endif // __cplusplus
41 
42 
43 bool com_android_graphics_libvulkan_flags_swapchain_mutable_format_ext();
44 bool com_android_graphics_libvulkan_flags_vulkan_1_4_instance_api();
45 
46 #ifdef __cplusplus
47 } // extern "C"
48 #endif
49 
50