xref: /aosp_15_r20/external/swiftshader/include/vulkan/vulkan_hpp_macros.hpp (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1 // Copyright 2015-2024 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_HPP_MACROS_HPP
9 #define VULKAN_HPP_MACROS_HPP
10 
11 #if defined( _MSVC_LANG )
12 #  define VULKAN_HPP_CPLUSPLUS _MSVC_LANG
13 #else
14 #  define VULKAN_HPP_CPLUSPLUS __cplusplus
15 #endif
16 
17 #if 202002L < VULKAN_HPP_CPLUSPLUS
18 #  define VULKAN_HPP_CPP_VERSION 23
19 #elif 201703L < VULKAN_HPP_CPLUSPLUS
20 #  define VULKAN_HPP_CPP_VERSION 20
21 #elif 201402L < VULKAN_HPP_CPLUSPLUS
22 #  define VULKAN_HPP_CPP_VERSION 17
23 #elif 201103L < VULKAN_HPP_CPLUSPLUS
24 #  define VULKAN_HPP_CPP_VERSION 14
25 #elif 199711L < VULKAN_HPP_CPLUSPLUS
26 #  define VULKAN_HPP_CPP_VERSION 11
27 #else
28 #  error "vulkan.hpp needs at least c++ standard version 11"
29 #endif
30 
31 // include headers holding feature-test macros
32 #if 20 <= VULKAN_HPP_CPP_VERSION
33 #  include <version>
34 #else
35 #  include <ciso646>
36 #endif
37 
38 #if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39 #  if !defined( VULKAN_HPP_NO_SMART_HANDLE )
40 #    define VULKAN_HPP_NO_SMART_HANDLE
41 #  endif
42 #endif
43 
44 #if defined( VULKAN_HPP_NO_CONSTRUCTORS )
45 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46 #    define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS
47 #  endif
48 #  if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
49 #    define VULKAN_HPP_NO_UNION_CONSTRUCTORS
50 #  endif
51 #endif
52 
53 #if defined( VULKAN_HPP_NO_SETTERS )
54 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
55 #    define VULKAN_HPP_NO_STRUCT_SETTERS
56 #  endif
57 #  if !defined( VULKAN_HPP_NO_UNION_SETTERS )
58 #    define VULKAN_HPP_NO_UNION_SETTERS
59 #  endif
60 #endif
61 
62 #if !defined( VULKAN_HPP_ASSERT )
63 #  define VULKAN_HPP_ASSERT assert
64 #endif
65 
66 #if !defined( VULKAN_HPP_ASSERT_ON_RESULT )
67 #  define VULKAN_HPP_ASSERT_ON_RESULT VULKAN_HPP_ASSERT
68 #endif
69 
70 #if !defined( VULKAN_HPP_STATIC_ASSERT )
71 #  define VULKAN_HPP_STATIC_ASSERT static_assert
72 #endif
73 
74 #if !defined( VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL )
75 #  define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1
76 #endif
77 
78 #if !defined( __has_include )
79 #  define __has_include( x ) false
80 #endif
81 
82 #if ( 201907 <= __cpp_lib_three_way_comparison ) && __has_include( <compare> ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR )
83 #  define VULKAN_HPP_HAS_SPACESHIP_OPERATOR
84 #endif
85 
86 #if ( 201803 <= __cpp_lib_span )
87 #  define VULKAN_HPP_SUPPORT_SPAN
88 #endif
89 
90 // 32-bit vulkan is not typesafe for non-dispatchable handles, so don't allow copy constructors on this platform by default.
91 // To enable this feature on 32-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 1
92 // To disable this feature on 64-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 0
93 #if ( VK_USE_64_BIT_PTR_DEFINES == 1 )
94 #  if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
95 #    define VULKAN_HPP_TYPESAFE_CONVERSION 1
96 #  endif
97 #endif
98 
99 #if defined( __GNUC__ )
100 #  define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ )
101 #endif
102 
103 #if !defined( VULKAN_HPP_HAS_UNRESTRICTED_UNIONS )
104 #  if defined( __clang__ )
105 #    if __has_feature( cxx_unrestricted_unions )
106 #      define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
107 #    endif
108 #  elif defined( __GNUC__ )
109 #    if 40600 <= GCC_VERSION
110 #      define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
111 #    endif
112 #  elif defined( _MSC_VER )
113 #    if 1900 <= _MSC_VER
114 #      define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
115 #    endif
116 #  endif
117 #endif
118 
119 #if !defined( VULKAN_HPP_INLINE )
120 #  if defined( __clang__ )
121 #    if __has_attribute( always_inline )
122 #      define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__
123 #    else
124 #      define VULKAN_HPP_INLINE inline
125 #    endif
126 #  elif defined( __GNUC__ )
127 #    define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__
128 #  elif defined( _MSC_VER )
129 #    define VULKAN_HPP_INLINE inline
130 #  else
131 #    define VULKAN_HPP_INLINE inline
132 #  endif
133 #endif
134 
135 #if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 )
136 #  define VULKAN_HPP_TYPESAFE_EXPLICIT
137 #else
138 #  define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
139 #endif
140 
141 #if defined( __cpp_constexpr )
142 #  define VULKAN_HPP_CONSTEXPR constexpr
143 #  if 201304 <= __cpp_constexpr
144 #    define VULKAN_HPP_CONSTEXPR_14 constexpr
145 #  else
146 #    define VULKAN_HPP_CONSTEXPR_14
147 #  endif
148 #  if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) )
149 #    define VULKAN_HPP_CONSTEXPR_20 constexpr
150 #  else
151 #    define VULKAN_HPP_CONSTEXPR_20
152 #  endif
153 #  define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr
154 #else
155 #  define VULKAN_HPP_CONSTEXPR
156 #  define VULKAN_HPP_CONSTEXPR_14
157 #  define VULKAN_HPP_CONST_OR_CONSTEXPR const
158 #endif
159 
160 #if !defined( VULKAN_HPP_CONSTEXPR_INLINE )
161 #  if 201606L <= __cpp_inline_variables
162 #    define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR inline
163 #  else
164 #    define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR
165 #  endif
166 #endif
167 
168 #if !defined( VULKAN_HPP_NOEXCEPT )
169 #  if defined( _MSC_VER ) && ( _MSC_VER <= 1800 )
170 #    define VULKAN_HPP_NOEXCEPT
171 #  else
172 #    define VULKAN_HPP_NOEXCEPT     noexcept
173 #    define VULKAN_HPP_HAS_NOEXCEPT 1
174 #    if defined( VULKAN_HPP_NO_EXCEPTIONS )
175 #      define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept
176 #    else
177 #      define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
178 #    endif
179 #  endif
180 #endif
181 
182 #if 14 <= VULKAN_HPP_CPP_VERSION
183 #  define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]]
184 #else
185 #  define VULKAN_HPP_DEPRECATED( msg )
186 #endif
187 
188 #if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS )
189 #  define VULKAN_HPP_NODISCARD [[nodiscard]]
190 #  if defined( VULKAN_HPP_NO_EXCEPTIONS )
191 #    define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]]
192 #  else
193 #    define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
194 #  endif
195 #else
196 #  define VULKAN_HPP_NODISCARD
197 #  define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS
198 #endif
199 
200 #if !defined( VULKAN_HPP_NAMESPACE )
201 #  define VULKAN_HPP_NAMESPACE vk
202 #endif
203 
204 #define VULKAN_HPP_STRINGIFY2( text ) #text
205 #define VULKAN_HPP_STRINGIFY( text )  VULKAN_HPP_STRINGIFY2( text )
206 #define VULKAN_HPP_NAMESPACE_STRING   VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE )
207 
208 #if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC )
209 #  if defined( VK_NO_PROTOTYPES )
210 #    define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
211 #  else
212 #    define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0
213 #  endif
214 #endif
215 
216 #if !defined( VULKAN_HPP_STORAGE_API )
217 #  if defined( VULKAN_HPP_STORAGE_SHARED )
218 #    if defined( _MSC_VER )
219 #      if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
220 #        define VULKAN_HPP_STORAGE_API __declspec( dllexport )
221 #      else
222 #        define VULKAN_HPP_STORAGE_API __declspec( dllimport )
223 #      endif
224 #    elif defined( __clang__ ) || defined( __GNUC__ )
225 #      if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
226 #        define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) )
227 #      else
228 #        define VULKAN_HPP_STORAGE_API
229 #      endif
230 #    else
231 #      define VULKAN_HPP_STORAGE_API
232 #      pragma warning Unknown import / export semantics
233 #    endif
234 #  else
235 #    define VULKAN_HPP_STORAGE_API
236 #  endif
237 #endif
238 
239 namespace VULKAN_HPP_NAMESPACE
240 {
241   class DispatchLoaderDynamic;
242 }  // namespace VULKAN_HPP_NAMESPACE
243 
244 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER )
245 #  if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
246 #    define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::defaultDispatchLoaderDynamic
247 #    define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE                                             \
248       namespace VULKAN_HPP_NAMESPACE                                                                       \
249       {                                                                                                    \
250         VULKAN_HPP_STORAGE_API ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic; \
251       }
252 
253 namespace VULKAN_HPP_NAMESPACE
254 {
255   extern VULKAN_HPP_STORAGE_API VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic defaultDispatchLoaderDynamic;
256 }  // namespace VULKAN_HPP_NAMESPACE
257 #  else
258 #    define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::getDispatchLoaderStatic()
259 #    define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
260 #  endif
261 #endif
262 
263 #if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_TYPE )
264 #  if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
265 #    define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic
266 #  else
267 #    define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic
268 #  endif
269 #endif
270 
271 #if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER )
272 #  define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT
273 #  define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT
274 #  define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT
275 #else
276 #  define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT         = {}
277 #  define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT = nullptr
278 #  define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT       = VULKAN_HPP_DEFAULT_DISPATCHER
279 #endif
280 
281 #if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected )
282 #  include <expected>
283 #  define VULKAN_HPP_EXPECTED   std::expected
284 #  define VULKAN_HPP_UNEXPECTED std::unexpected
285 #endif
286 
287 #if !defined( VULKAN_HPP_RAII_NAMESPACE )
288 #  define VULKAN_HPP_RAII_NAMESPACE raii
289 #endif
290 
291 #if defined( VULKAN_HPP_NO_EXCEPTIONS ) && defined( VULKAN_HPP_EXPECTED )
292 #  define VULKAN_HPP_RAII_NO_EXCEPTIONS
293 #  define VULKAN_HPP_RAII_CREATE_NOEXCEPT noexcept
294 #else
295 #  define VULKAN_HPP_RAII_CREATE_NOEXCEPT
296 #endif
297 
298 #endif