blob: ef8eed3b65cfccd4aa490a06c296e692626461ea [file] [log] [blame]
Mark Young39389872017-01-19 21:10:49 -07001// Copyright (c) 2015-2017 The Khronos Group Inc.
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06007// http://www.apache.org/licenses/LICENSE-2.0
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06009// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014
15// This header is generated from the Khronos Vulkan XML API Registry.
16
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017#ifndef VULKAN_HPP
18#define VULKAN_HPP
19
20#include <algorithm>
21#include <array>
22#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024#include <cstdint>
25#include <cstring>
26#include <initializer_list>
27#include <string>
28#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030#include <type_traits>
31#include <vulkan/vulkan.h>
32#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33# include <memory>
34# include <vector>
35#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060036static_assert( VK_HEADER_VERSION == 54 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060037
38// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
39// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020040#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
Mark Lobodzinski36c33862017-02-13 10:15:53 -070041# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
42# define VULKAN_HPP_TYPESAFE_CONVERSION
43# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060044#endif
45
46#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
47# if defined(__clang__)
48# if __has_feature(cxx_unrestricted_unions)
49# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
50# endif
51# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060052# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053# if 40600 <= GCC_VERSION
54# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
55# endif
56# elif defined(_MSC_VER)
57# if 1900 <= _MSC_VER
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# endif
61#endif
62
Mark Lobodzinski2d589822016-12-12 09:44:34 -070063#if !defined(VULKAN_HPP_INLINE)
64# if defined(__clang___)
65# if __has_attribute(always_inline)
66# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
67# else
68# define VULKAN_HPP_INLINE inline
69# endif
70# elif defined(__GNUC__)
71# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
72# elif defined(_MSC_VER)
73# define VULKAN_HPP_INLINE __forceinline
74# else
75# define VULKAN_HPP_INLINE inline
76# endif
77#endif
78
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070079#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
80# define VULKAN_HPP_TYPESAFE_EXPLICIT
81#else
82# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
83#endif
84
Lenny Komowbed9b5c2016-08-11 11:23:15 -060085namespace vk
86{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070088 template <typename FlagBitsType> struct FlagTraits
89 {
90 enum { allFlags = 0 };
91 };
92
Lenny Komowbed9b5c2016-08-11 11:23:15 -060093 template <typename BitType, typename MaskType = VkFlags>
94 class Flags
95 {
96 public:
97 Flags()
98 : m_mask(0)
99 {
100 }
101
102 Flags(BitType bit)
103 : m_mask(static_cast<MaskType>(bit))
104 {
105 }
106
107 Flags(Flags<BitType> const& rhs)
108 : m_mask(rhs.m_mask)
109 {
110 }
111
112 Flags<BitType> & operator=(Flags<BitType> const& rhs)
113 {
114 m_mask = rhs.m_mask;
115 return *this;
116 }
117
118 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
119 {
120 m_mask |= rhs.m_mask;
121 return *this;
122 }
123
124 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
125 {
126 m_mask &= rhs.m_mask;
127 return *this;
128 }
129
130 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
131 {
132 m_mask ^= rhs.m_mask;
133 return *this;
134 }
135
136 Flags<BitType> operator|(Flags<BitType> const& rhs) const
137 {
138 Flags<BitType> result(*this);
139 result |= rhs;
140 return result;
141 }
142
143 Flags<BitType> operator&(Flags<BitType> const& rhs) const
144 {
145 Flags<BitType> result(*this);
146 result &= rhs;
147 return result;
148 }
149
150 Flags<BitType> operator^(Flags<BitType> const& rhs) const
151 {
152 Flags<BitType> result(*this);
153 result ^= rhs;
154 return result;
155 }
156
157 bool operator!() const
158 {
159 return !m_mask;
160 }
161
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700162 Flags<BitType> operator~() const
163 {
164 Flags<BitType> result(*this);
165 result.m_mask ^= FlagTraits<BitType>::allFlags;
166 return result;
167 }
168
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600169 bool operator==(Flags<BitType> const& rhs) const
170 {
171 return m_mask == rhs.m_mask;
172 }
173
174 bool operator!=(Flags<BitType> const& rhs) const
175 {
176 return m_mask != rhs.m_mask;
177 }
178
179 explicit operator bool() const
180 {
181 return !!m_mask;
182 }
183
184 explicit operator MaskType() const
185 {
186 return m_mask;
187 }
188
189 private:
190 MaskType m_mask;
191 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600192
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600193 template <typename BitType>
194 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
195 {
196 return flags | bit;
197 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600198
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600199 template <typename BitType>
200 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
201 {
202 return flags & bit;
203 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600204
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600205 template <typename BitType>
206 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
207 {
208 return flags ^ bit;
209 }
210
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700211
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600212 template <typename RefType>
213 class Optional
214 {
215 public:
216 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700217 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600218 Optional(std::nullptr_t) { m_ptr = nullptr; }
219
220 operator RefType*() const { return m_ptr; }
221 RefType const* operator->() const { return m_ptr; }
222 explicit operator bool() const { return !!m_ptr; }
223
224 private:
225 RefType *m_ptr;
226 };
227
228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
229 template <typename T>
230 class ArrayProxy
231 {
232 public:
233 ArrayProxy(std::nullptr_t)
234 : m_count(0)
235 , m_ptr(nullptr)
236 {}
237
238 ArrayProxy(T & ptr)
239 : m_count(1)
240 , m_ptr(&ptr)
241 {}
242
243 ArrayProxy(uint32_t count, T * ptr)
244 : m_count(count)
245 , m_ptr(ptr)
246 {}
247
248 template <size_t N>
249 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
250 : m_count(N)
251 , m_ptr(data.data())
252 {}
253
254 template <size_t N>
255 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
256 : m_count(N)
257 , m_ptr(data.data())
258 {}
259
260 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
261 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
262 : m_count(static_cast<uint32_t>(data.size()))
263 , m_ptr(data.data())
264 {}
265
266 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
267 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
268 : m_count(static_cast<uint32_t>(data.size()))
269 , m_ptr(data.data())
270 {}
271
272 ArrayProxy(std::initializer_list<T> const& data)
273 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
274 , m_ptr(data.begin())
275 {}
276
277 const T * begin() const
278 {
279 return m_ptr;
280 }
281
282 const T * end() const
283 {
284 return m_ptr + m_count;
285 }
286
287 const T & front() const
288 {
289 assert(m_count && m_ptr);
290 return *m_ptr;
291 }
292
293 const T & back() const
294 {
295 assert(m_count && m_ptr);
296 return *(m_ptr + m_count - 1);
297 }
298
299 bool empty() const
300 {
301 return (m_count == 0);
302 }
303
304 uint32_t size() const
305 {
306 return m_count;
307 }
308
309 T * data() const
310 {
311 return m_ptr;
312 }
313
314 private:
315 uint32_t m_count;
316 T * m_ptr;
317 };
318#endif
319
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700320#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
321# define VULKAN_HPP_NO_SMART_HANDLE
322#endif
323
324#ifndef VULKAN_HPP_NO_SMART_HANDLE
325 template <typename Type, typename Deleter>
326 class UniqueHandle
327 {
328 public:
329 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
330 : m_value( value )
331 , m_deleter( deleter )
332 {}
333
334 UniqueHandle( UniqueHandle const& ) = delete;
335
336 UniqueHandle( UniqueHandle && other )
337 : m_value( other.release() )
338 , m_deleter( std::move( other.m_deleter ) )
339 {}
340
341 ~UniqueHandle()
342 {
343 destroy();
344 }
345
346 UniqueHandle & operator=( UniqueHandle const& ) = delete;
347
348 UniqueHandle & operator=( UniqueHandle && other )
349 {
350 reset( other.release() );
351 m_deleter = std::move( other.m_deleter );
352 return *this;
353 }
354
355 explicit operator bool() const
356 {
357 return m_value.operator bool();
358 }
359
360 Type const* operator->() const
361 {
362 return &m_value;
363 }
364
365 Type const& operator*() const
366 {
367 return m_value;
368 }
369
370 Type get() const
371 {
372 return m_value;
373 }
374
375 Deleter & getDeleter()
376 {
377 return m_deleter;
378 }
379
380 Deleter const& getDeleter() const
381 {
382 return m_deleter;
383 }
384
385 void reset( Type const& value = Type() )
386 {
387 if ( m_value != value )
388 {
389 destroy();
390 m_value = value;
391 }
392 }
393
394 Type release()
395 {
396 Type value = m_value;
397 m_value = nullptr;
398 return value;
399 }
400
401 void swap( UniqueHandle<Type, Deleter> & rhs )
402 {
403 std::swap(m_value, rhs.m_value);
404 std::swap(m_deleter, rhs.m_deleter);
405 }
406
407 private:
408 void destroy()
409 {
410 if ( m_value )
411 {
412 m_deleter( m_value );
413 }
414 }
415
416 private:
417 Type m_value;
418 Deleter m_deleter;
419 };
420
421 template <typename Type, typename Deleter>
422 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
423 {
424 lhs.swap( rhs );
425 }
426#endif
427
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600428 enum class Result
429 {
430 eSuccess = VK_SUCCESS,
431 eNotReady = VK_NOT_READY,
432 eTimeout = VK_TIMEOUT,
433 eEventSet = VK_EVENT_SET,
434 eEventReset = VK_EVENT_RESET,
435 eIncomplete = VK_INCOMPLETE,
436 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
437 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
438 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
439 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
440 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
441 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
442 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
443 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
444 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
445 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
446 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600447 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600448 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
449 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
450 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
451 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
452 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
453 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700454 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700455 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -0600456 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600457 };
458
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700459 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600460 {
461 switch (value)
462 {
463 case Result::eSuccess: return "Success";
464 case Result::eNotReady: return "NotReady";
465 case Result::eTimeout: return "Timeout";
466 case Result::eEventSet: return "EventSet";
467 case Result::eEventReset: return "EventReset";
468 case Result::eIncomplete: return "Incomplete";
469 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
470 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
471 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
472 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
473 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
474 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
475 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
476 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
477 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
478 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
479 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600480 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600481 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
482 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
483 case Result::eSuboptimalKHR: return "SuboptimalKHR";
484 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
485 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
486 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
487 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700488 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600489 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600490 default: return "invalid";
491 }
492 }
493
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600494
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600495#if defined(_MSC_VER) && (_MSC_VER == 1800)
496# define noexcept _NOEXCEPT
497#endif
498
499 class ErrorCategoryImpl : public std::error_category
500 {
501 public:
502 virtual const char* name() const noexcept override { return "vk::Result"; }
503 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
504 };
505
506#if defined(_MSC_VER) && (_MSC_VER == 1800)
507# undef noexcept
508#endif
509
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700510 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600511 {
512 static ErrorCategoryImpl instance;
513 return instance;
514 }
515
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700516 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600517 {
518 return std::error_code(static_cast<int>(e), errorCategory());
519 }
520
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700521 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600522 {
523 return std::error_condition(static_cast<int>(e), errorCategory());
524 }
525
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600526#if defined(_MSC_VER) && (_MSC_VER == 1800)
527# define noexcept _NOEXCEPT
528#endif
529
530 class Error
531 {
532 public:
533 virtual ~Error() = default;
534
535 virtual const char* what() const noexcept = 0;
536 };
537
538 class LogicError : public Error, public std::logic_error
539 {
540 public:
541 explicit LogicError( const std::string& what )
542 : Error(), std::logic_error(what) {}
543 explicit LogicError( char const * what )
544 : Error(), std::logic_error(what) {}
545 virtual ~LogicError() = default;
546
547 virtual const char* what() const noexcept { return std::logic_error::what(); }
548 };
549
550 class SystemError : public Error, public std::system_error
551 {
552 public:
553 SystemError( std::error_code ec )
554 : Error(), std::system_error(ec) {}
555 SystemError( std::error_code ec, std::string const& what )
556 : Error(), std::system_error(ec, what) {}
557 SystemError( std::error_code ec, char const * what )
558 : Error(), std::system_error(ec, what) {}
559 SystemError( int ev, std::error_category const& ecat )
560 : Error(), std::system_error(ev, ecat) {}
561 SystemError( int ev, std::error_category const& ecat, std::string const& what)
562 : Error(), std::system_error(ev, ecat, what) {}
563 SystemError( int ev, std::error_category const& ecat, char const * what)
564 : Error(), std::system_error(ev, ecat, what) {}
565 virtual ~SystemError() = default;
566
567 virtual const char* what() const noexcept { return std::system_error::what(); }
568 };
569
570#if defined(_MSC_VER) && (_MSC_VER == 1800)
571# undef noexcept
572#endif
573
574 class OutOfHostMemoryError : public SystemError
575 {
576 public:
577 OutOfHostMemoryError( std::string const& message )
578 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
579 OutOfHostMemoryError( char const * message )
580 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
581 };
582 class OutOfDeviceMemoryError : public SystemError
583 {
584 public:
585 OutOfDeviceMemoryError( std::string const& message )
586 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
587 OutOfDeviceMemoryError( char const * message )
588 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
589 };
590 class InitializationFailedError : public SystemError
591 {
592 public:
593 InitializationFailedError( std::string const& message )
594 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
595 InitializationFailedError( char const * message )
596 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
597 };
598 class DeviceLostError : public SystemError
599 {
600 public:
601 DeviceLostError( std::string const& message )
602 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
603 DeviceLostError( char const * message )
604 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
605 };
606 class MemoryMapFailedError : public SystemError
607 {
608 public:
609 MemoryMapFailedError( std::string const& message )
610 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
611 MemoryMapFailedError( char const * message )
612 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
613 };
614 class LayerNotPresentError : public SystemError
615 {
616 public:
617 LayerNotPresentError( std::string const& message )
618 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
619 LayerNotPresentError( char const * message )
620 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
621 };
622 class ExtensionNotPresentError : public SystemError
623 {
624 public:
625 ExtensionNotPresentError( std::string const& message )
626 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
627 ExtensionNotPresentError( char const * message )
628 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
629 };
630 class FeatureNotPresentError : public SystemError
631 {
632 public:
633 FeatureNotPresentError( std::string const& message )
634 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
635 FeatureNotPresentError( char const * message )
636 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
637 };
638 class IncompatibleDriverError : public SystemError
639 {
640 public:
641 IncompatibleDriverError( std::string const& message )
642 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
643 IncompatibleDriverError( char const * message )
644 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
645 };
646 class TooManyObjectsError : public SystemError
647 {
648 public:
649 TooManyObjectsError( std::string const& message )
650 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
651 TooManyObjectsError( char const * message )
652 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
653 };
654 class FormatNotSupportedError : public SystemError
655 {
656 public:
657 FormatNotSupportedError( std::string const& message )
658 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
659 FormatNotSupportedError( char const * message )
660 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
661 };
662 class FragmentedPoolError : public SystemError
663 {
664 public:
665 FragmentedPoolError( std::string const& message )
666 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
667 FragmentedPoolError( char const * message )
668 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
669 };
670 class SurfaceLostKHRError : public SystemError
671 {
672 public:
673 SurfaceLostKHRError( std::string const& message )
674 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
675 SurfaceLostKHRError( char const * message )
676 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
677 };
678 class NativeWindowInUseKHRError : public SystemError
679 {
680 public:
681 NativeWindowInUseKHRError( std::string const& message )
682 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
683 NativeWindowInUseKHRError( char const * message )
684 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
685 };
686 class OutOfDateKHRError : public SystemError
687 {
688 public:
689 OutOfDateKHRError( std::string const& message )
690 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
691 OutOfDateKHRError( char const * message )
692 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
693 };
694 class IncompatibleDisplayKHRError : public SystemError
695 {
696 public:
697 IncompatibleDisplayKHRError( std::string const& message )
698 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
699 IncompatibleDisplayKHRError( char const * message )
700 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
701 };
702 class ValidationFailedEXTError : public SystemError
703 {
704 public:
705 ValidationFailedEXTError( std::string const& message )
706 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
707 ValidationFailedEXTError( char const * message )
708 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
709 };
710 class InvalidShaderNVError : public SystemError
711 {
712 public:
713 InvalidShaderNVError( std::string const& message )
714 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
715 InvalidShaderNVError( char const * message )
716 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
717 };
718 class OutOfPoolMemoryKHRError : public SystemError
719 {
720 public:
721 OutOfPoolMemoryKHRError( std::string const& message )
722 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
723 OutOfPoolMemoryKHRError( char const * message )
724 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
725 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600726 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600727 {
728 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600729 InvalidExternalHandleKHRError( std::string const& message )
730 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
731 InvalidExternalHandleKHRError( char const * message )
732 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600733 };
734
735 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
736 {
737 assert ( static_cast<long long int>(result) < 0 );
738 switch ( result )
739 {
740 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
741 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
742 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
743 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
744 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
745 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
746 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
747 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
748 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
749 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
750 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
751 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
752 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
753 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
754 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
755 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
756 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
757 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
758 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600759 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600760 default: throw SystemError( make_error_code( result ) );
761 }
762 }
763
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600764} // namespace vk
765
766namespace std
767{
768 template <>
769 struct is_error_code_enum<vk::Result> : public true_type
770 {};
771}
772
773namespace vk
774{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600775
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600776 template <typename T>
777 struct ResultValue
778 {
779 ResultValue( Result r, T & v )
780 : result( r )
781 , value( v )
782 {}
783
784 Result result;
785 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700786
787 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600788 };
789
790 template <typename T>
791 struct ResultValueType
792 {
793#ifdef VULKAN_HPP_NO_EXCEPTIONS
794 typedef ResultValue<T> type;
795#else
796 typedef T type;
797#endif
798 };
799
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600800 template <>
801 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600802 {
803#ifdef VULKAN_HPP_NO_EXCEPTIONS
804 typedef Result type;
805#else
806 typedef void type;
807#endif
808 };
809
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700810 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600811 {
812#ifdef VULKAN_HPP_NO_EXCEPTIONS
813 assert( result == Result::eSuccess );
814 return result;
815#else
816 if ( result != Result::eSuccess )
817 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600818 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600819 }
820#endif
821 }
822
823 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700824 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600825 {
826#ifdef VULKAN_HPP_NO_EXCEPTIONS
827 assert( result == Result::eSuccess );
828 return ResultValue<T>( result, data );
829#else
830 if ( result != Result::eSuccess )
831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600832 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600833 }
834 return data;
835#endif
836 }
837
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700838 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600839 {
840#ifdef VULKAN_HPP_NO_EXCEPTIONS
841 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
842#else
843 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600845 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600846 }
847#endif
848 return result;
849 }
850
851 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700852 VULKAN_HPP_INLINE ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600853 {
854#ifdef VULKAN_HPP_NO_EXCEPTIONS
855 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
856#else
857 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
858 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600859 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600860 }
861#endif
862 return ResultValue<T>( result, data );
863 }
864
865 using SampleMask = uint32_t;
866
867 using Bool32 = uint32_t;
868
869 using DeviceSize = uint64_t;
870
871 enum class FramebufferCreateFlagBits
872 {
873 };
874
875 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
876
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600877 enum class QueryPoolCreateFlagBits
878 {
879 };
880
881 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
882
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600883 enum class RenderPassCreateFlagBits
884 {
885 };
886
887 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
888
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600889 enum class SamplerCreateFlagBits
890 {
891 };
892
893 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
894
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600895 enum class PipelineLayoutCreateFlagBits
896 {
897 };
898
899 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
900
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600901 enum class PipelineCacheCreateFlagBits
902 {
903 };
904
905 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
906
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600907 enum class PipelineDepthStencilStateCreateFlagBits
908 {
909 };
910
911 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
912
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600913 enum class PipelineDynamicStateCreateFlagBits
914 {
915 };
916
917 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
918
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600919 enum class PipelineColorBlendStateCreateFlagBits
920 {
921 };
922
923 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
924
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600925 enum class PipelineMultisampleStateCreateFlagBits
926 {
927 };
928
929 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
930
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600931 enum class PipelineRasterizationStateCreateFlagBits
932 {
933 };
934
935 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
936
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600937 enum class PipelineViewportStateCreateFlagBits
938 {
939 };
940
941 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
942
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600943 enum class PipelineTessellationStateCreateFlagBits
944 {
945 };
946
947 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
948
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600949 enum class PipelineInputAssemblyStateCreateFlagBits
950 {
951 };
952
953 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
954
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600955 enum class PipelineVertexInputStateCreateFlagBits
956 {
957 };
958
959 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
960
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600961 enum class PipelineShaderStageCreateFlagBits
962 {
963 };
964
965 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
966
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600967 enum class BufferViewCreateFlagBits
968 {
969 };
970
971 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
972
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600973 enum class InstanceCreateFlagBits
974 {
975 };
976
977 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
978
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600979 enum class DeviceCreateFlagBits
980 {
981 };
982
983 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
984
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600985 enum class DeviceQueueCreateFlagBits
986 {
987 };
988
989 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
990
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600991 enum class ImageViewCreateFlagBits
992 {
993 };
994
995 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
996
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600997 enum class SemaphoreCreateFlagBits
998 {
999 };
1000
1001 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003 enum class ShaderModuleCreateFlagBits
1004 {
1005 };
1006
1007 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1008
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001009 enum class EventCreateFlagBits
1010 {
1011 };
1012
1013 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1014
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001015 enum class MemoryMapFlagBits
1016 {
1017 };
1018
1019 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1020
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001021 enum class DescriptorPoolResetFlagBits
1022 {
1023 };
1024
1025 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1026
Mark Young0f183a82017-02-28 09:58:04 -07001027 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 {
1029 };
1030
Mark Young0f183a82017-02-28 09:58:04 -07001031 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001032
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001033 enum class DisplayModeCreateFlagBitsKHR
1034 {
1035 };
1036
1037 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001039 enum class DisplaySurfaceCreateFlagBitsKHR
1040 {
1041 };
1042
1043 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001045#ifdef VK_USE_PLATFORM_ANDROID_KHR
1046 enum class AndroidSurfaceCreateFlagBitsKHR
1047 {
1048 };
1049#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1050
1051#ifdef VK_USE_PLATFORM_ANDROID_KHR
1052 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001053#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1054
1055#ifdef VK_USE_PLATFORM_MIR_KHR
1056 enum class MirSurfaceCreateFlagBitsKHR
1057 {
1058 };
1059#endif /*VK_USE_PLATFORM_MIR_KHR*/
1060
1061#ifdef VK_USE_PLATFORM_MIR_KHR
1062 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001063#endif /*VK_USE_PLATFORM_MIR_KHR*/
1064
Mark Young39389872017-01-19 21:10:49 -07001065#ifdef VK_USE_PLATFORM_VI_NN
1066 enum class ViSurfaceCreateFlagBitsNN
1067 {
1068 };
1069#endif /*VK_USE_PLATFORM_VI_NN*/
1070
1071#ifdef VK_USE_PLATFORM_VI_NN
1072 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001073#endif /*VK_USE_PLATFORM_VI_NN*/
1074
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001075#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1076 enum class WaylandSurfaceCreateFlagBitsKHR
1077 {
1078 };
1079#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1080
1081#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1082 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001083#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1084
1085#ifdef VK_USE_PLATFORM_WIN32_KHR
1086 enum class Win32SurfaceCreateFlagBitsKHR
1087 {
1088 };
1089#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1090
1091#ifdef VK_USE_PLATFORM_WIN32_KHR
1092 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001093#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1094
1095#ifdef VK_USE_PLATFORM_XLIB_KHR
1096 enum class XlibSurfaceCreateFlagBitsKHR
1097 {
1098 };
1099#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1100
1101#ifdef VK_USE_PLATFORM_XLIB_KHR
1102 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001103#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1104
1105#ifdef VK_USE_PLATFORM_XCB_KHR
1106 enum class XcbSurfaceCreateFlagBitsKHR
1107 {
1108 };
1109#endif /*VK_USE_PLATFORM_XCB_KHR*/
1110
1111#ifdef VK_USE_PLATFORM_XCB_KHR
1112 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001113#endif /*VK_USE_PLATFORM_XCB_KHR*/
1114
Mark Young0f183a82017-02-28 09:58:04 -07001115#ifdef VK_USE_PLATFORM_IOS_MVK
1116 enum class IOSSurfaceCreateFlagBitsMVK
1117 {
1118 };
1119#endif /*VK_USE_PLATFORM_IOS_MVK*/
1120
1121#ifdef VK_USE_PLATFORM_IOS_MVK
1122 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001123#endif /*VK_USE_PLATFORM_IOS_MVK*/
1124
1125#ifdef VK_USE_PLATFORM_MACOS_MVK
1126 enum class MacOSSurfaceCreateFlagBitsMVK
1127 {
1128 };
1129#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1130
1131#ifdef VK_USE_PLATFORM_MACOS_MVK
1132 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001133#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1134
Mark Young39389872017-01-19 21:10:49 -07001135 enum class CommandPoolTrimFlagBitsKHR
1136 {
1137 };
1138
1139 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1140
Mark Young0f183a82017-02-28 09:58:04 -07001141 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1142 {
1143 };
1144
1145 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1146
Mark Young0f183a82017-02-28 09:58:04 -07001147 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1148 {
1149 };
1150
1151 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1152
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001153 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1154 {
1155 };
1156
1157 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1158
1159 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1160 {
1161 };
1162
1163 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1164
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001165 class DeviceMemory
1166 {
1167 public:
1168 DeviceMemory()
1169 : m_deviceMemory(VK_NULL_HANDLE)
1170 {}
1171
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001172 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001173 : m_deviceMemory(VK_NULL_HANDLE)
1174 {}
1175
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001176 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1177 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001178 {}
1179
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001180#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001181 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001182 {
1183 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001184 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001185 }
1186#endif
1187
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001188 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001189 {
1190 m_deviceMemory = VK_NULL_HANDLE;
1191 return *this;
1192 }
1193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001194 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001195 {
1196 return m_deviceMemory == rhs.m_deviceMemory;
1197 }
1198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001199 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001200 {
1201 return m_deviceMemory != rhs.m_deviceMemory;
1202 }
1203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001204 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001205 {
1206 return m_deviceMemory < rhs.m_deviceMemory;
1207 }
1208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001209
1210
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001211 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001212 {
1213 return m_deviceMemory;
1214 }
1215
1216 explicit operator bool() const
1217 {
1218 return m_deviceMemory != VK_NULL_HANDLE;
1219 }
1220
1221 bool operator!() const
1222 {
1223 return m_deviceMemory == VK_NULL_HANDLE;
1224 }
1225
1226 private:
1227 VkDeviceMemory m_deviceMemory;
1228 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001229
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001230 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1231
1232 class CommandPool
1233 {
1234 public:
1235 CommandPool()
1236 : m_commandPool(VK_NULL_HANDLE)
1237 {}
1238
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001239 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001240 : m_commandPool(VK_NULL_HANDLE)
1241 {}
1242
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001243 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1244 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001245 {}
1246
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001247#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001248 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001249 {
1250 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001251 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001252 }
1253#endif
1254
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001255 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001256 {
1257 m_commandPool = VK_NULL_HANDLE;
1258 return *this;
1259 }
1260
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001261 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001262 {
1263 return m_commandPool == rhs.m_commandPool;
1264 }
1265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001266 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001267 {
1268 return m_commandPool != rhs.m_commandPool;
1269 }
1270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001271 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001272 {
1273 return m_commandPool < rhs.m_commandPool;
1274 }
1275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001276
1277
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001278 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001279 {
1280 return m_commandPool;
1281 }
1282
1283 explicit operator bool() const
1284 {
1285 return m_commandPool != VK_NULL_HANDLE;
1286 }
1287
1288 bool operator!() const
1289 {
1290 return m_commandPool == VK_NULL_HANDLE;
1291 }
1292
1293 private:
1294 VkCommandPool m_commandPool;
1295 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001296
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001297 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1298
1299 class Buffer
1300 {
1301 public:
1302 Buffer()
1303 : m_buffer(VK_NULL_HANDLE)
1304 {}
1305
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001306 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001307 : m_buffer(VK_NULL_HANDLE)
1308 {}
1309
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001310 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1311 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001312 {}
1313
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001314#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001315 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001316 {
1317 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001318 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001319 }
1320#endif
1321
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001322 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001323 {
1324 m_buffer = VK_NULL_HANDLE;
1325 return *this;
1326 }
1327
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001328 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001329 {
1330 return m_buffer == rhs.m_buffer;
1331 }
1332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001333 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001334 {
1335 return m_buffer != rhs.m_buffer;
1336 }
1337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001338 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001339 {
1340 return m_buffer < rhs.m_buffer;
1341 }
1342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001343
1344
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001345 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001346 {
1347 return m_buffer;
1348 }
1349
1350 explicit operator bool() const
1351 {
1352 return m_buffer != VK_NULL_HANDLE;
1353 }
1354
1355 bool operator!() const
1356 {
1357 return m_buffer == VK_NULL_HANDLE;
1358 }
1359
1360 private:
1361 VkBuffer m_buffer;
1362 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001363
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001364 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1365
1366 class BufferView
1367 {
1368 public:
1369 BufferView()
1370 : m_bufferView(VK_NULL_HANDLE)
1371 {}
1372
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001373 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001374 : m_bufferView(VK_NULL_HANDLE)
1375 {}
1376
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001377 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1378 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001379 {}
1380
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001381#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001382 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001383 {
1384 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001385 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001386 }
1387#endif
1388
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001389 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001390 {
1391 m_bufferView = VK_NULL_HANDLE;
1392 return *this;
1393 }
1394
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001395 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001396 {
1397 return m_bufferView == rhs.m_bufferView;
1398 }
1399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001400 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001401 {
1402 return m_bufferView != rhs.m_bufferView;
1403 }
1404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001405 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001406 {
1407 return m_bufferView < rhs.m_bufferView;
1408 }
1409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001410
1411
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001412 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001413 {
1414 return m_bufferView;
1415 }
1416
1417 explicit operator bool() const
1418 {
1419 return m_bufferView != VK_NULL_HANDLE;
1420 }
1421
1422 bool operator!() const
1423 {
1424 return m_bufferView == VK_NULL_HANDLE;
1425 }
1426
1427 private:
1428 VkBufferView m_bufferView;
1429 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001430
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001431 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1432
1433 class Image
1434 {
1435 public:
1436 Image()
1437 : m_image(VK_NULL_HANDLE)
1438 {}
1439
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001440 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001441 : m_image(VK_NULL_HANDLE)
1442 {}
1443
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001444 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1445 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001446 {}
1447
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001448#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001449 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001450 {
1451 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001452 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001453 }
1454#endif
1455
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001456 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001457 {
1458 m_image = VK_NULL_HANDLE;
1459 return *this;
1460 }
1461
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001462 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001463 {
1464 return m_image == rhs.m_image;
1465 }
1466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001467 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001468 {
1469 return m_image != rhs.m_image;
1470 }
1471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001472 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001473 {
1474 return m_image < rhs.m_image;
1475 }
1476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001477
1478
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001479 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001480 {
1481 return m_image;
1482 }
1483
1484 explicit operator bool() const
1485 {
1486 return m_image != VK_NULL_HANDLE;
1487 }
1488
1489 bool operator!() const
1490 {
1491 return m_image == VK_NULL_HANDLE;
1492 }
1493
1494 private:
1495 VkImage m_image;
1496 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001497
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001498 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1499
1500 class ImageView
1501 {
1502 public:
1503 ImageView()
1504 : m_imageView(VK_NULL_HANDLE)
1505 {}
1506
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001507 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001508 : m_imageView(VK_NULL_HANDLE)
1509 {}
1510
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001511 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1512 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001513 {}
1514
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001515#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001516 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001517 {
1518 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001519 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001520 }
1521#endif
1522
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001523 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001524 {
1525 m_imageView = VK_NULL_HANDLE;
1526 return *this;
1527 }
1528
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001529 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001530 {
1531 return m_imageView == rhs.m_imageView;
1532 }
1533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001534 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001535 {
1536 return m_imageView != rhs.m_imageView;
1537 }
1538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001539 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001540 {
1541 return m_imageView < rhs.m_imageView;
1542 }
1543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001544
1545
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001546 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001547 {
1548 return m_imageView;
1549 }
1550
1551 explicit operator bool() const
1552 {
1553 return m_imageView != VK_NULL_HANDLE;
1554 }
1555
1556 bool operator!() const
1557 {
1558 return m_imageView == VK_NULL_HANDLE;
1559 }
1560
1561 private:
1562 VkImageView m_imageView;
1563 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001564
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001565 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1566
1567 class ShaderModule
1568 {
1569 public:
1570 ShaderModule()
1571 : m_shaderModule(VK_NULL_HANDLE)
1572 {}
1573
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001574 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001575 : m_shaderModule(VK_NULL_HANDLE)
1576 {}
1577
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001578 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1579 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001580 {}
1581
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001582#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001583 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001584 {
1585 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001586 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001587 }
1588#endif
1589
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001590 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001591 {
1592 m_shaderModule = VK_NULL_HANDLE;
1593 return *this;
1594 }
1595
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001596 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001597 {
1598 return m_shaderModule == rhs.m_shaderModule;
1599 }
1600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001601 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001602 {
1603 return m_shaderModule != rhs.m_shaderModule;
1604 }
1605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001606 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001607 {
1608 return m_shaderModule < rhs.m_shaderModule;
1609 }
1610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001611
1612
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001613 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001614 {
1615 return m_shaderModule;
1616 }
1617
1618 explicit operator bool() const
1619 {
1620 return m_shaderModule != VK_NULL_HANDLE;
1621 }
1622
1623 bool operator!() const
1624 {
1625 return m_shaderModule == VK_NULL_HANDLE;
1626 }
1627
1628 private:
1629 VkShaderModule m_shaderModule;
1630 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001631
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001632 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1633
1634 class Pipeline
1635 {
1636 public:
1637 Pipeline()
1638 : m_pipeline(VK_NULL_HANDLE)
1639 {}
1640
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001641 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001642 : m_pipeline(VK_NULL_HANDLE)
1643 {}
1644
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001645 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1646 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001647 {}
1648
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001649#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001650 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001651 {
1652 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001653 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001654 }
1655#endif
1656
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001657 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001658 {
1659 m_pipeline = VK_NULL_HANDLE;
1660 return *this;
1661 }
1662
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001663 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001664 {
1665 return m_pipeline == rhs.m_pipeline;
1666 }
1667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001668 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001669 {
1670 return m_pipeline != rhs.m_pipeline;
1671 }
1672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001673 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001674 {
1675 return m_pipeline < rhs.m_pipeline;
1676 }
1677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001678
1679
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001680 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001681 {
1682 return m_pipeline;
1683 }
1684
1685 explicit operator bool() const
1686 {
1687 return m_pipeline != VK_NULL_HANDLE;
1688 }
1689
1690 bool operator!() const
1691 {
1692 return m_pipeline == VK_NULL_HANDLE;
1693 }
1694
1695 private:
1696 VkPipeline m_pipeline;
1697 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001698
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001699 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1700
1701 class PipelineLayout
1702 {
1703 public:
1704 PipelineLayout()
1705 : m_pipelineLayout(VK_NULL_HANDLE)
1706 {}
1707
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001708 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001709 : m_pipelineLayout(VK_NULL_HANDLE)
1710 {}
1711
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001712 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1713 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001714 {}
1715
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001716#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001717 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001718 {
1719 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001720 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001721 }
1722#endif
1723
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001724 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001725 {
1726 m_pipelineLayout = VK_NULL_HANDLE;
1727 return *this;
1728 }
1729
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001730 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001731 {
1732 return m_pipelineLayout == rhs.m_pipelineLayout;
1733 }
1734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001735 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001736 {
1737 return m_pipelineLayout != rhs.m_pipelineLayout;
1738 }
1739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001740 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001741 {
1742 return m_pipelineLayout < rhs.m_pipelineLayout;
1743 }
1744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001745
1746
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001747 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001748 {
1749 return m_pipelineLayout;
1750 }
1751
1752 explicit operator bool() const
1753 {
1754 return m_pipelineLayout != VK_NULL_HANDLE;
1755 }
1756
1757 bool operator!() const
1758 {
1759 return m_pipelineLayout == VK_NULL_HANDLE;
1760 }
1761
1762 private:
1763 VkPipelineLayout m_pipelineLayout;
1764 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001765
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001766 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1767
1768 class Sampler
1769 {
1770 public:
1771 Sampler()
1772 : m_sampler(VK_NULL_HANDLE)
1773 {}
1774
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001775 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001776 : m_sampler(VK_NULL_HANDLE)
1777 {}
1778
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001779 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1780 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001781 {}
1782
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001783#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001784 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001785 {
1786 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001787 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001788 }
1789#endif
1790
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001791 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001792 {
1793 m_sampler = VK_NULL_HANDLE;
1794 return *this;
1795 }
1796
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001797 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001798 {
1799 return m_sampler == rhs.m_sampler;
1800 }
1801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001802 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001803 {
1804 return m_sampler != rhs.m_sampler;
1805 }
1806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001807 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001808 {
1809 return m_sampler < rhs.m_sampler;
1810 }
1811
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001812
1813
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001814 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001815 {
1816 return m_sampler;
1817 }
1818
1819 explicit operator bool() const
1820 {
1821 return m_sampler != VK_NULL_HANDLE;
1822 }
1823
1824 bool operator!() const
1825 {
1826 return m_sampler == VK_NULL_HANDLE;
1827 }
1828
1829 private:
1830 VkSampler m_sampler;
1831 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001832
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001833 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1834
1835 class DescriptorSet
1836 {
1837 public:
1838 DescriptorSet()
1839 : m_descriptorSet(VK_NULL_HANDLE)
1840 {}
1841
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001842 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001843 : m_descriptorSet(VK_NULL_HANDLE)
1844 {}
1845
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001846 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1847 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001848 {}
1849
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001850#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001851 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001852 {
1853 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001854 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001855 }
1856#endif
1857
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001858 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001859 {
1860 m_descriptorSet = VK_NULL_HANDLE;
1861 return *this;
1862 }
1863
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001864 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001865 {
1866 return m_descriptorSet == rhs.m_descriptorSet;
1867 }
1868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001869 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001870 {
1871 return m_descriptorSet != rhs.m_descriptorSet;
1872 }
1873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001874 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001875 {
1876 return m_descriptorSet < rhs.m_descriptorSet;
1877 }
1878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001879
1880
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001881 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001882 {
1883 return m_descriptorSet;
1884 }
1885
1886 explicit operator bool() const
1887 {
1888 return m_descriptorSet != VK_NULL_HANDLE;
1889 }
1890
1891 bool operator!() const
1892 {
1893 return m_descriptorSet == VK_NULL_HANDLE;
1894 }
1895
1896 private:
1897 VkDescriptorSet m_descriptorSet;
1898 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001899
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001900 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1901
1902 class DescriptorSetLayout
1903 {
1904 public:
1905 DescriptorSetLayout()
1906 : m_descriptorSetLayout(VK_NULL_HANDLE)
1907 {}
1908
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001909 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001910 : m_descriptorSetLayout(VK_NULL_HANDLE)
1911 {}
1912
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001913 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
1914 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001915 {}
1916
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001917#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001918 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001919 {
1920 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001921 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001922 }
1923#endif
1924
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001925 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001926 {
1927 m_descriptorSetLayout = VK_NULL_HANDLE;
1928 return *this;
1929 }
1930
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001931 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001932 {
1933 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
1934 }
1935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001936 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001937 {
1938 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
1939 }
1940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001941 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001942 {
1943 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
1944 }
1945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001946
1947
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001948 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001949 {
1950 return m_descriptorSetLayout;
1951 }
1952
1953 explicit operator bool() const
1954 {
1955 return m_descriptorSetLayout != VK_NULL_HANDLE;
1956 }
1957
1958 bool operator!() const
1959 {
1960 return m_descriptorSetLayout == VK_NULL_HANDLE;
1961 }
1962
1963 private:
1964 VkDescriptorSetLayout m_descriptorSetLayout;
1965 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001967 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
1968
1969 class DescriptorPool
1970 {
1971 public:
1972 DescriptorPool()
1973 : m_descriptorPool(VK_NULL_HANDLE)
1974 {}
1975
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001976 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001977 : m_descriptorPool(VK_NULL_HANDLE)
1978 {}
1979
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001980 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
1981 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001982 {}
1983
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001984#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001985 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001986 {
1987 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001988 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001989 }
1990#endif
1991
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001992 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001993 {
1994 m_descriptorPool = VK_NULL_HANDLE;
1995 return *this;
1996 }
1997
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001998 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001999 {
2000 return m_descriptorPool == rhs.m_descriptorPool;
2001 }
2002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002003 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002004 {
2005 return m_descriptorPool != rhs.m_descriptorPool;
2006 }
2007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002008 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002009 {
2010 return m_descriptorPool < rhs.m_descriptorPool;
2011 }
2012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002013
2014
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002015 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002016 {
2017 return m_descriptorPool;
2018 }
2019
2020 explicit operator bool() const
2021 {
2022 return m_descriptorPool != VK_NULL_HANDLE;
2023 }
2024
2025 bool operator!() const
2026 {
2027 return m_descriptorPool == VK_NULL_HANDLE;
2028 }
2029
2030 private:
2031 VkDescriptorPool m_descriptorPool;
2032 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002033
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002034 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2035
2036 class Fence
2037 {
2038 public:
2039 Fence()
2040 : m_fence(VK_NULL_HANDLE)
2041 {}
2042
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002043 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002044 : m_fence(VK_NULL_HANDLE)
2045 {}
2046
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002047 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2048 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002049 {}
2050
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002051#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002052 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002053 {
2054 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002055 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002056 }
2057#endif
2058
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002059 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002060 {
2061 m_fence = VK_NULL_HANDLE;
2062 return *this;
2063 }
2064
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002065 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002066 {
2067 return m_fence == rhs.m_fence;
2068 }
2069
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002070 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002071 {
2072 return m_fence != rhs.m_fence;
2073 }
2074
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002075 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002076 {
2077 return m_fence < rhs.m_fence;
2078 }
2079
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002080
2081
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002082 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002083 {
2084 return m_fence;
2085 }
2086
2087 explicit operator bool() const
2088 {
2089 return m_fence != VK_NULL_HANDLE;
2090 }
2091
2092 bool operator!() const
2093 {
2094 return m_fence == VK_NULL_HANDLE;
2095 }
2096
2097 private:
2098 VkFence m_fence;
2099 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002100
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002101 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2102
2103 class Semaphore
2104 {
2105 public:
2106 Semaphore()
2107 : m_semaphore(VK_NULL_HANDLE)
2108 {}
2109
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002110 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002111 : m_semaphore(VK_NULL_HANDLE)
2112 {}
2113
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002114 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2115 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002116 {}
2117
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002118#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002119 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002120 {
2121 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002122 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002123 }
2124#endif
2125
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002126 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002127 {
2128 m_semaphore = VK_NULL_HANDLE;
2129 return *this;
2130 }
2131
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002132 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002133 {
2134 return m_semaphore == rhs.m_semaphore;
2135 }
2136
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002137 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002138 {
2139 return m_semaphore != rhs.m_semaphore;
2140 }
2141
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002142 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002143 {
2144 return m_semaphore < rhs.m_semaphore;
2145 }
2146
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002147
2148
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002149 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002150 {
2151 return m_semaphore;
2152 }
2153
2154 explicit operator bool() const
2155 {
2156 return m_semaphore != VK_NULL_HANDLE;
2157 }
2158
2159 bool operator!() const
2160 {
2161 return m_semaphore == VK_NULL_HANDLE;
2162 }
2163
2164 private:
2165 VkSemaphore m_semaphore;
2166 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002167
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002168 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2169
2170 class Event
2171 {
2172 public:
2173 Event()
2174 : m_event(VK_NULL_HANDLE)
2175 {}
2176
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002177 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002178 : m_event(VK_NULL_HANDLE)
2179 {}
2180
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002181 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2182 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002183 {}
2184
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002185#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002186 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002187 {
2188 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002189 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002190 }
2191#endif
2192
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002193 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002194 {
2195 m_event = VK_NULL_HANDLE;
2196 return *this;
2197 }
2198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002199 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002200 {
2201 return m_event == rhs.m_event;
2202 }
2203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002204 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002205 {
2206 return m_event != rhs.m_event;
2207 }
2208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002209 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002210 {
2211 return m_event < rhs.m_event;
2212 }
2213
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002214
2215
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002216 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002217 {
2218 return m_event;
2219 }
2220
2221 explicit operator bool() const
2222 {
2223 return m_event != VK_NULL_HANDLE;
2224 }
2225
2226 bool operator!() const
2227 {
2228 return m_event == VK_NULL_HANDLE;
2229 }
2230
2231 private:
2232 VkEvent m_event;
2233 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002234
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002235 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2236
2237 class QueryPool
2238 {
2239 public:
2240 QueryPool()
2241 : m_queryPool(VK_NULL_HANDLE)
2242 {}
2243
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002244 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002245 : m_queryPool(VK_NULL_HANDLE)
2246 {}
2247
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002248 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2249 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002250 {}
2251
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002252#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002253 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002254 {
2255 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002256 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002257 }
2258#endif
2259
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002260 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002261 {
2262 m_queryPool = VK_NULL_HANDLE;
2263 return *this;
2264 }
2265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002266 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002267 {
2268 return m_queryPool == rhs.m_queryPool;
2269 }
2270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002271 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002272 {
2273 return m_queryPool != rhs.m_queryPool;
2274 }
2275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002276 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002277 {
2278 return m_queryPool < rhs.m_queryPool;
2279 }
2280
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002281
2282
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002283 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002284 {
2285 return m_queryPool;
2286 }
2287
2288 explicit operator bool() const
2289 {
2290 return m_queryPool != VK_NULL_HANDLE;
2291 }
2292
2293 bool operator!() const
2294 {
2295 return m_queryPool == VK_NULL_HANDLE;
2296 }
2297
2298 private:
2299 VkQueryPool m_queryPool;
2300 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002301
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002302 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2303
2304 class Framebuffer
2305 {
2306 public:
2307 Framebuffer()
2308 : m_framebuffer(VK_NULL_HANDLE)
2309 {}
2310
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002311 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002312 : m_framebuffer(VK_NULL_HANDLE)
2313 {}
2314
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002315 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2316 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002317 {}
2318
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002319#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002320 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002321 {
2322 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002323 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002324 }
2325#endif
2326
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002327 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002328 {
2329 m_framebuffer = VK_NULL_HANDLE;
2330 return *this;
2331 }
2332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002333 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002334 {
2335 return m_framebuffer == rhs.m_framebuffer;
2336 }
2337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002338 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002339 {
2340 return m_framebuffer != rhs.m_framebuffer;
2341 }
2342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002343 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002344 {
2345 return m_framebuffer < rhs.m_framebuffer;
2346 }
2347
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002348
2349
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002350 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002351 {
2352 return m_framebuffer;
2353 }
2354
2355 explicit operator bool() const
2356 {
2357 return m_framebuffer != VK_NULL_HANDLE;
2358 }
2359
2360 bool operator!() const
2361 {
2362 return m_framebuffer == VK_NULL_HANDLE;
2363 }
2364
2365 private:
2366 VkFramebuffer m_framebuffer;
2367 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002368
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002369 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2370
2371 class RenderPass
2372 {
2373 public:
2374 RenderPass()
2375 : m_renderPass(VK_NULL_HANDLE)
2376 {}
2377
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002378 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002379 : m_renderPass(VK_NULL_HANDLE)
2380 {}
2381
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002382 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2383 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002384 {}
2385
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002386#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002387 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002388 {
2389 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002390 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002391 }
2392#endif
2393
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002394 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002395 {
2396 m_renderPass = VK_NULL_HANDLE;
2397 return *this;
2398 }
2399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002400 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002401 {
2402 return m_renderPass == rhs.m_renderPass;
2403 }
2404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002405 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002406 {
2407 return m_renderPass != rhs.m_renderPass;
2408 }
2409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002410 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002411 {
2412 return m_renderPass < rhs.m_renderPass;
2413 }
2414
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002415
2416
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002417 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002418 {
2419 return m_renderPass;
2420 }
2421
2422 explicit operator bool() const
2423 {
2424 return m_renderPass != VK_NULL_HANDLE;
2425 }
2426
2427 bool operator!() const
2428 {
2429 return m_renderPass == VK_NULL_HANDLE;
2430 }
2431
2432 private:
2433 VkRenderPass m_renderPass;
2434 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002435
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002436 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2437
2438 class PipelineCache
2439 {
2440 public:
2441 PipelineCache()
2442 : m_pipelineCache(VK_NULL_HANDLE)
2443 {}
2444
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002445 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002446 : m_pipelineCache(VK_NULL_HANDLE)
2447 {}
2448
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002449 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2450 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002451 {}
2452
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002453#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002454 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002455 {
2456 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002457 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002458 }
2459#endif
2460
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002461 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002462 {
2463 m_pipelineCache = VK_NULL_HANDLE;
2464 return *this;
2465 }
2466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002467 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002468 {
2469 return m_pipelineCache == rhs.m_pipelineCache;
2470 }
2471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002472 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002473 {
2474 return m_pipelineCache != rhs.m_pipelineCache;
2475 }
2476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002477 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002478 {
2479 return m_pipelineCache < rhs.m_pipelineCache;
2480 }
2481
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002482
2483
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002484 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002485 {
2486 return m_pipelineCache;
2487 }
2488
2489 explicit operator bool() const
2490 {
2491 return m_pipelineCache != VK_NULL_HANDLE;
2492 }
2493
2494 bool operator!() const
2495 {
2496 return m_pipelineCache == VK_NULL_HANDLE;
2497 }
2498
2499 private:
2500 VkPipelineCache m_pipelineCache;
2501 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002502
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002503 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2504
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002505 class ObjectTableNVX
2506 {
2507 public:
2508 ObjectTableNVX()
2509 : m_objectTableNVX(VK_NULL_HANDLE)
2510 {}
2511
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002512 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002513 : m_objectTableNVX(VK_NULL_HANDLE)
2514 {}
2515
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002516 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2517 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002518 {}
2519
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002520#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002521 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002522 {
2523 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002524 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002525 }
2526#endif
2527
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002528 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002529 {
2530 m_objectTableNVX = VK_NULL_HANDLE;
2531 return *this;
2532 }
2533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002534 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002535 {
2536 return m_objectTableNVX == rhs.m_objectTableNVX;
2537 }
2538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002539 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002540 {
2541 return m_objectTableNVX != rhs.m_objectTableNVX;
2542 }
2543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002544 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002545 {
2546 return m_objectTableNVX < rhs.m_objectTableNVX;
2547 }
2548
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002549
2550
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002551 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002552 {
2553 return m_objectTableNVX;
2554 }
2555
2556 explicit operator bool() const
2557 {
2558 return m_objectTableNVX != VK_NULL_HANDLE;
2559 }
2560
2561 bool operator!() const
2562 {
2563 return m_objectTableNVX == VK_NULL_HANDLE;
2564 }
2565
2566 private:
2567 VkObjectTableNVX m_objectTableNVX;
2568 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002569
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002570 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2571
2572 class IndirectCommandsLayoutNVX
2573 {
2574 public:
2575 IndirectCommandsLayoutNVX()
2576 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2577 {}
2578
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002579 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002580 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2581 {}
2582
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002583 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2584 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002585 {}
2586
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002587#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002588 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002589 {
2590 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002591 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002592 }
2593#endif
2594
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002595 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002596 {
2597 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2598 return *this;
2599 }
2600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002601 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002602 {
2603 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2604 }
2605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002606 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002607 {
2608 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2609 }
2610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002611 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002612 {
2613 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2614 }
2615
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002616
2617
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002618 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002619 {
2620 return m_indirectCommandsLayoutNVX;
2621 }
2622
2623 explicit operator bool() const
2624 {
2625 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2626 }
2627
2628 bool operator!() const
2629 {
2630 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2631 }
2632
2633 private:
2634 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2635 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002636
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002637 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2638
Mark Young0f183a82017-02-28 09:58:04 -07002639 class DescriptorUpdateTemplateKHR
2640 {
2641 public:
2642 DescriptorUpdateTemplateKHR()
2643 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2644 {}
2645
2646 DescriptorUpdateTemplateKHR( std::nullptr_t )
2647 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2648 {}
2649
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002650 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2651 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002652 {}
2653
2654#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002655 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002656 {
2657 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002658 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002659 }
2660#endif
2661
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002662 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002663 {
2664 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2665 return *this;
2666 }
2667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002668 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002669 {
2670 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2671 }
2672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002673 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002674 {
2675 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2676 }
2677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002678 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002679 {
2680 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2681 }
2682
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002683
2684
Mark Young0f183a82017-02-28 09:58:04 -07002685 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2686 {
2687 return m_descriptorUpdateTemplateKHR;
2688 }
2689
2690 explicit operator bool() const
2691 {
2692 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2693 }
2694
2695 bool operator!() const
2696 {
2697 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2698 }
2699
2700 private:
2701 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2702 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002703
Mark Young0f183a82017-02-28 09:58:04 -07002704 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2705
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002706 class DisplayKHR
2707 {
2708 public:
2709 DisplayKHR()
2710 : m_displayKHR(VK_NULL_HANDLE)
2711 {}
2712
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002713 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002714 : m_displayKHR(VK_NULL_HANDLE)
2715 {}
2716
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002717 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2718 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002719 {}
2720
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002721#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002722 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002723 {
2724 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002725 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002726 }
2727#endif
2728
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002729 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002730 {
2731 m_displayKHR = VK_NULL_HANDLE;
2732 return *this;
2733 }
2734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002735 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002736 {
2737 return m_displayKHR == rhs.m_displayKHR;
2738 }
2739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002740 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002741 {
2742 return m_displayKHR != rhs.m_displayKHR;
2743 }
2744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002745 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002746 {
2747 return m_displayKHR < rhs.m_displayKHR;
2748 }
2749
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002750
2751
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002752 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002753 {
2754 return m_displayKHR;
2755 }
2756
2757 explicit operator bool() const
2758 {
2759 return m_displayKHR != VK_NULL_HANDLE;
2760 }
2761
2762 bool operator!() const
2763 {
2764 return m_displayKHR == VK_NULL_HANDLE;
2765 }
2766
2767 private:
2768 VkDisplayKHR m_displayKHR;
2769 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002770
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002771 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2772
2773 class DisplayModeKHR
2774 {
2775 public:
2776 DisplayModeKHR()
2777 : m_displayModeKHR(VK_NULL_HANDLE)
2778 {}
2779
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002780 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002781 : m_displayModeKHR(VK_NULL_HANDLE)
2782 {}
2783
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002784 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
2785 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002786 {}
2787
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002788#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002789 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002790 {
2791 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002792 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002793 }
2794#endif
2795
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002796 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002797 {
2798 m_displayModeKHR = VK_NULL_HANDLE;
2799 return *this;
2800 }
2801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002802 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002803 {
2804 return m_displayModeKHR == rhs.m_displayModeKHR;
2805 }
2806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002807 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002808 {
2809 return m_displayModeKHR != rhs.m_displayModeKHR;
2810 }
2811
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002812 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002813 {
2814 return m_displayModeKHR < rhs.m_displayModeKHR;
2815 }
2816
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002817
2818
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002819 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002820 {
2821 return m_displayModeKHR;
2822 }
2823
2824 explicit operator bool() const
2825 {
2826 return m_displayModeKHR != VK_NULL_HANDLE;
2827 }
2828
2829 bool operator!() const
2830 {
2831 return m_displayModeKHR == VK_NULL_HANDLE;
2832 }
2833
2834 private:
2835 VkDisplayModeKHR m_displayModeKHR;
2836 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002837
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002838 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2839
2840 class SurfaceKHR
2841 {
2842 public:
2843 SurfaceKHR()
2844 : m_surfaceKHR(VK_NULL_HANDLE)
2845 {}
2846
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002847 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002848 : m_surfaceKHR(VK_NULL_HANDLE)
2849 {}
2850
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002851 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
2852 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002853 {}
2854
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002855#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002856 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002857 {
2858 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002859 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002860 }
2861#endif
2862
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002863 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002864 {
2865 m_surfaceKHR = VK_NULL_HANDLE;
2866 return *this;
2867 }
2868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002869 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002870 {
2871 return m_surfaceKHR == rhs.m_surfaceKHR;
2872 }
2873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002874 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002875 {
2876 return m_surfaceKHR != rhs.m_surfaceKHR;
2877 }
2878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002879 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002880 {
2881 return m_surfaceKHR < rhs.m_surfaceKHR;
2882 }
2883
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002884
2885
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002886 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002887 {
2888 return m_surfaceKHR;
2889 }
2890
2891 explicit operator bool() const
2892 {
2893 return m_surfaceKHR != VK_NULL_HANDLE;
2894 }
2895
2896 bool operator!() const
2897 {
2898 return m_surfaceKHR == VK_NULL_HANDLE;
2899 }
2900
2901 private:
2902 VkSurfaceKHR m_surfaceKHR;
2903 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002904
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002905 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
2906
2907 class SwapchainKHR
2908 {
2909 public:
2910 SwapchainKHR()
2911 : m_swapchainKHR(VK_NULL_HANDLE)
2912 {}
2913
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002914 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002915 : m_swapchainKHR(VK_NULL_HANDLE)
2916 {}
2917
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002918 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
2919 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002920 {}
2921
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002922#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002923 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002924 {
2925 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002926 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002927 }
2928#endif
2929
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002930 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002931 {
2932 m_swapchainKHR = VK_NULL_HANDLE;
2933 return *this;
2934 }
2935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002936 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002937 {
2938 return m_swapchainKHR == rhs.m_swapchainKHR;
2939 }
2940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002941 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002942 {
2943 return m_swapchainKHR != rhs.m_swapchainKHR;
2944 }
2945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002946 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002947 {
2948 return m_swapchainKHR < rhs.m_swapchainKHR;
2949 }
2950
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002951
2952
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002953 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002954 {
2955 return m_swapchainKHR;
2956 }
2957
2958 explicit operator bool() const
2959 {
2960 return m_swapchainKHR != VK_NULL_HANDLE;
2961 }
2962
2963 bool operator!() const
2964 {
2965 return m_swapchainKHR == VK_NULL_HANDLE;
2966 }
2967
2968 private:
2969 VkSwapchainKHR m_swapchainKHR;
2970 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002971
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002972 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
2973
2974 class DebugReportCallbackEXT
2975 {
2976 public:
2977 DebugReportCallbackEXT()
2978 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2979 {}
2980
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002981 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002982 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2983 {}
2984
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002985 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
2986 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002987 {}
2988
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002989#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002990 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002991 {
2992 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002993 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002994 }
2995#endif
2996
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002997 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002998 {
2999 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3000 return *this;
3001 }
3002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003003 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003004 {
3005 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3006 }
3007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003008 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003009 {
3010 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3011 }
3012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003013 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003014 {
3015 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3016 }
3017
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003018
3019
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003020 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003021 {
3022 return m_debugReportCallbackEXT;
3023 }
3024
3025 explicit operator bool() const
3026 {
3027 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3028 }
3029
3030 bool operator!() const
3031 {
3032 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3033 }
3034
3035 private:
3036 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3037 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003039 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3040
3041 struct Offset2D
3042 {
3043 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3044 : x( x_ )
3045 , y( y_ )
3046 {
3047 }
3048
3049 Offset2D( VkOffset2D const & rhs )
3050 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003051 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003052 }
3053
3054 Offset2D& operator=( VkOffset2D const & rhs )
3055 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003056 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003057 return *this;
3058 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003059 Offset2D& setX( int32_t x_ )
3060 {
3061 x = x_;
3062 return *this;
3063 }
3064
3065 Offset2D& setY( int32_t y_ )
3066 {
3067 y = y_;
3068 return *this;
3069 }
3070
3071 operator const VkOffset2D&() const
3072 {
3073 return *reinterpret_cast<const VkOffset2D*>(this);
3074 }
3075
3076 bool operator==( Offset2D const& rhs ) const
3077 {
3078 return ( x == rhs.x )
3079 && ( y == rhs.y );
3080 }
3081
3082 bool operator!=( Offset2D const& rhs ) const
3083 {
3084 return !operator==( rhs );
3085 }
3086
3087 int32_t x;
3088 int32_t y;
3089 };
3090 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3091
3092 struct Offset3D
3093 {
3094 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3095 : x( x_ )
3096 , y( y_ )
3097 , z( z_ )
3098 {
3099 }
3100
3101 Offset3D( VkOffset3D const & rhs )
3102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003103 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003104 }
3105
3106 Offset3D& operator=( VkOffset3D const & rhs )
3107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003108 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003109 return *this;
3110 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003111 Offset3D& setX( int32_t x_ )
3112 {
3113 x = x_;
3114 return *this;
3115 }
3116
3117 Offset3D& setY( int32_t y_ )
3118 {
3119 y = y_;
3120 return *this;
3121 }
3122
3123 Offset3D& setZ( int32_t z_ )
3124 {
3125 z = z_;
3126 return *this;
3127 }
3128
3129 operator const VkOffset3D&() const
3130 {
3131 return *reinterpret_cast<const VkOffset3D*>(this);
3132 }
3133
3134 bool operator==( Offset3D const& rhs ) const
3135 {
3136 return ( x == rhs.x )
3137 && ( y == rhs.y )
3138 && ( z == rhs.z );
3139 }
3140
3141 bool operator!=( Offset3D const& rhs ) const
3142 {
3143 return !operator==( rhs );
3144 }
3145
3146 int32_t x;
3147 int32_t y;
3148 int32_t z;
3149 };
3150 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3151
3152 struct Extent2D
3153 {
3154 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3155 : width( width_ )
3156 , height( height_ )
3157 {
3158 }
3159
3160 Extent2D( VkExtent2D const & rhs )
3161 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003162 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 }
3164
3165 Extent2D& operator=( VkExtent2D const & rhs )
3166 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003167 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003168 return *this;
3169 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003170 Extent2D& setWidth( uint32_t width_ )
3171 {
3172 width = width_;
3173 return *this;
3174 }
3175
3176 Extent2D& setHeight( uint32_t height_ )
3177 {
3178 height = height_;
3179 return *this;
3180 }
3181
3182 operator const VkExtent2D&() const
3183 {
3184 return *reinterpret_cast<const VkExtent2D*>(this);
3185 }
3186
3187 bool operator==( Extent2D const& rhs ) const
3188 {
3189 return ( width == rhs.width )
3190 && ( height == rhs.height );
3191 }
3192
3193 bool operator!=( Extent2D const& rhs ) const
3194 {
3195 return !operator==( rhs );
3196 }
3197
3198 uint32_t width;
3199 uint32_t height;
3200 };
3201 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3202
3203 struct Extent3D
3204 {
3205 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3206 : width( width_ )
3207 , height( height_ )
3208 , depth( depth_ )
3209 {
3210 }
3211
3212 Extent3D( VkExtent3D const & rhs )
3213 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003214 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003215 }
3216
3217 Extent3D& operator=( VkExtent3D const & rhs )
3218 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003219 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003220 return *this;
3221 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003222 Extent3D& setWidth( uint32_t width_ )
3223 {
3224 width = width_;
3225 return *this;
3226 }
3227
3228 Extent3D& setHeight( uint32_t height_ )
3229 {
3230 height = height_;
3231 return *this;
3232 }
3233
3234 Extent3D& setDepth( uint32_t depth_ )
3235 {
3236 depth = depth_;
3237 return *this;
3238 }
3239
3240 operator const VkExtent3D&() const
3241 {
3242 return *reinterpret_cast<const VkExtent3D*>(this);
3243 }
3244
3245 bool operator==( Extent3D const& rhs ) const
3246 {
3247 return ( width == rhs.width )
3248 && ( height == rhs.height )
3249 && ( depth == rhs.depth );
3250 }
3251
3252 bool operator!=( Extent3D const& rhs ) const
3253 {
3254 return !operator==( rhs );
3255 }
3256
3257 uint32_t width;
3258 uint32_t height;
3259 uint32_t depth;
3260 };
3261 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3262
3263 struct Viewport
3264 {
3265 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3266 : x( x_ )
3267 , y( y_ )
3268 , width( width_ )
3269 , height( height_ )
3270 , minDepth( minDepth_ )
3271 , maxDepth( maxDepth_ )
3272 {
3273 }
3274
3275 Viewport( VkViewport const & rhs )
3276 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003277 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003278 }
3279
3280 Viewport& operator=( VkViewport const & rhs )
3281 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003282 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003283 return *this;
3284 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003285 Viewport& setX( float x_ )
3286 {
3287 x = x_;
3288 return *this;
3289 }
3290
3291 Viewport& setY( float y_ )
3292 {
3293 y = y_;
3294 return *this;
3295 }
3296
3297 Viewport& setWidth( float width_ )
3298 {
3299 width = width_;
3300 return *this;
3301 }
3302
3303 Viewport& setHeight( float height_ )
3304 {
3305 height = height_;
3306 return *this;
3307 }
3308
3309 Viewport& setMinDepth( float minDepth_ )
3310 {
3311 minDepth = minDepth_;
3312 return *this;
3313 }
3314
3315 Viewport& setMaxDepth( float maxDepth_ )
3316 {
3317 maxDepth = maxDepth_;
3318 return *this;
3319 }
3320
3321 operator const VkViewport&() const
3322 {
3323 return *reinterpret_cast<const VkViewport*>(this);
3324 }
3325
3326 bool operator==( Viewport const& rhs ) const
3327 {
3328 return ( x == rhs.x )
3329 && ( y == rhs.y )
3330 && ( width == rhs.width )
3331 && ( height == rhs.height )
3332 && ( minDepth == rhs.minDepth )
3333 && ( maxDepth == rhs.maxDepth );
3334 }
3335
3336 bool operator!=( Viewport const& rhs ) const
3337 {
3338 return !operator==( rhs );
3339 }
3340
3341 float x;
3342 float y;
3343 float width;
3344 float height;
3345 float minDepth;
3346 float maxDepth;
3347 };
3348 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3349
3350 struct Rect2D
3351 {
3352 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3353 : offset( offset_ )
3354 , extent( extent_ )
3355 {
3356 }
3357
3358 Rect2D( VkRect2D const & rhs )
3359 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003360 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003361 }
3362
3363 Rect2D& operator=( VkRect2D const & rhs )
3364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003365 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003366 return *this;
3367 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003368 Rect2D& setOffset( Offset2D offset_ )
3369 {
3370 offset = offset_;
3371 return *this;
3372 }
3373
3374 Rect2D& setExtent( Extent2D extent_ )
3375 {
3376 extent = extent_;
3377 return *this;
3378 }
3379
3380 operator const VkRect2D&() const
3381 {
3382 return *reinterpret_cast<const VkRect2D*>(this);
3383 }
3384
3385 bool operator==( Rect2D const& rhs ) const
3386 {
3387 return ( offset == rhs.offset )
3388 && ( extent == rhs.extent );
3389 }
3390
3391 bool operator!=( Rect2D const& rhs ) const
3392 {
3393 return !operator==( rhs );
3394 }
3395
3396 Offset2D offset;
3397 Extent2D extent;
3398 };
3399 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3400
3401 struct ClearRect
3402 {
3403 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3404 : rect( rect_ )
3405 , baseArrayLayer( baseArrayLayer_ )
3406 , layerCount( layerCount_ )
3407 {
3408 }
3409
3410 ClearRect( VkClearRect const & rhs )
3411 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003412 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003413 }
3414
3415 ClearRect& operator=( VkClearRect const & rhs )
3416 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003417 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003418 return *this;
3419 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003420 ClearRect& setRect( Rect2D rect_ )
3421 {
3422 rect = rect_;
3423 return *this;
3424 }
3425
3426 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3427 {
3428 baseArrayLayer = baseArrayLayer_;
3429 return *this;
3430 }
3431
3432 ClearRect& setLayerCount( uint32_t layerCount_ )
3433 {
3434 layerCount = layerCount_;
3435 return *this;
3436 }
3437
3438 operator const VkClearRect&() const
3439 {
3440 return *reinterpret_cast<const VkClearRect*>(this);
3441 }
3442
3443 bool operator==( ClearRect const& rhs ) const
3444 {
3445 return ( rect == rhs.rect )
3446 && ( baseArrayLayer == rhs.baseArrayLayer )
3447 && ( layerCount == rhs.layerCount );
3448 }
3449
3450 bool operator!=( ClearRect const& rhs ) const
3451 {
3452 return !operator==( rhs );
3453 }
3454
3455 Rect2D rect;
3456 uint32_t baseArrayLayer;
3457 uint32_t layerCount;
3458 };
3459 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3460
3461 struct ExtensionProperties
3462 {
3463 operator const VkExtensionProperties&() const
3464 {
3465 return *reinterpret_cast<const VkExtensionProperties*>(this);
3466 }
3467
3468 bool operator==( ExtensionProperties const& rhs ) const
3469 {
3470 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3471 && ( specVersion == rhs.specVersion );
3472 }
3473
3474 bool operator!=( ExtensionProperties const& rhs ) const
3475 {
3476 return !operator==( rhs );
3477 }
3478
3479 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3480 uint32_t specVersion;
3481 };
3482 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3483
3484 struct LayerProperties
3485 {
3486 operator const VkLayerProperties&() const
3487 {
3488 return *reinterpret_cast<const VkLayerProperties*>(this);
3489 }
3490
3491 bool operator==( LayerProperties const& rhs ) const
3492 {
3493 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3494 && ( specVersion == rhs.specVersion )
3495 && ( implementationVersion == rhs.implementationVersion )
3496 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3497 }
3498
3499 bool operator!=( LayerProperties const& rhs ) const
3500 {
3501 return !operator==( rhs );
3502 }
3503
3504 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3505 uint32_t specVersion;
3506 uint32_t implementationVersion;
3507 char description[VK_MAX_DESCRIPTION_SIZE];
3508 };
3509 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3510
3511 struct AllocationCallbacks
3512 {
3513 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3514 : pUserData( pUserData_ )
3515 , pfnAllocation( pfnAllocation_ )
3516 , pfnReallocation( pfnReallocation_ )
3517 , pfnFree( pfnFree_ )
3518 , pfnInternalAllocation( pfnInternalAllocation_ )
3519 , pfnInternalFree( pfnInternalFree_ )
3520 {
3521 }
3522
3523 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003525 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003526 }
3527
3528 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003530 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003531 return *this;
3532 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003533 AllocationCallbacks& setPUserData( void* pUserData_ )
3534 {
3535 pUserData = pUserData_;
3536 return *this;
3537 }
3538
3539 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3540 {
3541 pfnAllocation = pfnAllocation_;
3542 return *this;
3543 }
3544
3545 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3546 {
3547 pfnReallocation = pfnReallocation_;
3548 return *this;
3549 }
3550
3551 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3552 {
3553 pfnFree = pfnFree_;
3554 return *this;
3555 }
3556
3557 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3558 {
3559 pfnInternalAllocation = pfnInternalAllocation_;
3560 return *this;
3561 }
3562
3563 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3564 {
3565 pfnInternalFree = pfnInternalFree_;
3566 return *this;
3567 }
3568
3569 operator const VkAllocationCallbacks&() const
3570 {
3571 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3572 }
3573
3574 bool operator==( AllocationCallbacks const& rhs ) const
3575 {
3576 return ( pUserData == rhs.pUserData )
3577 && ( pfnAllocation == rhs.pfnAllocation )
3578 && ( pfnReallocation == rhs.pfnReallocation )
3579 && ( pfnFree == rhs.pfnFree )
3580 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3581 && ( pfnInternalFree == rhs.pfnInternalFree );
3582 }
3583
3584 bool operator!=( AllocationCallbacks const& rhs ) const
3585 {
3586 return !operator==( rhs );
3587 }
3588
3589 void* pUserData;
3590 PFN_vkAllocationFunction pfnAllocation;
3591 PFN_vkReallocationFunction pfnReallocation;
3592 PFN_vkFreeFunction pfnFree;
3593 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3594 PFN_vkInternalFreeNotification pfnInternalFree;
3595 };
3596 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3597
3598 struct MemoryRequirements
3599 {
3600 operator const VkMemoryRequirements&() const
3601 {
3602 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3603 }
3604
3605 bool operator==( MemoryRequirements const& rhs ) const
3606 {
3607 return ( size == rhs.size )
3608 && ( alignment == rhs.alignment )
3609 && ( memoryTypeBits == rhs.memoryTypeBits );
3610 }
3611
3612 bool operator!=( MemoryRequirements const& rhs ) const
3613 {
3614 return !operator==( rhs );
3615 }
3616
3617 DeviceSize size;
3618 DeviceSize alignment;
3619 uint32_t memoryTypeBits;
3620 };
3621 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3622
3623 struct DescriptorBufferInfo
3624 {
3625 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3626 : buffer( buffer_ )
3627 , offset( offset_ )
3628 , range( range_ )
3629 {
3630 }
3631
3632 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003634 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003635 }
3636
3637 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003639 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003640 return *this;
3641 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003642 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3643 {
3644 buffer = buffer_;
3645 return *this;
3646 }
3647
3648 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3649 {
3650 offset = offset_;
3651 return *this;
3652 }
3653
3654 DescriptorBufferInfo& setRange( DeviceSize range_ )
3655 {
3656 range = range_;
3657 return *this;
3658 }
3659
3660 operator const VkDescriptorBufferInfo&() const
3661 {
3662 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3663 }
3664
3665 bool operator==( DescriptorBufferInfo const& rhs ) const
3666 {
3667 return ( buffer == rhs.buffer )
3668 && ( offset == rhs.offset )
3669 && ( range == rhs.range );
3670 }
3671
3672 bool operator!=( DescriptorBufferInfo const& rhs ) const
3673 {
3674 return !operator==( rhs );
3675 }
3676
3677 Buffer buffer;
3678 DeviceSize offset;
3679 DeviceSize range;
3680 };
3681 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3682
3683 struct SubresourceLayout
3684 {
3685 operator const VkSubresourceLayout&() const
3686 {
3687 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3688 }
3689
3690 bool operator==( SubresourceLayout const& rhs ) const
3691 {
3692 return ( offset == rhs.offset )
3693 && ( size == rhs.size )
3694 && ( rowPitch == rhs.rowPitch )
3695 && ( arrayPitch == rhs.arrayPitch )
3696 && ( depthPitch == rhs.depthPitch );
3697 }
3698
3699 bool operator!=( SubresourceLayout const& rhs ) const
3700 {
3701 return !operator==( rhs );
3702 }
3703
3704 DeviceSize offset;
3705 DeviceSize size;
3706 DeviceSize rowPitch;
3707 DeviceSize arrayPitch;
3708 DeviceSize depthPitch;
3709 };
3710 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3711
3712 struct BufferCopy
3713 {
3714 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3715 : srcOffset( srcOffset_ )
3716 , dstOffset( dstOffset_ )
3717 , size( size_ )
3718 {
3719 }
3720
3721 BufferCopy( VkBufferCopy const & rhs )
3722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003723 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003724 }
3725
3726 BufferCopy& operator=( VkBufferCopy const & rhs )
3727 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003728 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003729 return *this;
3730 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003731 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3732 {
3733 srcOffset = srcOffset_;
3734 return *this;
3735 }
3736
3737 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3738 {
3739 dstOffset = dstOffset_;
3740 return *this;
3741 }
3742
3743 BufferCopy& setSize( DeviceSize size_ )
3744 {
3745 size = size_;
3746 return *this;
3747 }
3748
3749 operator const VkBufferCopy&() const
3750 {
3751 return *reinterpret_cast<const VkBufferCopy*>(this);
3752 }
3753
3754 bool operator==( BufferCopy const& rhs ) const
3755 {
3756 return ( srcOffset == rhs.srcOffset )
3757 && ( dstOffset == rhs.dstOffset )
3758 && ( size == rhs.size );
3759 }
3760
3761 bool operator!=( BufferCopy const& rhs ) const
3762 {
3763 return !operator==( rhs );
3764 }
3765
3766 DeviceSize srcOffset;
3767 DeviceSize dstOffset;
3768 DeviceSize size;
3769 };
3770 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3771
3772 struct SpecializationMapEntry
3773 {
3774 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3775 : constantID( constantID_ )
3776 , offset( offset_ )
3777 , size( size_ )
3778 {
3779 }
3780
3781 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3782 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003783 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003784 }
3785
3786 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3787 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003788 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003789 return *this;
3790 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003791 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3792 {
3793 constantID = constantID_;
3794 return *this;
3795 }
3796
3797 SpecializationMapEntry& setOffset( uint32_t offset_ )
3798 {
3799 offset = offset_;
3800 return *this;
3801 }
3802
3803 SpecializationMapEntry& setSize( size_t size_ )
3804 {
3805 size = size_;
3806 return *this;
3807 }
3808
3809 operator const VkSpecializationMapEntry&() const
3810 {
3811 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3812 }
3813
3814 bool operator==( SpecializationMapEntry const& rhs ) const
3815 {
3816 return ( constantID == rhs.constantID )
3817 && ( offset == rhs.offset )
3818 && ( size == rhs.size );
3819 }
3820
3821 bool operator!=( SpecializationMapEntry const& rhs ) const
3822 {
3823 return !operator==( rhs );
3824 }
3825
3826 uint32_t constantID;
3827 uint32_t offset;
3828 size_t size;
3829 };
3830 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3831
3832 struct SpecializationInfo
3833 {
3834 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3835 : mapEntryCount( mapEntryCount_ )
3836 , pMapEntries( pMapEntries_ )
3837 , dataSize( dataSize_ )
3838 , pData( pData_ )
3839 {
3840 }
3841
3842 SpecializationInfo( VkSpecializationInfo const & rhs )
3843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003844 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003845 }
3846
3847 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3848 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003849 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003850 return *this;
3851 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003852 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3853 {
3854 mapEntryCount = mapEntryCount_;
3855 return *this;
3856 }
3857
3858 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
3859 {
3860 pMapEntries = pMapEntries_;
3861 return *this;
3862 }
3863
3864 SpecializationInfo& setDataSize( size_t dataSize_ )
3865 {
3866 dataSize = dataSize_;
3867 return *this;
3868 }
3869
3870 SpecializationInfo& setPData( const void* pData_ )
3871 {
3872 pData = pData_;
3873 return *this;
3874 }
3875
3876 operator const VkSpecializationInfo&() const
3877 {
3878 return *reinterpret_cast<const VkSpecializationInfo*>(this);
3879 }
3880
3881 bool operator==( SpecializationInfo const& rhs ) const
3882 {
3883 return ( mapEntryCount == rhs.mapEntryCount )
3884 && ( pMapEntries == rhs.pMapEntries )
3885 && ( dataSize == rhs.dataSize )
3886 && ( pData == rhs.pData );
3887 }
3888
3889 bool operator!=( SpecializationInfo const& rhs ) const
3890 {
3891 return !operator==( rhs );
3892 }
3893
3894 uint32_t mapEntryCount;
3895 const SpecializationMapEntry* pMapEntries;
3896 size_t dataSize;
3897 const void* pData;
3898 };
3899 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
3900
3901 union ClearColorValue
3902 {
3903 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
3904 {
3905 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3906 }
3907
3908 ClearColorValue( const std::array<int32_t,4>& int32_ )
3909 {
3910 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3911 }
3912
3913 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
3914 {
3915 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3916 }
3917
3918 ClearColorValue& setFloat32( std::array<float,4> float32_ )
3919 {
3920 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3921 return *this;
3922 }
3923
3924 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
3925 {
3926 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3927 return *this;
3928 }
3929
3930 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
3931 {
3932 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3933 return *this;
3934 }
3935
3936 operator VkClearColorValue const& () const
3937 {
3938 return *reinterpret_cast<const VkClearColorValue*>(this);
3939 }
3940
3941 float float32[4];
3942 int32_t int32[4];
3943 uint32_t uint32[4];
3944 };
3945
3946 struct ClearDepthStencilValue
3947 {
3948 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
3949 : depth( depth_ )
3950 , stencil( stencil_ )
3951 {
3952 }
3953
3954 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
3955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003956 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003957 }
3958
3959 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
3960 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003961 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003962 return *this;
3963 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003964 ClearDepthStencilValue& setDepth( float depth_ )
3965 {
3966 depth = depth_;
3967 return *this;
3968 }
3969
3970 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
3971 {
3972 stencil = stencil_;
3973 return *this;
3974 }
3975
3976 operator const VkClearDepthStencilValue&() const
3977 {
3978 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
3979 }
3980
3981 bool operator==( ClearDepthStencilValue const& rhs ) const
3982 {
3983 return ( depth == rhs.depth )
3984 && ( stencil == rhs.stencil );
3985 }
3986
3987 bool operator!=( ClearDepthStencilValue const& rhs ) const
3988 {
3989 return !operator==( rhs );
3990 }
3991
3992 float depth;
3993 uint32_t stencil;
3994 };
3995 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
3996
3997 union ClearValue
3998 {
3999 ClearValue( ClearColorValue color_ = ClearColorValue() )
4000 {
4001 color = color_;
4002 }
4003
4004 ClearValue( ClearDepthStencilValue depthStencil_ )
4005 {
4006 depthStencil = depthStencil_;
4007 }
4008
4009 ClearValue& setColor( ClearColorValue color_ )
4010 {
4011 color = color_;
4012 return *this;
4013 }
4014
4015 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4016 {
4017 depthStencil = depthStencil_;
4018 return *this;
4019 }
4020
4021 operator VkClearValue const& () const
4022 {
4023 return *reinterpret_cast<const VkClearValue*>(this);
4024 }
4025
4026#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4027 ClearColorValue color;
4028 ClearDepthStencilValue depthStencil;
4029#else
4030 VkClearColorValue color;
4031 VkClearDepthStencilValue depthStencil;
4032#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4033 };
4034
4035 struct PhysicalDeviceFeatures
4036 {
4037 PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = 0, Bool32 fullDrawIndexUint32_ = 0, Bool32 imageCubeArray_ = 0, Bool32 independentBlend_ = 0, Bool32 geometryShader_ = 0, Bool32 tessellationShader_ = 0, Bool32 sampleRateShading_ = 0, Bool32 dualSrcBlend_ = 0, Bool32 logicOp_ = 0, Bool32 multiDrawIndirect_ = 0, Bool32 drawIndirectFirstInstance_ = 0, Bool32 depthClamp_ = 0, Bool32 depthBiasClamp_ = 0, Bool32 fillModeNonSolid_ = 0, Bool32 depthBounds_ = 0, Bool32 wideLines_ = 0, Bool32 largePoints_ = 0, Bool32 alphaToOne_ = 0, Bool32 multiViewport_ = 0, Bool32 samplerAnisotropy_ = 0, Bool32 textureCompressionETC2_ = 0, Bool32 textureCompressionASTC_LDR_ = 0, Bool32 textureCompressionBC_ = 0, Bool32 occlusionQueryPrecise_ = 0, Bool32 pipelineStatisticsQuery_ = 0, Bool32 vertexPipelineStoresAndAtomics_ = 0, Bool32 fragmentStoresAndAtomics_ = 0, Bool32 shaderTessellationAndGeometryPointSize_ = 0, Bool32 shaderImageGatherExtended_ = 0, Bool32 shaderStorageImageExtendedFormats_ = 0, Bool32 shaderStorageImageMultisample_ = 0, Bool32 shaderStorageImageReadWithoutFormat_ = 0, Bool32 shaderStorageImageWriteWithoutFormat_ = 0, Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0, Bool32 shaderSampledImageArrayDynamicIndexing_ = 0, Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0, Bool32 shaderStorageImageArrayDynamicIndexing_ = 0, Bool32 shaderClipDistance_ = 0, Bool32 shaderCullDistance_ = 0, Bool32 shaderFloat64_ = 0, Bool32 shaderInt64_ = 0, Bool32 shaderInt16_ = 0, Bool32 shaderResourceResidency_ = 0, Bool32 shaderResourceMinLod_ = 0, Bool32 sparseBinding_ = 0, Bool32 sparseResidencyBuffer_ = 0, Bool32 sparseResidencyImage2D_ = 0, Bool32 sparseResidencyImage3D_ = 0, Bool32 sparseResidency2Samples_ = 0, Bool32 sparseResidency4Samples_ = 0, Bool32 sparseResidency8Samples_ = 0, Bool32 sparseResidency16Samples_ = 0, Bool32 sparseResidencyAliased_ = 0, Bool32 variableMultisampleRate_ = 0, Bool32 inheritedQueries_ = 0 )
4038 : robustBufferAccess( robustBufferAccess_ )
4039 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4040 , imageCubeArray( imageCubeArray_ )
4041 , independentBlend( independentBlend_ )
4042 , geometryShader( geometryShader_ )
4043 , tessellationShader( tessellationShader_ )
4044 , sampleRateShading( sampleRateShading_ )
4045 , dualSrcBlend( dualSrcBlend_ )
4046 , logicOp( logicOp_ )
4047 , multiDrawIndirect( multiDrawIndirect_ )
4048 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4049 , depthClamp( depthClamp_ )
4050 , depthBiasClamp( depthBiasClamp_ )
4051 , fillModeNonSolid( fillModeNonSolid_ )
4052 , depthBounds( depthBounds_ )
4053 , wideLines( wideLines_ )
4054 , largePoints( largePoints_ )
4055 , alphaToOne( alphaToOne_ )
4056 , multiViewport( multiViewport_ )
4057 , samplerAnisotropy( samplerAnisotropy_ )
4058 , textureCompressionETC2( textureCompressionETC2_ )
4059 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4060 , textureCompressionBC( textureCompressionBC_ )
4061 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4062 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4063 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4064 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4065 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4066 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4067 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4068 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4069 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4070 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4071 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4072 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4073 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4074 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4075 , shaderClipDistance( shaderClipDistance_ )
4076 , shaderCullDistance( shaderCullDistance_ )
4077 , shaderFloat64( shaderFloat64_ )
4078 , shaderInt64( shaderInt64_ )
4079 , shaderInt16( shaderInt16_ )
4080 , shaderResourceResidency( shaderResourceResidency_ )
4081 , shaderResourceMinLod( shaderResourceMinLod_ )
4082 , sparseBinding( sparseBinding_ )
4083 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4084 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4085 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4086 , sparseResidency2Samples( sparseResidency2Samples_ )
4087 , sparseResidency4Samples( sparseResidency4Samples_ )
4088 , sparseResidency8Samples( sparseResidency8Samples_ )
4089 , sparseResidency16Samples( sparseResidency16Samples_ )
4090 , sparseResidencyAliased( sparseResidencyAliased_ )
4091 , variableMultisampleRate( variableMultisampleRate_ )
4092 , inheritedQueries( inheritedQueries_ )
4093 {
4094 }
4095
4096 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004098 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004099 }
4100
4101 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004103 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004104 return *this;
4105 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004106 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4107 {
4108 robustBufferAccess = robustBufferAccess_;
4109 return *this;
4110 }
4111
4112 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4113 {
4114 fullDrawIndexUint32 = fullDrawIndexUint32_;
4115 return *this;
4116 }
4117
4118 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4119 {
4120 imageCubeArray = imageCubeArray_;
4121 return *this;
4122 }
4123
4124 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4125 {
4126 independentBlend = independentBlend_;
4127 return *this;
4128 }
4129
4130 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4131 {
4132 geometryShader = geometryShader_;
4133 return *this;
4134 }
4135
4136 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4137 {
4138 tessellationShader = tessellationShader_;
4139 return *this;
4140 }
4141
4142 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4143 {
4144 sampleRateShading = sampleRateShading_;
4145 return *this;
4146 }
4147
4148 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4149 {
4150 dualSrcBlend = dualSrcBlend_;
4151 return *this;
4152 }
4153
4154 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4155 {
4156 logicOp = logicOp_;
4157 return *this;
4158 }
4159
4160 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4161 {
4162 multiDrawIndirect = multiDrawIndirect_;
4163 return *this;
4164 }
4165
4166 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4167 {
4168 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4169 return *this;
4170 }
4171
4172 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4173 {
4174 depthClamp = depthClamp_;
4175 return *this;
4176 }
4177
4178 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4179 {
4180 depthBiasClamp = depthBiasClamp_;
4181 return *this;
4182 }
4183
4184 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4185 {
4186 fillModeNonSolid = fillModeNonSolid_;
4187 return *this;
4188 }
4189
4190 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4191 {
4192 depthBounds = depthBounds_;
4193 return *this;
4194 }
4195
4196 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4197 {
4198 wideLines = wideLines_;
4199 return *this;
4200 }
4201
4202 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4203 {
4204 largePoints = largePoints_;
4205 return *this;
4206 }
4207
4208 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4209 {
4210 alphaToOne = alphaToOne_;
4211 return *this;
4212 }
4213
4214 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4215 {
4216 multiViewport = multiViewport_;
4217 return *this;
4218 }
4219
4220 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4221 {
4222 samplerAnisotropy = samplerAnisotropy_;
4223 return *this;
4224 }
4225
4226 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4227 {
4228 textureCompressionETC2 = textureCompressionETC2_;
4229 return *this;
4230 }
4231
4232 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4233 {
4234 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4235 return *this;
4236 }
4237
4238 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4239 {
4240 textureCompressionBC = textureCompressionBC_;
4241 return *this;
4242 }
4243
4244 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4245 {
4246 occlusionQueryPrecise = occlusionQueryPrecise_;
4247 return *this;
4248 }
4249
4250 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4251 {
4252 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4253 return *this;
4254 }
4255
4256 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4257 {
4258 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4259 return *this;
4260 }
4261
4262 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4263 {
4264 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4265 return *this;
4266 }
4267
4268 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4269 {
4270 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4271 return *this;
4272 }
4273
4274 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4275 {
4276 shaderImageGatherExtended = shaderImageGatherExtended_;
4277 return *this;
4278 }
4279
4280 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4281 {
4282 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4283 return *this;
4284 }
4285
4286 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4287 {
4288 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4289 return *this;
4290 }
4291
4292 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4293 {
4294 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4295 return *this;
4296 }
4297
4298 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4299 {
4300 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4301 return *this;
4302 }
4303
4304 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4305 {
4306 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4307 return *this;
4308 }
4309
4310 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4311 {
4312 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4313 return *this;
4314 }
4315
4316 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4317 {
4318 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4319 return *this;
4320 }
4321
4322 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4323 {
4324 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4325 return *this;
4326 }
4327
4328 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4329 {
4330 shaderClipDistance = shaderClipDistance_;
4331 return *this;
4332 }
4333
4334 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4335 {
4336 shaderCullDistance = shaderCullDistance_;
4337 return *this;
4338 }
4339
4340 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4341 {
4342 shaderFloat64 = shaderFloat64_;
4343 return *this;
4344 }
4345
4346 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4347 {
4348 shaderInt64 = shaderInt64_;
4349 return *this;
4350 }
4351
4352 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4353 {
4354 shaderInt16 = shaderInt16_;
4355 return *this;
4356 }
4357
4358 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4359 {
4360 shaderResourceResidency = shaderResourceResidency_;
4361 return *this;
4362 }
4363
4364 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4365 {
4366 shaderResourceMinLod = shaderResourceMinLod_;
4367 return *this;
4368 }
4369
4370 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4371 {
4372 sparseBinding = sparseBinding_;
4373 return *this;
4374 }
4375
4376 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4377 {
4378 sparseResidencyBuffer = sparseResidencyBuffer_;
4379 return *this;
4380 }
4381
4382 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4383 {
4384 sparseResidencyImage2D = sparseResidencyImage2D_;
4385 return *this;
4386 }
4387
4388 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4389 {
4390 sparseResidencyImage3D = sparseResidencyImage3D_;
4391 return *this;
4392 }
4393
4394 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4395 {
4396 sparseResidency2Samples = sparseResidency2Samples_;
4397 return *this;
4398 }
4399
4400 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4401 {
4402 sparseResidency4Samples = sparseResidency4Samples_;
4403 return *this;
4404 }
4405
4406 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4407 {
4408 sparseResidency8Samples = sparseResidency8Samples_;
4409 return *this;
4410 }
4411
4412 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4413 {
4414 sparseResidency16Samples = sparseResidency16Samples_;
4415 return *this;
4416 }
4417
4418 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4419 {
4420 sparseResidencyAliased = sparseResidencyAliased_;
4421 return *this;
4422 }
4423
4424 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4425 {
4426 variableMultisampleRate = variableMultisampleRate_;
4427 return *this;
4428 }
4429
4430 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4431 {
4432 inheritedQueries = inheritedQueries_;
4433 return *this;
4434 }
4435
4436 operator const VkPhysicalDeviceFeatures&() const
4437 {
4438 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4439 }
4440
4441 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4442 {
4443 return ( robustBufferAccess == rhs.robustBufferAccess )
4444 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4445 && ( imageCubeArray == rhs.imageCubeArray )
4446 && ( independentBlend == rhs.independentBlend )
4447 && ( geometryShader == rhs.geometryShader )
4448 && ( tessellationShader == rhs.tessellationShader )
4449 && ( sampleRateShading == rhs.sampleRateShading )
4450 && ( dualSrcBlend == rhs.dualSrcBlend )
4451 && ( logicOp == rhs.logicOp )
4452 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4453 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4454 && ( depthClamp == rhs.depthClamp )
4455 && ( depthBiasClamp == rhs.depthBiasClamp )
4456 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4457 && ( depthBounds == rhs.depthBounds )
4458 && ( wideLines == rhs.wideLines )
4459 && ( largePoints == rhs.largePoints )
4460 && ( alphaToOne == rhs.alphaToOne )
4461 && ( multiViewport == rhs.multiViewport )
4462 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4463 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4464 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4465 && ( textureCompressionBC == rhs.textureCompressionBC )
4466 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4467 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4468 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4469 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4470 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4471 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4472 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4473 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4474 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4475 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4476 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4477 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4478 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4479 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4480 && ( shaderClipDistance == rhs.shaderClipDistance )
4481 && ( shaderCullDistance == rhs.shaderCullDistance )
4482 && ( shaderFloat64 == rhs.shaderFloat64 )
4483 && ( shaderInt64 == rhs.shaderInt64 )
4484 && ( shaderInt16 == rhs.shaderInt16 )
4485 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4486 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4487 && ( sparseBinding == rhs.sparseBinding )
4488 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4489 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4490 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4491 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4492 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4493 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4494 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4495 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4496 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4497 && ( inheritedQueries == rhs.inheritedQueries );
4498 }
4499
4500 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4501 {
4502 return !operator==( rhs );
4503 }
4504
4505 Bool32 robustBufferAccess;
4506 Bool32 fullDrawIndexUint32;
4507 Bool32 imageCubeArray;
4508 Bool32 independentBlend;
4509 Bool32 geometryShader;
4510 Bool32 tessellationShader;
4511 Bool32 sampleRateShading;
4512 Bool32 dualSrcBlend;
4513 Bool32 logicOp;
4514 Bool32 multiDrawIndirect;
4515 Bool32 drawIndirectFirstInstance;
4516 Bool32 depthClamp;
4517 Bool32 depthBiasClamp;
4518 Bool32 fillModeNonSolid;
4519 Bool32 depthBounds;
4520 Bool32 wideLines;
4521 Bool32 largePoints;
4522 Bool32 alphaToOne;
4523 Bool32 multiViewport;
4524 Bool32 samplerAnisotropy;
4525 Bool32 textureCompressionETC2;
4526 Bool32 textureCompressionASTC_LDR;
4527 Bool32 textureCompressionBC;
4528 Bool32 occlusionQueryPrecise;
4529 Bool32 pipelineStatisticsQuery;
4530 Bool32 vertexPipelineStoresAndAtomics;
4531 Bool32 fragmentStoresAndAtomics;
4532 Bool32 shaderTessellationAndGeometryPointSize;
4533 Bool32 shaderImageGatherExtended;
4534 Bool32 shaderStorageImageExtendedFormats;
4535 Bool32 shaderStorageImageMultisample;
4536 Bool32 shaderStorageImageReadWithoutFormat;
4537 Bool32 shaderStorageImageWriteWithoutFormat;
4538 Bool32 shaderUniformBufferArrayDynamicIndexing;
4539 Bool32 shaderSampledImageArrayDynamicIndexing;
4540 Bool32 shaderStorageBufferArrayDynamicIndexing;
4541 Bool32 shaderStorageImageArrayDynamicIndexing;
4542 Bool32 shaderClipDistance;
4543 Bool32 shaderCullDistance;
4544 Bool32 shaderFloat64;
4545 Bool32 shaderInt64;
4546 Bool32 shaderInt16;
4547 Bool32 shaderResourceResidency;
4548 Bool32 shaderResourceMinLod;
4549 Bool32 sparseBinding;
4550 Bool32 sparseResidencyBuffer;
4551 Bool32 sparseResidencyImage2D;
4552 Bool32 sparseResidencyImage3D;
4553 Bool32 sparseResidency2Samples;
4554 Bool32 sparseResidency4Samples;
4555 Bool32 sparseResidency8Samples;
4556 Bool32 sparseResidency16Samples;
4557 Bool32 sparseResidencyAliased;
4558 Bool32 variableMultisampleRate;
4559 Bool32 inheritedQueries;
4560 };
4561 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4562
4563 struct PhysicalDeviceSparseProperties
4564 {
4565 operator const VkPhysicalDeviceSparseProperties&() const
4566 {
4567 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4568 }
4569
4570 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4571 {
4572 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4573 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4574 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4575 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4576 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4577 }
4578
4579 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4580 {
4581 return !operator==( rhs );
4582 }
4583
4584 Bool32 residencyStandard2DBlockShape;
4585 Bool32 residencyStandard2DMultisampleBlockShape;
4586 Bool32 residencyStandard3DBlockShape;
4587 Bool32 residencyAlignedMipSize;
4588 Bool32 residencyNonResidentStrict;
4589 };
4590 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4591
4592 struct DrawIndirectCommand
4593 {
4594 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4595 : vertexCount( vertexCount_ )
4596 , instanceCount( instanceCount_ )
4597 , firstVertex( firstVertex_ )
4598 , firstInstance( firstInstance_ )
4599 {
4600 }
4601
4602 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004604 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004605 }
4606
4607 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004609 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004610 return *this;
4611 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004612 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4613 {
4614 vertexCount = vertexCount_;
4615 return *this;
4616 }
4617
4618 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4619 {
4620 instanceCount = instanceCount_;
4621 return *this;
4622 }
4623
4624 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4625 {
4626 firstVertex = firstVertex_;
4627 return *this;
4628 }
4629
4630 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4631 {
4632 firstInstance = firstInstance_;
4633 return *this;
4634 }
4635
4636 operator const VkDrawIndirectCommand&() const
4637 {
4638 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4639 }
4640
4641 bool operator==( DrawIndirectCommand const& rhs ) const
4642 {
4643 return ( vertexCount == rhs.vertexCount )
4644 && ( instanceCount == rhs.instanceCount )
4645 && ( firstVertex == rhs.firstVertex )
4646 && ( firstInstance == rhs.firstInstance );
4647 }
4648
4649 bool operator!=( DrawIndirectCommand const& rhs ) const
4650 {
4651 return !operator==( rhs );
4652 }
4653
4654 uint32_t vertexCount;
4655 uint32_t instanceCount;
4656 uint32_t firstVertex;
4657 uint32_t firstInstance;
4658 };
4659 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4660
4661 struct DrawIndexedIndirectCommand
4662 {
4663 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4664 : indexCount( indexCount_ )
4665 , instanceCount( instanceCount_ )
4666 , firstIndex( firstIndex_ )
4667 , vertexOffset( vertexOffset_ )
4668 , firstInstance( firstInstance_ )
4669 {
4670 }
4671
4672 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004674 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004675 }
4676
4677 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004679 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004680 return *this;
4681 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004682 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4683 {
4684 indexCount = indexCount_;
4685 return *this;
4686 }
4687
4688 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4689 {
4690 instanceCount = instanceCount_;
4691 return *this;
4692 }
4693
4694 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4695 {
4696 firstIndex = firstIndex_;
4697 return *this;
4698 }
4699
4700 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4701 {
4702 vertexOffset = vertexOffset_;
4703 return *this;
4704 }
4705
4706 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4707 {
4708 firstInstance = firstInstance_;
4709 return *this;
4710 }
4711
4712 operator const VkDrawIndexedIndirectCommand&() const
4713 {
4714 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4715 }
4716
4717 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4718 {
4719 return ( indexCount == rhs.indexCount )
4720 && ( instanceCount == rhs.instanceCount )
4721 && ( firstIndex == rhs.firstIndex )
4722 && ( vertexOffset == rhs.vertexOffset )
4723 && ( firstInstance == rhs.firstInstance );
4724 }
4725
4726 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4727 {
4728 return !operator==( rhs );
4729 }
4730
4731 uint32_t indexCount;
4732 uint32_t instanceCount;
4733 uint32_t firstIndex;
4734 int32_t vertexOffset;
4735 uint32_t firstInstance;
4736 };
4737 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4738
4739 struct DispatchIndirectCommand
4740 {
4741 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4742 : x( x_ )
4743 , y( y_ )
4744 , z( z_ )
4745 {
4746 }
4747
4748 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004750 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004751 }
4752
4753 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4754 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004755 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004756 return *this;
4757 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004758 DispatchIndirectCommand& setX( uint32_t x_ )
4759 {
4760 x = x_;
4761 return *this;
4762 }
4763
4764 DispatchIndirectCommand& setY( uint32_t y_ )
4765 {
4766 y = y_;
4767 return *this;
4768 }
4769
4770 DispatchIndirectCommand& setZ( uint32_t z_ )
4771 {
4772 z = z_;
4773 return *this;
4774 }
4775
4776 operator const VkDispatchIndirectCommand&() const
4777 {
4778 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4779 }
4780
4781 bool operator==( DispatchIndirectCommand const& rhs ) const
4782 {
4783 return ( x == rhs.x )
4784 && ( y == rhs.y )
4785 && ( z == rhs.z );
4786 }
4787
4788 bool operator!=( DispatchIndirectCommand const& rhs ) const
4789 {
4790 return !operator==( rhs );
4791 }
4792
4793 uint32_t x;
4794 uint32_t y;
4795 uint32_t z;
4796 };
4797 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4798
4799 struct DisplayPlanePropertiesKHR
4800 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004801 operator const VkDisplayPlanePropertiesKHR&() const
4802 {
4803 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4804 }
4805
4806 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4807 {
4808 return ( currentDisplay == rhs.currentDisplay )
4809 && ( currentStackIndex == rhs.currentStackIndex );
4810 }
4811
4812 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4813 {
4814 return !operator==( rhs );
4815 }
4816
4817 DisplayKHR currentDisplay;
4818 uint32_t currentStackIndex;
4819 };
4820 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4821
4822 struct DisplayModeParametersKHR
4823 {
4824 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4825 : visibleRegion( visibleRegion_ )
4826 , refreshRate( refreshRate_ )
4827 {
4828 }
4829
4830 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004832 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004833 }
4834
4835 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4836 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004837 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004838 return *this;
4839 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004840 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4841 {
4842 visibleRegion = visibleRegion_;
4843 return *this;
4844 }
4845
4846 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4847 {
4848 refreshRate = refreshRate_;
4849 return *this;
4850 }
4851
4852 operator const VkDisplayModeParametersKHR&() const
4853 {
4854 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4855 }
4856
4857 bool operator==( DisplayModeParametersKHR const& rhs ) const
4858 {
4859 return ( visibleRegion == rhs.visibleRegion )
4860 && ( refreshRate == rhs.refreshRate );
4861 }
4862
4863 bool operator!=( DisplayModeParametersKHR const& rhs ) const
4864 {
4865 return !operator==( rhs );
4866 }
4867
4868 Extent2D visibleRegion;
4869 uint32_t refreshRate;
4870 };
4871 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
4872
4873 struct DisplayModePropertiesKHR
4874 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004875 operator const VkDisplayModePropertiesKHR&() const
4876 {
4877 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
4878 }
4879
4880 bool operator==( DisplayModePropertiesKHR const& rhs ) const
4881 {
4882 return ( displayMode == rhs.displayMode )
4883 && ( parameters == rhs.parameters );
4884 }
4885
4886 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
4887 {
4888 return !operator==( rhs );
4889 }
4890
4891 DisplayModeKHR displayMode;
4892 DisplayModeParametersKHR parameters;
4893 };
4894 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
4895
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004896 struct RectLayerKHR
4897 {
4898 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
4899 : offset( offset_ )
4900 , extent( extent_ )
4901 , layer( layer_ )
4902 {
4903 }
4904
4905 RectLayerKHR( VkRectLayerKHR const & rhs )
4906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004907 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004908 }
4909
4910 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
4911 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004912 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004913 return *this;
4914 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004915 RectLayerKHR& setOffset( Offset2D offset_ )
4916 {
4917 offset = offset_;
4918 return *this;
4919 }
4920
4921 RectLayerKHR& setExtent( Extent2D extent_ )
4922 {
4923 extent = extent_;
4924 return *this;
4925 }
4926
4927 RectLayerKHR& setLayer( uint32_t layer_ )
4928 {
4929 layer = layer_;
4930 return *this;
4931 }
4932
4933 operator const VkRectLayerKHR&() const
4934 {
4935 return *reinterpret_cast<const VkRectLayerKHR*>(this);
4936 }
4937
4938 bool operator==( RectLayerKHR const& rhs ) const
4939 {
4940 return ( offset == rhs.offset )
4941 && ( extent == rhs.extent )
4942 && ( layer == rhs.layer );
4943 }
4944
4945 bool operator!=( RectLayerKHR const& rhs ) const
4946 {
4947 return !operator==( rhs );
4948 }
4949
4950 Offset2D offset;
4951 Extent2D extent;
4952 uint32_t layer;
4953 };
4954 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
4955
4956 struct PresentRegionKHR
4957 {
4958 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
4959 : rectangleCount( rectangleCount_ )
4960 , pRectangles( pRectangles_ )
4961 {
4962 }
4963
4964 PresentRegionKHR( VkPresentRegionKHR const & rhs )
4965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004966 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004967 }
4968
4969 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
4970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004971 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004972 return *this;
4973 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004974 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
4975 {
4976 rectangleCount = rectangleCount_;
4977 return *this;
4978 }
4979
4980 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
4981 {
4982 pRectangles = pRectangles_;
4983 return *this;
4984 }
4985
4986 operator const VkPresentRegionKHR&() const
4987 {
4988 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
4989 }
4990
4991 bool operator==( PresentRegionKHR const& rhs ) const
4992 {
4993 return ( rectangleCount == rhs.rectangleCount )
4994 && ( pRectangles == rhs.pRectangles );
4995 }
4996
4997 bool operator!=( PresentRegionKHR const& rhs ) const
4998 {
4999 return !operator==( rhs );
5000 }
5001
5002 uint32_t rectangleCount;
5003 const RectLayerKHR* pRectangles;
5004 };
5005 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5006
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005007 struct XYColorEXT
5008 {
5009 XYColorEXT( float x_ = 0, float y_ = 0 )
5010 : x( x_ )
5011 , y( y_ )
5012 {
5013 }
5014
5015 XYColorEXT( VkXYColorEXT const & rhs )
5016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005017 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005018 }
5019
5020 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005022 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005023 return *this;
5024 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005025 XYColorEXT& setX( float x_ )
5026 {
5027 x = x_;
5028 return *this;
5029 }
5030
5031 XYColorEXT& setY( float y_ )
5032 {
5033 y = y_;
5034 return *this;
5035 }
5036
5037 operator const VkXYColorEXT&() const
5038 {
5039 return *reinterpret_cast<const VkXYColorEXT*>(this);
5040 }
5041
5042 bool operator==( XYColorEXT const& rhs ) const
5043 {
5044 return ( x == rhs.x )
5045 && ( y == rhs.y );
5046 }
5047
5048 bool operator!=( XYColorEXT const& rhs ) const
5049 {
5050 return !operator==( rhs );
5051 }
5052
5053 float x;
5054 float y;
5055 };
5056 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5057
5058 struct RefreshCycleDurationGOOGLE
5059 {
5060 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5061 : refreshDuration( refreshDuration_ )
5062 {
5063 }
5064
5065 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005067 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005068 }
5069
5070 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5071 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005072 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005073 return *this;
5074 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005075 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5076 {
5077 refreshDuration = refreshDuration_;
5078 return *this;
5079 }
5080
5081 operator const VkRefreshCycleDurationGOOGLE&() const
5082 {
5083 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5084 }
5085
5086 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5087 {
5088 return ( refreshDuration == rhs.refreshDuration );
5089 }
5090
5091 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5092 {
5093 return !operator==( rhs );
5094 }
5095
5096 uint64_t refreshDuration;
5097 };
5098 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5099
5100 struct PastPresentationTimingGOOGLE
5101 {
5102 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5103 : presentID( presentID_ )
5104 , desiredPresentTime( desiredPresentTime_ )
5105 , actualPresentTime( actualPresentTime_ )
5106 , earliestPresentTime( earliestPresentTime_ )
5107 , presentMargin( presentMargin_ )
5108 {
5109 }
5110
5111 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5112 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005113 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005114 }
5115
5116 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5117 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005118 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005119 return *this;
5120 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005121 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5122 {
5123 presentID = presentID_;
5124 return *this;
5125 }
5126
5127 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5128 {
5129 desiredPresentTime = desiredPresentTime_;
5130 return *this;
5131 }
5132
5133 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5134 {
5135 actualPresentTime = actualPresentTime_;
5136 return *this;
5137 }
5138
5139 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5140 {
5141 earliestPresentTime = earliestPresentTime_;
5142 return *this;
5143 }
5144
5145 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5146 {
5147 presentMargin = presentMargin_;
5148 return *this;
5149 }
5150
5151 operator const VkPastPresentationTimingGOOGLE&() const
5152 {
5153 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5154 }
5155
5156 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5157 {
5158 return ( presentID == rhs.presentID )
5159 && ( desiredPresentTime == rhs.desiredPresentTime )
5160 && ( actualPresentTime == rhs.actualPresentTime )
5161 && ( earliestPresentTime == rhs.earliestPresentTime )
5162 && ( presentMargin == rhs.presentMargin );
5163 }
5164
5165 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5166 {
5167 return !operator==( rhs );
5168 }
5169
5170 uint32_t presentID;
5171 uint64_t desiredPresentTime;
5172 uint64_t actualPresentTime;
5173 uint64_t earliestPresentTime;
5174 uint64_t presentMargin;
5175 };
5176 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5177
5178 struct PresentTimeGOOGLE
5179 {
5180 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5181 : presentID( presentID_ )
5182 , desiredPresentTime( desiredPresentTime_ )
5183 {
5184 }
5185
5186 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005188 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005189 }
5190
5191 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005193 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005194 return *this;
5195 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005196 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5197 {
5198 presentID = presentID_;
5199 return *this;
5200 }
5201
5202 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5203 {
5204 desiredPresentTime = desiredPresentTime_;
5205 return *this;
5206 }
5207
5208 operator const VkPresentTimeGOOGLE&() const
5209 {
5210 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5211 }
5212
5213 bool operator==( PresentTimeGOOGLE const& rhs ) const
5214 {
5215 return ( presentID == rhs.presentID )
5216 && ( desiredPresentTime == rhs.desiredPresentTime );
5217 }
5218
5219 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5220 {
5221 return !operator==( rhs );
5222 }
5223
5224 uint32_t presentID;
5225 uint64_t desiredPresentTime;
5226 };
5227 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5228
Mark Young0f183a82017-02-28 09:58:04 -07005229 struct ViewportWScalingNV
5230 {
5231 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5232 : xcoeff( xcoeff_ )
5233 , ycoeff( ycoeff_ )
5234 {
5235 }
5236
5237 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005239 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005240 }
5241
5242 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5243 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005244 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005245 return *this;
5246 }
Mark Young0f183a82017-02-28 09:58:04 -07005247 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5248 {
5249 xcoeff = xcoeff_;
5250 return *this;
5251 }
5252
5253 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5254 {
5255 ycoeff = ycoeff_;
5256 return *this;
5257 }
5258
5259 operator const VkViewportWScalingNV&() const
5260 {
5261 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5262 }
5263
5264 bool operator==( ViewportWScalingNV const& rhs ) const
5265 {
5266 return ( xcoeff == rhs.xcoeff )
5267 && ( ycoeff == rhs.ycoeff );
5268 }
5269
5270 bool operator!=( ViewportWScalingNV const& rhs ) const
5271 {
5272 return !operator==( rhs );
5273 }
5274
5275 float xcoeff;
5276 float ycoeff;
5277 };
5278 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5279
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005280 enum class ImageLayout
5281 {
5282 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5283 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5284 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5285 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5286 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5287 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5288 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5289 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5290 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005291 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
5292 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005293 };
5294
5295 struct DescriptorImageInfo
5296 {
5297 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5298 : sampler( sampler_ )
5299 , imageView( imageView_ )
5300 , imageLayout( imageLayout_ )
5301 {
5302 }
5303
5304 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5305 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005306 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005307 }
5308
5309 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5310 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005311 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005312 return *this;
5313 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005314 DescriptorImageInfo& setSampler( Sampler sampler_ )
5315 {
5316 sampler = sampler_;
5317 return *this;
5318 }
5319
5320 DescriptorImageInfo& setImageView( ImageView imageView_ )
5321 {
5322 imageView = imageView_;
5323 return *this;
5324 }
5325
5326 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5327 {
5328 imageLayout = imageLayout_;
5329 return *this;
5330 }
5331
5332 operator const VkDescriptorImageInfo&() const
5333 {
5334 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5335 }
5336
5337 bool operator==( DescriptorImageInfo const& rhs ) const
5338 {
5339 return ( sampler == rhs.sampler )
5340 && ( imageView == rhs.imageView )
5341 && ( imageLayout == rhs.imageLayout );
5342 }
5343
5344 bool operator!=( DescriptorImageInfo const& rhs ) const
5345 {
5346 return !operator==( rhs );
5347 }
5348
5349 Sampler sampler;
5350 ImageView imageView;
5351 ImageLayout imageLayout;
5352 };
5353 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5354
5355 struct AttachmentReference
5356 {
5357 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5358 : attachment( attachment_ )
5359 , layout( layout_ )
5360 {
5361 }
5362
5363 AttachmentReference( VkAttachmentReference const & rhs )
5364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005365 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005366 }
5367
5368 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005370 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005371 return *this;
5372 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005373 AttachmentReference& setAttachment( uint32_t attachment_ )
5374 {
5375 attachment = attachment_;
5376 return *this;
5377 }
5378
5379 AttachmentReference& setLayout( ImageLayout layout_ )
5380 {
5381 layout = layout_;
5382 return *this;
5383 }
5384
5385 operator const VkAttachmentReference&() const
5386 {
5387 return *reinterpret_cast<const VkAttachmentReference*>(this);
5388 }
5389
5390 bool operator==( AttachmentReference const& rhs ) const
5391 {
5392 return ( attachment == rhs.attachment )
5393 && ( layout == rhs.layout );
5394 }
5395
5396 bool operator!=( AttachmentReference const& rhs ) const
5397 {
5398 return !operator==( rhs );
5399 }
5400
5401 uint32_t attachment;
5402 ImageLayout layout;
5403 };
5404 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5405
5406 enum class AttachmentLoadOp
5407 {
5408 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5409 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5410 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5411 };
5412
5413 enum class AttachmentStoreOp
5414 {
5415 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5416 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5417 };
5418
5419 enum class ImageType
5420 {
5421 e1D = VK_IMAGE_TYPE_1D,
5422 e2D = VK_IMAGE_TYPE_2D,
5423 e3D = VK_IMAGE_TYPE_3D
5424 };
5425
5426 enum class ImageTiling
5427 {
5428 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5429 eLinear = VK_IMAGE_TILING_LINEAR
5430 };
5431
5432 enum class ImageViewType
5433 {
5434 e1D = VK_IMAGE_VIEW_TYPE_1D,
5435 e2D = VK_IMAGE_VIEW_TYPE_2D,
5436 e3D = VK_IMAGE_VIEW_TYPE_3D,
5437 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5438 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5439 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5440 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5441 };
5442
5443 enum class CommandBufferLevel
5444 {
5445 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5446 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5447 };
5448
5449 enum class ComponentSwizzle
5450 {
5451 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5452 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5453 eOne = VK_COMPONENT_SWIZZLE_ONE,
5454 eR = VK_COMPONENT_SWIZZLE_R,
5455 eG = VK_COMPONENT_SWIZZLE_G,
5456 eB = VK_COMPONENT_SWIZZLE_B,
5457 eA = VK_COMPONENT_SWIZZLE_A
5458 };
5459
5460 struct ComponentMapping
5461 {
5462 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5463 : r( r_ )
5464 , g( g_ )
5465 , b( b_ )
5466 , a( a_ )
5467 {
5468 }
5469
5470 ComponentMapping( VkComponentMapping const & rhs )
5471 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005472 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005473 }
5474
5475 ComponentMapping& operator=( VkComponentMapping const & rhs )
5476 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005477 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005478 return *this;
5479 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005480 ComponentMapping& setR( ComponentSwizzle r_ )
5481 {
5482 r = r_;
5483 return *this;
5484 }
5485
5486 ComponentMapping& setG( ComponentSwizzle g_ )
5487 {
5488 g = g_;
5489 return *this;
5490 }
5491
5492 ComponentMapping& setB( ComponentSwizzle b_ )
5493 {
5494 b = b_;
5495 return *this;
5496 }
5497
5498 ComponentMapping& setA( ComponentSwizzle a_ )
5499 {
5500 a = a_;
5501 return *this;
5502 }
5503
5504 operator const VkComponentMapping&() const
5505 {
5506 return *reinterpret_cast<const VkComponentMapping*>(this);
5507 }
5508
5509 bool operator==( ComponentMapping const& rhs ) const
5510 {
5511 return ( r == rhs.r )
5512 && ( g == rhs.g )
5513 && ( b == rhs.b )
5514 && ( a == rhs.a );
5515 }
5516
5517 bool operator!=( ComponentMapping const& rhs ) const
5518 {
5519 return !operator==( rhs );
5520 }
5521
5522 ComponentSwizzle r;
5523 ComponentSwizzle g;
5524 ComponentSwizzle b;
5525 ComponentSwizzle a;
5526 };
5527 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5528
5529 enum class DescriptorType
5530 {
5531 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5532 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5533 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5534 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5535 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5536 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5537 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5538 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5539 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5540 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5541 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5542 };
5543
5544 struct DescriptorPoolSize
5545 {
5546 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5547 : type( type_ )
5548 , descriptorCount( descriptorCount_ )
5549 {
5550 }
5551
5552 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005554 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005555 }
5556
5557 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5558 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005559 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005560 return *this;
5561 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005562 DescriptorPoolSize& setType( DescriptorType type_ )
5563 {
5564 type = type_;
5565 return *this;
5566 }
5567
5568 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5569 {
5570 descriptorCount = descriptorCount_;
5571 return *this;
5572 }
5573
5574 operator const VkDescriptorPoolSize&() const
5575 {
5576 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5577 }
5578
5579 bool operator==( DescriptorPoolSize const& rhs ) const
5580 {
5581 return ( type == rhs.type )
5582 && ( descriptorCount == rhs.descriptorCount );
5583 }
5584
5585 bool operator!=( DescriptorPoolSize const& rhs ) const
5586 {
5587 return !operator==( rhs );
5588 }
5589
5590 DescriptorType type;
5591 uint32_t descriptorCount;
5592 };
5593 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5594
Mark Young0f183a82017-02-28 09:58:04 -07005595 struct DescriptorUpdateTemplateEntryKHR
5596 {
5597 DescriptorUpdateTemplateEntryKHR( uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, size_t offset_ = 0, size_t stride_ = 0 )
5598 : dstBinding( dstBinding_ )
5599 , dstArrayElement( dstArrayElement_ )
5600 , descriptorCount( descriptorCount_ )
5601 , descriptorType( descriptorType_ )
5602 , offset( offset_ )
5603 , stride( stride_ )
5604 {
5605 }
5606
5607 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005609 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005610 }
5611
5612 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5613 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005614 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005615 return *this;
5616 }
Mark Young0f183a82017-02-28 09:58:04 -07005617 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5618 {
5619 dstBinding = dstBinding_;
5620 return *this;
5621 }
5622
5623 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5624 {
5625 dstArrayElement = dstArrayElement_;
5626 return *this;
5627 }
5628
5629 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5630 {
5631 descriptorCount = descriptorCount_;
5632 return *this;
5633 }
5634
5635 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5636 {
5637 descriptorType = descriptorType_;
5638 return *this;
5639 }
5640
5641 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5642 {
5643 offset = offset_;
5644 return *this;
5645 }
5646
5647 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5648 {
5649 stride = stride_;
5650 return *this;
5651 }
5652
5653 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5654 {
5655 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5656 }
5657
5658 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5659 {
5660 return ( dstBinding == rhs.dstBinding )
5661 && ( dstArrayElement == rhs.dstArrayElement )
5662 && ( descriptorCount == rhs.descriptorCount )
5663 && ( descriptorType == rhs.descriptorType )
5664 && ( offset == rhs.offset )
5665 && ( stride == rhs.stride );
5666 }
5667
5668 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5669 {
5670 return !operator==( rhs );
5671 }
5672
5673 uint32_t dstBinding;
5674 uint32_t dstArrayElement;
5675 uint32_t descriptorCount;
5676 DescriptorType descriptorType;
5677 size_t offset;
5678 size_t stride;
5679 };
5680 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5681
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005682 enum class QueryType
5683 {
5684 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5685 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5686 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5687 };
5688
5689 enum class BorderColor
5690 {
5691 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5692 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5693 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5694 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5695 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5696 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5697 };
5698
5699 enum class PipelineBindPoint
5700 {
5701 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5702 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5703 };
5704
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005705 enum class PipelineCacheHeaderVersion
5706 {
5707 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5708 };
5709
5710 enum class PrimitiveTopology
5711 {
5712 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5713 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5714 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5715 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5716 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5717 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5718 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5719 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5720 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5721 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5722 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5723 };
5724
5725 enum class SharingMode
5726 {
5727 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5728 eConcurrent = VK_SHARING_MODE_CONCURRENT
5729 };
5730
5731 enum class IndexType
5732 {
5733 eUint16 = VK_INDEX_TYPE_UINT16,
5734 eUint32 = VK_INDEX_TYPE_UINT32
5735 };
5736
5737 enum class Filter
5738 {
5739 eNearest = VK_FILTER_NEAREST,
5740 eLinear = VK_FILTER_LINEAR,
5741 eCubicIMG = VK_FILTER_CUBIC_IMG
5742 };
5743
5744 enum class SamplerMipmapMode
5745 {
5746 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5747 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5748 };
5749
5750 enum class SamplerAddressMode
5751 {
5752 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5753 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5754 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5755 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5756 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5757 };
5758
5759 enum class CompareOp
5760 {
5761 eNever = VK_COMPARE_OP_NEVER,
5762 eLess = VK_COMPARE_OP_LESS,
5763 eEqual = VK_COMPARE_OP_EQUAL,
5764 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5765 eGreater = VK_COMPARE_OP_GREATER,
5766 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5767 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5768 eAlways = VK_COMPARE_OP_ALWAYS
5769 };
5770
5771 enum class PolygonMode
5772 {
5773 eFill = VK_POLYGON_MODE_FILL,
5774 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06005775 ePoint = VK_POLYGON_MODE_POINT,
5776 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005777 };
5778
5779 enum class CullModeFlagBits
5780 {
5781 eNone = VK_CULL_MODE_NONE,
5782 eFront = VK_CULL_MODE_FRONT_BIT,
5783 eBack = VK_CULL_MODE_BACK_BIT,
5784 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5785 };
5786
5787 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5788
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005789 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005790 {
5791 return CullModeFlags( bit0 ) | bit1;
5792 }
5793
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005794 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5795 {
5796 return ~( CullModeFlags( bits ) );
5797 }
5798
5799 template <> struct FlagTraits<CullModeFlagBits>
5800 {
5801 enum
5802 {
5803 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5804 };
5805 };
5806
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005807 enum class FrontFace
5808 {
5809 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5810 eClockwise = VK_FRONT_FACE_CLOCKWISE
5811 };
5812
5813 enum class BlendFactor
5814 {
5815 eZero = VK_BLEND_FACTOR_ZERO,
5816 eOne = VK_BLEND_FACTOR_ONE,
5817 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5818 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5819 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5820 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5821 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5822 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5823 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5824 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5825 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5826 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5827 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5828 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5829 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5830 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5831 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5832 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5833 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5834 };
5835
5836 enum class BlendOp
5837 {
5838 eAdd = VK_BLEND_OP_ADD,
5839 eSubtract = VK_BLEND_OP_SUBTRACT,
5840 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5841 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06005842 eMax = VK_BLEND_OP_MAX,
5843 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
5844 eSrcEXT = VK_BLEND_OP_SRC_EXT,
5845 eDstEXT = VK_BLEND_OP_DST_EXT,
5846 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
5847 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
5848 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
5849 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
5850 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
5851 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
5852 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
5853 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
5854 eXorEXT = VK_BLEND_OP_XOR_EXT,
5855 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
5856 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
5857 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
5858 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
5859 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
5860 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
5861 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
5862 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
5863 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
5864 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
5865 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
5866 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
5867 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
5868 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
5869 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
5870 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
5871 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
5872 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
5873 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
5874 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
5875 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
5876 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
5877 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
5878 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
5879 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
5880 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
5881 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
5882 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
5883 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
5884 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
5885 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
5886 eRedEXT = VK_BLEND_OP_RED_EXT,
5887 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
5888 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005889 };
5890
5891 enum class StencilOp
5892 {
5893 eKeep = VK_STENCIL_OP_KEEP,
5894 eZero = VK_STENCIL_OP_ZERO,
5895 eReplace = VK_STENCIL_OP_REPLACE,
5896 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5897 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5898 eInvert = VK_STENCIL_OP_INVERT,
5899 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5900 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5901 };
5902
5903 struct StencilOpState
5904 {
5905 StencilOpState( StencilOp failOp_ = StencilOp::eKeep, StencilOp passOp_ = StencilOp::eKeep, StencilOp depthFailOp_ = StencilOp::eKeep, CompareOp compareOp_ = CompareOp::eNever, uint32_t compareMask_ = 0, uint32_t writeMask_ = 0, uint32_t reference_ = 0 )
5906 : failOp( failOp_ )
5907 , passOp( passOp_ )
5908 , depthFailOp( depthFailOp_ )
5909 , compareOp( compareOp_ )
5910 , compareMask( compareMask_ )
5911 , writeMask( writeMask_ )
5912 , reference( reference_ )
5913 {
5914 }
5915
5916 StencilOpState( VkStencilOpState const & rhs )
5917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005918 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005919 }
5920
5921 StencilOpState& operator=( VkStencilOpState const & rhs )
5922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005923 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005924 return *this;
5925 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005926 StencilOpState& setFailOp( StencilOp failOp_ )
5927 {
5928 failOp = failOp_;
5929 return *this;
5930 }
5931
5932 StencilOpState& setPassOp( StencilOp passOp_ )
5933 {
5934 passOp = passOp_;
5935 return *this;
5936 }
5937
5938 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5939 {
5940 depthFailOp = depthFailOp_;
5941 return *this;
5942 }
5943
5944 StencilOpState& setCompareOp( CompareOp compareOp_ )
5945 {
5946 compareOp = compareOp_;
5947 return *this;
5948 }
5949
5950 StencilOpState& setCompareMask( uint32_t compareMask_ )
5951 {
5952 compareMask = compareMask_;
5953 return *this;
5954 }
5955
5956 StencilOpState& setWriteMask( uint32_t writeMask_ )
5957 {
5958 writeMask = writeMask_;
5959 return *this;
5960 }
5961
5962 StencilOpState& setReference( uint32_t reference_ )
5963 {
5964 reference = reference_;
5965 return *this;
5966 }
5967
5968 operator const VkStencilOpState&() const
5969 {
5970 return *reinterpret_cast<const VkStencilOpState*>(this);
5971 }
5972
5973 bool operator==( StencilOpState const& rhs ) const
5974 {
5975 return ( failOp == rhs.failOp )
5976 && ( passOp == rhs.passOp )
5977 && ( depthFailOp == rhs.depthFailOp )
5978 && ( compareOp == rhs.compareOp )
5979 && ( compareMask == rhs.compareMask )
5980 && ( writeMask == rhs.writeMask )
5981 && ( reference == rhs.reference );
5982 }
5983
5984 bool operator!=( StencilOpState const& rhs ) const
5985 {
5986 return !operator==( rhs );
5987 }
5988
5989 StencilOp failOp;
5990 StencilOp passOp;
5991 StencilOp depthFailOp;
5992 CompareOp compareOp;
5993 uint32_t compareMask;
5994 uint32_t writeMask;
5995 uint32_t reference;
5996 };
5997 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5998
5999 enum class LogicOp
6000 {
6001 eClear = VK_LOGIC_OP_CLEAR,
6002 eAnd = VK_LOGIC_OP_AND,
6003 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6004 eCopy = VK_LOGIC_OP_COPY,
6005 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6006 eNoOp = VK_LOGIC_OP_NO_OP,
6007 eXor = VK_LOGIC_OP_XOR,
6008 eOr = VK_LOGIC_OP_OR,
6009 eNor = VK_LOGIC_OP_NOR,
6010 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6011 eInvert = VK_LOGIC_OP_INVERT,
6012 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6013 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6014 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6015 eNand = VK_LOGIC_OP_NAND,
6016 eSet = VK_LOGIC_OP_SET
6017 };
6018
6019 enum class InternalAllocationType
6020 {
6021 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6022 };
6023
6024 enum class SystemAllocationScope
6025 {
6026 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6027 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6028 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6029 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6030 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6031 };
6032
6033 enum class PhysicalDeviceType
6034 {
6035 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6036 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6037 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6038 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6039 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6040 };
6041
6042 enum class VertexInputRate
6043 {
6044 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6045 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6046 };
6047
6048 struct VertexInputBindingDescription
6049 {
6050 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6051 : binding( binding_ )
6052 , stride( stride_ )
6053 , inputRate( inputRate_ )
6054 {
6055 }
6056
6057 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6058 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006059 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006060 }
6061
6062 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6063 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006064 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006065 return *this;
6066 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006067 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6068 {
6069 binding = binding_;
6070 return *this;
6071 }
6072
6073 VertexInputBindingDescription& setStride( uint32_t stride_ )
6074 {
6075 stride = stride_;
6076 return *this;
6077 }
6078
6079 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6080 {
6081 inputRate = inputRate_;
6082 return *this;
6083 }
6084
6085 operator const VkVertexInputBindingDescription&() const
6086 {
6087 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6088 }
6089
6090 bool operator==( VertexInputBindingDescription const& rhs ) const
6091 {
6092 return ( binding == rhs.binding )
6093 && ( stride == rhs.stride )
6094 && ( inputRate == rhs.inputRate );
6095 }
6096
6097 bool operator!=( VertexInputBindingDescription const& rhs ) const
6098 {
6099 return !operator==( rhs );
6100 }
6101
6102 uint32_t binding;
6103 uint32_t stride;
6104 VertexInputRate inputRate;
6105 };
6106 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6107
6108 enum class Format
6109 {
6110 eUndefined = VK_FORMAT_UNDEFINED,
6111 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6112 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6113 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6114 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6115 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6116 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6117 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6118 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6119 eR8Unorm = VK_FORMAT_R8_UNORM,
6120 eR8Snorm = VK_FORMAT_R8_SNORM,
6121 eR8Uscaled = VK_FORMAT_R8_USCALED,
6122 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6123 eR8Uint = VK_FORMAT_R8_UINT,
6124 eR8Sint = VK_FORMAT_R8_SINT,
6125 eR8Srgb = VK_FORMAT_R8_SRGB,
6126 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6127 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6128 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6129 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6130 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6131 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6132 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6133 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6134 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6135 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6136 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6137 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6138 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6139 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6140 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6141 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6142 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6143 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6144 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6145 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6146 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6147 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6148 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6149 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6150 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6151 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6152 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6153 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6154 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6155 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6156 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6157 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6158 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6159 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6160 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6161 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6162 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6163 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6164 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6165 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6166 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6167 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6168 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6169 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6170 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6171 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6172 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6173 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6174 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6175 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6176 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6177 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6178 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6179 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6180 eR16Unorm = VK_FORMAT_R16_UNORM,
6181 eR16Snorm = VK_FORMAT_R16_SNORM,
6182 eR16Uscaled = VK_FORMAT_R16_USCALED,
6183 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6184 eR16Uint = VK_FORMAT_R16_UINT,
6185 eR16Sint = VK_FORMAT_R16_SINT,
6186 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6187 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6188 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6189 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6190 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6191 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6192 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6193 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6194 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6195 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6196 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6197 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6198 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6199 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6200 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6201 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6202 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6203 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6204 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6205 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6206 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6207 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6208 eR32Uint = VK_FORMAT_R32_UINT,
6209 eR32Sint = VK_FORMAT_R32_SINT,
6210 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6211 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6212 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6213 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6214 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6215 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6216 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6217 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6218 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6219 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6220 eR64Uint = VK_FORMAT_R64_UINT,
6221 eR64Sint = VK_FORMAT_R64_SINT,
6222 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6223 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6224 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6225 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6226 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6227 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6228 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6229 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6230 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6231 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6232 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6233 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6234 eD16Unorm = VK_FORMAT_D16_UNORM,
6235 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6236 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6237 eS8Uint = VK_FORMAT_S8_UINT,
6238 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6239 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6240 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6241 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6242 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6243 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6244 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6245 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6246 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6247 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6248 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6249 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6250 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6251 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6252 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6253 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6254 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6255 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6256 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6257 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6258 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6259 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6260 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6261 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6262 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6263 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6264 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6265 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6266 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6267 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6268 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6269 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6270 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6271 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6272 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6273 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6274 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6275 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6276 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6277 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6278 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6279 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6280 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6281 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6282 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6283 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6284 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6285 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6286 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6287 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6288 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6289 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6290 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6291 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6292 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6293 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006294 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6295 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6296 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6297 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6298 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6299 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6300 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6301 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6302 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006303 };
6304
6305 struct VertexInputAttributeDescription
6306 {
6307 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6308 : location( location_ )
6309 , binding( binding_ )
6310 , format( format_ )
6311 , offset( offset_ )
6312 {
6313 }
6314
6315 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006317 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006318 }
6319
6320 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006322 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006323 return *this;
6324 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006325 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6326 {
6327 location = location_;
6328 return *this;
6329 }
6330
6331 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6332 {
6333 binding = binding_;
6334 return *this;
6335 }
6336
6337 VertexInputAttributeDescription& setFormat( Format format_ )
6338 {
6339 format = format_;
6340 return *this;
6341 }
6342
6343 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6344 {
6345 offset = offset_;
6346 return *this;
6347 }
6348
6349 operator const VkVertexInputAttributeDescription&() const
6350 {
6351 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6352 }
6353
6354 bool operator==( VertexInputAttributeDescription const& rhs ) const
6355 {
6356 return ( location == rhs.location )
6357 && ( binding == rhs.binding )
6358 && ( format == rhs.format )
6359 && ( offset == rhs.offset );
6360 }
6361
6362 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6363 {
6364 return !operator==( rhs );
6365 }
6366
6367 uint32_t location;
6368 uint32_t binding;
6369 Format format;
6370 uint32_t offset;
6371 };
6372 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6373
6374 enum class StructureType
6375 {
6376 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6377 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6378 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6379 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6380 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6381 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6382 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6383 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6384 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6385 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6386 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6387 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6388 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6389 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6390 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6391 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6392 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6393 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6394 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6395 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6396 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6397 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6398 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6399 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6400 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6401 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6402 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6403 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6404 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6405 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6406 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6407 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6408 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6409 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6410 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6411 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6412 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6413 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6414 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6415 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6416 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6417 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6418 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6419 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6420 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6421 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6422 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6423 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6424 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6425 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6426 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6427 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6428 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6429 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6430 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6431 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6432 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6433 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6434 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6435 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6436 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6437 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6438 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6439 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6440 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6441 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6442 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006443 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006444 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006445 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6446 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6447 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006448 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6449 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6450 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6451 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006452 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006453 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6454 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6455 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6456 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6457 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6458 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6459 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6460 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6461 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006462 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6463 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6464 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6465 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6466 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6467 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6468 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6469 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6470 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6471 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6472 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6473 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6474 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006475 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006476 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006477 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6478 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006479 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6480 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6481 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6482 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6483 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6484 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6485 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6486 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6487 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6488 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6489 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6490 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6491 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6492 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6493 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6494 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6495 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6496 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6497 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6498 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6499 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6500 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6501 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6502 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6503 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006504 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006505 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006506 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006507 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006508 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6509 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6510 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6511 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6512 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006513 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006514 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006515 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6516 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6517 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6518 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006519 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006520 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006521 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6522 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6523 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6524 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006525 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006526 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006527 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6528 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6529 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6530 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6531 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6532 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6533 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6534 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006535 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6536 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6537 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006538 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006539 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006540 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006541 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6542 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006543 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6544 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006545 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6546 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6547 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6548 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6549 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006550 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6551 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6552 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6553 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
6554 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006555 };
6556
6557 struct ApplicationInfo
6558 {
6559 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6560 : sType( StructureType::eApplicationInfo )
6561 , pNext( nullptr )
6562 , pApplicationName( pApplicationName_ )
6563 , applicationVersion( applicationVersion_ )
6564 , pEngineName( pEngineName_ )
6565 , engineVersion( engineVersion_ )
6566 , apiVersion( apiVersion_ )
6567 {
6568 }
6569
6570 ApplicationInfo( VkApplicationInfo const & rhs )
6571 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006572 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006573 }
6574
6575 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6576 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006577 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006578 return *this;
6579 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006580 ApplicationInfo& setPNext( const void* pNext_ )
6581 {
6582 pNext = pNext_;
6583 return *this;
6584 }
6585
6586 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6587 {
6588 pApplicationName = pApplicationName_;
6589 return *this;
6590 }
6591
6592 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6593 {
6594 applicationVersion = applicationVersion_;
6595 return *this;
6596 }
6597
6598 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6599 {
6600 pEngineName = pEngineName_;
6601 return *this;
6602 }
6603
6604 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6605 {
6606 engineVersion = engineVersion_;
6607 return *this;
6608 }
6609
6610 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6611 {
6612 apiVersion = apiVersion_;
6613 return *this;
6614 }
6615
6616 operator const VkApplicationInfo&() const
6617 {
6618 return *reinterpret_cast<const VkApplicationInfo*>(this);
6619 }
6620
6621 bool operator==( ApplicationInfo const& rhs ) const
6622 {
6623 return ( sType == rhs.sType )
6624 && ( pNext == rhs.pNext )
6625 && ( pApplicationName == rhs.pApplicationName )
6626 && ( applicationVersion == rhs.applicationVersion )
6627 && ( pEngineName == rhs.pEngineName )
6628 && ( engineVersion == rhs.engineVersion )
6629 && ( apiVersion == rhs.apiVersion );
6630 }
6631
6632 bool operator!=( ApplicationInfo const& rhs ) const
6633 {
6634 return !operator==( rhs );
6635 }
6636
6637 private:
6638 StructureType sType;
6639
6640 public:
6641 const void* pNext;
6642 const char* pApplicationName;
6643 uint32_t applicationVersion;
6644 const char* pEngineName;
6645 uint32_t engineVersion;
6646 uint32_t apiVersion;
6647 };
6648 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6649
6650 struct DeviceQueueCreateInfo
6651 {
6652 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6653 : sType( StructureType::eDeviceQueueCreateInfo )
6654 , pNext( nullptr )
6655 , flags( flags_ )
6656 , queueFamilyIndex( queueFamilyIndex_ )
6657 , queueCount( queueCount_ )
6658 , pQueuePriorities( pQueuePriorities_ )
6659 {
6660 }
6661
6662 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006664 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006665 }
6666
6667 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006669 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006670 return *this;
6671 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006672 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6673 {
6674 pNext = pNext_;
6675 return *this;
6676 }
6677
6678 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6679 {
6680 flags = flags_;
6681 return *this;
6682 }
6683
6684 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6685 {
6686 queueFamilyIndex = queueFamilyIndex_;
6687 return *this;
6688 }
6689
6690 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6691 {
6692 queueCount = queueCount_;
6693 return *this;
6694 }
6695
6696 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6697 {
6698 pQueuePriorities = pQueuePriorities_;
6699 return *this;
6700 }
6701
6702 operator const VkDeviceQueueCreateInfo&() const
6703 {
6704 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6705 }
6706
6707 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6708 {
6709 return ( sType == rhs.sType )
6710 && ( pNext == rhs.pNext )
6711 && ( flags == rhs.flags )
6712 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6713 && ( queueCount == rhs.queueCount )
6714 && ( pQueuePriorities == rhs.pQueuePriorities );
6715 }
6716
6717 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6718 {
6719 return !operator==( rhs );
6720 }
6721
6722 private:
6723 StructureType sType;
6724
6725 public:
6726 const void* pNext;
6727 DeviceQueueCreateFlags flags;
6728 uint32_t queueFamilyIndex;
6729 uint32_t queueCount;
6730 const float* pQueuePriorities;
6731 };
6732 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6733
6734 struct DeviceCreateInfo
6735 {
6736 DeviceCreateInfo( DeviceCreateFlags flags_ = DeviceCreateFlags(), uint32_t queueCreateInfoCount_ = 0, const DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr, uint32_t enabledLayerCount_ = 0, const char* const* ppEnabledLayerNames_ = nullptr, uint32_t enabledExtensionCount_ = 0, const char* const* ppEnabledExtensionNames_ = nullptr, const PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr )
6737 : sType( StructureType::eDeviceCreateInfo )
6738 , pNext( nullptr )
6739 , flags( flags_ )
6740 , queueCreateInfoCount( queueCreateInfoCount_ )
6741 , pQueueCreateInfos( pQueueCreateInfos_ )
6742 , enabledLayerCount( enabledLayerCount_ )
6743 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6744 , enabledExtensionCount( enabledExtensionCount_ )
6745 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6746 , pEnabledFeatures( pEnabledFeatures_ )
6747 {
6748 }
6749
6750 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6751 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006752 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006753 }
6754
6755 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6756 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006757 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006758 return *this;
6759 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006760 DeviceCreateInfo& setPNext( const void* pNext_ )
6761 {
6762 pNext = pNext_;
6763 return *this;
6764 }
6765
6766 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6767 {
6768 flags = flags_;
6769 return *this;
6770 }
6771
6772 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6773 {
6774 queueCreateInfoCount = queueCreateInfoCount_;
6775 return *this;
6776 }
6777
6778 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6779 {
6780 pQueueCreateInfos = pQueueCreateInfos_;
6781 return *this;
6782 }
6783
6784 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6785 {
6786 enabledLayerCount = enabledLayerCount_;
6787 return *this;
6788 }
6789
6790 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6791 {
6792 ppEnabledLayerNames = ppEnabledLayerNames_;
6793 return *this;
6794 }
6795
6796 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6797 {
6798 enabledExtensionCount = enabledExtensionCount_;
6799 return *this;
6800 }
6801
6802 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6803 {
6804 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6805 return *this;
6806 }
6807
6808 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6809 {
6810 pEnabledFeatures = pEnabledFeatures_;
6811 return *this;
6812 }
6813
6814 operator const VkDeviceCreateInfo&() const
6815 {
6816 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6817 }
6818
6819 bool operator==( DeviceCreateInfo const& rhs ) const
6820 {
6821 return ( sType == rhs.sType )
6822 && ( pNext == rhs.pNext )
6823 && ( flags == rhs.flags )
6824 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6825 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6826 && ( enabledLayerCount == rhs.enabledLayerCount )
6827 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6828 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6829 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6830 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6831 }
6832
6833 bool operator!=( DeviceCreateInfo const& rhs ) const
6834 {
6835 return !operator==( rhs );
6836 }
6837
6838 private:
6839 StructureType sType;
6840
6841 public:
6842 const void* pNext;
6843 DeviceCreateFlags flags;
6844 uint32_t queueCreateInfoCount;
6845 const DeviceQueueCreateInfo* pQueueCreateInfos;
6846 uint32_t enabledLayerCount;
6847 const char* const* ppEnabledLayerNames;
6848 uint32_t enabledExtensionCount;
6849 const char* const* ppEnabledExtensionNames;
6850 const PhysicalDeviceFeatures* pEnabledFeatures;
6851 };
6852 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6853
6854 struct InstanceCreateInfo
6855 {
6856 InstanceCreateInfo( InstanceCreateFlags flags_ = InstanceCreateFlags(), const ApplicationInfo* pApplicationInfo_ = nullptr, uint32_t enabledLayerCount_ = 0, const char* const* ppEnabledLayerNames_ = nullptr, uint32_t enabledExtensionCount_ = 0, const char* const* ppEnabledExtensionNames_ = nullptr )
6857 : sType( StructureType::eInstanceCreateInfo )
6858 , pNext( nullptr )
6859 , flags( flags_ )
6860 , pApplicationInfo( pApplicationInfo_ )
6861 , enabledLayerCount( enabledLayerCount_ )
6862 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6863 , enabledExtensionCount( enabledExtensionCount_ )
6864 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6865 {
6866 }
6867
6868 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006870 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006871 }
6872
6873 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6874 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006875 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006876 return *this;
6877 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006878 InstanceCreateInfo& setPNext( const void* pNext_ )
6879 {
6880 pNext = pNext_;
6881 return *this;
6882 }
6883
6884 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6885 {
6886 flags = flags_;
6887 return *this;
6888 }
6889
6890 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6891 {
6892 pApplicationInfo = pApplicationInfo_;
6893 return *this;
6894 }
6895
6896 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6897 {
6898 enabledLayerCount = enabledLayerCount_;
6899 return *this;
6900 }
6901
6902 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6903 {
6904 ppEnabledLayerNames = ppEnabledLayerNames_;
6905 return *this;
6906 }
6907
6908 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6909 {
6910 enabledExtensionCount = enabledExtensionCount_;
6911 return *this;
6912 }
6913
6914 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6915 {
6916 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6917 return *this;
6918 }
6919
6920 operator const VkInstanceCreateInfo&() const
6921 {
6922 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6923 }
6924
6925 bool operator==( InstanceCreateInfo const& rhs ) const
6926 {
6927 return ( sType == rhs.sType )
6928 && ( pNext == rhs.pNext )
6929 && ( flags == rhs.flags )
6930 && ( pApplicationInfo == rhs.pApplicationInfo )
6931 && ( enabledLayerCount == rhs.enabledLayerCount )
6932 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6933 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6934 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6935 }
6936
6937 bool operator!=( InstanceCreateInfo const& rhs ) const
6938 {
6939 return !operator==( rhs );
6940 }
6941
6942 private:
6943 StructureType sType;
6944
6945 public:
6946 const void* pNext;
6947 InstanceCreateFlags flags;
6948 const ApplicationInfo* pApplicationInfo;
6949 uint32_t enabledLayerCount;
6950 const char* const* ppEnabledLayerNames;
6951 uint32_t enabledExtensionCount;
6952 const char* const* ppEnabledExtensionNames;
6953 };
6954 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6955
6956 struct MemoryAllocateInfo
6957 {
6958 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6959 : sType( StructureType::eMemoryAllocateInfo )
6960 , pNext( nullptr )
6961 , allocationSize( allocationSize_ )
6962 , memoryTypeIndex( memoryTypeIndex_ )
6963 {
6964 }
6965
6966 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6967 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006968 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006969 }
6970
6971 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6972 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006973 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006974 return *this;
6975 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006976 MemoryAllocateInfo& setPNext( const void* pNext_ )
6977 {
6978 pNext = pNext_;
6979 return *this;
6980 }
6981
6982 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6983 {
6984 allocationSize = allocationSize_;
6985 return *this;
6986 }
6987
6988 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6989 {
6990 memoryTypeIndex = memoryTypeIndex_;
6991 return *this;
6992 }
6993
6994 operator const VkMemoryAllocateInfo&() const
6995 {
6996 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6997 }
6998
6999 bool operator==( MemoryAllocateInfo const& rhs ) const
7000 {
7001 return ( sType == rhs.sType )
7002 && ( pNext == rhs.pNext )
7003 && ( allocationSize == rhs.allocationSize )
7004 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7005 }
7006
7007 bool operator!=( MemoryAllocateInfo const& rhs ) const
7008 {
7009 return !operator==( rhs );
7010 }
7011
7012 private:
7013 StructureType sType;
7014
7015 public:
7016 const void* pNext;
7017 DeviceSize allocationSize;
7018 uint32_t memoryTypeIndex;
7019 };
7020 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7021
7022 struct MappedMemoryRange
7023 {
7024 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7025 : sType( StructureType::eMappedMemoryRange )
7026 , pNext( nullptr )
7027 , memory( memory_ )
7028 , offset( offset_ )
7029 , size( size_ )
7030 {
7031 }
7032
7033 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7034 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007035 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007036 }
7037
7038 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007040 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007041 return *this;
7042 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007043 MappedMemoryRange& setPNext( const void* pNext_ )
7044 {
7045 pNext = pNext_;
7046 return *this;
7047 }
7048
7049 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7050 {
7051 memory = memory_;
7052 return *this;
7053 }
7054
7055 MappedMemoryRange& setOffset( DeviceSize offset_ )
7056 {
7057 offset = offset_;
7058 return *this;
7059 }
7060
7061 MappedMemoryRange& setSize( DeviceSize size_ )
7062 {
7063 size = size_;
7064 return *this;
7065 }
7066
7067 operator const VkMappedMemoryRange&() const
7068 {
7069 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7070 }
7071
7072 bool operator==( MappedMemoryRange const& rhs ) const
7073 {
7074 return ( sType == rhs.sType )
7075 && ( pNext == rhs.pNext )
7076 && ( memory == rhs.memory )
7077 && ( offset == rhs.offset )
7078 && ( size == rhs.size );
7079 }
7080
7081 bool operator!=( MappedMemoryRange const& rhs ) const
7082 {
7083 return !operator==( rhs );
7084 }
7085
7086 private:
7087 StructureType sType;
7088
7089 public:
7090 const void* pNext;
7091 DeviceMemory memory;
7092 DeviceSize offset;
7093 DeviceSize size;
7094 };
7095 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7096
7097 struct WriteDescriptorSet
7098 {
7099 WriteDescriptorSet( DescriptorSet dstSet_ = DescriptorSet(), uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, const DescriptorImageInfo* pImageInfo_ = nullptr, const DescriptorBufferInfo* pBufferInfo_ = nullptr, const BufferView* pTexelBufferView_ = nullptr )
7100 : sType( StructureType::eWriteDescriptorSet )
7101 , pNext( nullptr )
7102 , dstSet( dstSet_ )
7103 , dstBinding( dstBinding_ )
7104 , dstArrayElement( dstArrayElement_ )
7105 , descriptorCount( descriptorCount_ )
7106 , descriptorType( descriptorType_ )
7107 , pImageInfo( pImageInfo_ )
7108 , pBufferInfo( pBufferInfo_ )
7109 , pTexelBufferView( pTexelBufferView_ )
7110 {
7111 }
7112
7113 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7114 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007115 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007116 }
7117
7118 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7119 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007120 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007121 return *this;
7122 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007123 WriteDescriptorSet& setPNext( const void* pNext_ )
7124 {
7125 pNext = pNext_;
7126 return *this;
7127 }
7128
7129 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7130 {
7131 dstSet = dstSet_;
7132 return *this;
7133 }
7134
7135 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7136 {
7137 dstBinding = dstBinding_;
7138 return *this;
7139 }
7140
7141 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7142 {
7143 dstArrayElement = dstArrayElement_;
7144 return *this;
7145 }
7146
7147 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7148 {
7149 descriptorCount = descriptorCount_;
7150 return *this;
7151 }
7152
7153 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7154 {
7155 descriptorType = descriptorType_;
7156 return *this;
7157 }
7158
7159 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7160 {
7161 pImageInfo = pImageInfo_;
7162 return *this;
7163 }
7164
7165 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7166 {
7167 pBufferInfo = pBufferInfo_;
7168 return *this;
7169 }
7170
7171 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7172 {
7173 pTexelBufferView = pTexelBufferView_;
7174 return *this;
7175 }
7176
7177 operator const VkWriteDescriptorSet&() const
7178 {
7179 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7180 }
7181
7182 bool operator==( WriteDescriptorSet const& rhs ) const
7183 {
7184 return ( sType == rhs.sType )
7185 && ( pNext == rhs.pNext )
7186 && ( dstSet == rhs.dstSet )
7187 && ( dstBinding == rhs.dstBinding )
7188 && ( dstArrayElement == rhs.dstArrayElement )
7189 && ( descriptorCount == rhs.descriptorCount )
7190 && ( descriptorType == rhs.descriptorType )
7191 && ( pImageInfo == rhs.pImageInfo )
7192 && ( pBufferInfo == rhs.pBufferInfo )
7193 && ( pTexelBufferView == rhs.pTexelBufferView );
7194 }
7195
7196 bool operator!=( WriteDescriptorSet const& rhs ) const
7197 {
7198 return !operator==( rhs );
7199 }
7200
7201 private:
7202 StructureType sType;
7203
7204 public:
7205 const void* pNext;
7206 DescriptorSet dstSet;
7207 uint32_t dstBinding;
7208 uint32_t dstArrayElement;
7209 uint32_t descriptorCount;
7210 DescriptorType descriptorType;
7211 const DescriptorImageInfo* pImageInfo;
7212 const DescriptorBufferInfo* pBufferInfo;
7213 const BufferView* pTexelBufferView;
7214 };
7215 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7216
7217 struct CopyDescriptorSet
7218 {
7219 CopyDescriptorSet( DescriptorSet srcSet_ = DescriptorSet(), uint32_t srcBinding_ = 0, uint32_t srcArrayElement_ = 0, DescriptorSet dstSet_ = DescriptorSet(), uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0 )
7220 : sType( StructureType::eCopyDescriptorSet )
7221 , pNext( nullptr )
7222 , srcSet( srcSet_ )
7223 , srcBinding( srcBinding_ )
7224 , srcArrayElement( srcArrayElement_ )
7225 , dstSet( dstSet_ )
7226 , dstBinding( dstBinding_ )
7227 , dstArrayElement( dstArrayElement_ )
7228 , descriptorCount( descriptorCount_ )
7229 {
7230 }
7231
7232 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7233 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007234 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007235 }
7236
7237 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007239 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007240 return *this;
7241 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007242 CopyDescriptorSet& setPNext( const void* pNext_ )
7243 {
7244 pNext = pNext_;
7245 return *this;
7246 }
7247
7248 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7249 {
7250 srcSet = srcSet_;
7251 return *this;
7252 }
7253
7254 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7255 {
7256 srcBinding = srcBinding_;
7257 return *this;
7258 }
7259
7260 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7261 {
7262 srcArrayElement = srcArrayElement_;
7263 return *this;
7264 }
7265
7266 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7267 {
7268 dstSet = dstSet_;
7269 return *this;
7270 }
7271
7272 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7273 {
7274 dstBinding = dstBinding_;
7275 return *this;
7276 }
7277
7278 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7279 {
7280 dstArrayElement = dstArrayElement_;
7281 return *this;
7282 }
7283
7284 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7285 {
7286 descriptorCount = descriptorCount_;
7287 return *this;
7288 }
7289
7290 operator const VkCopyDescriptorSet&() const
7291 {
7292 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7293 }
7294
7295 bool operator==( CopyDescriptorSet const& rhs ) const
7296 {
7297 return ( sType == rhs.sType )
7298 && ( pNext == rhs.pNext )
7299 && ( srcSet == rhs.srcSet )
7300 && ( srcBinding == rhs.srcBinding )
7301 && ( srcArrayElement == rhs.srcArrayElement )
7302 && ( dstSet == rhs.dstSet )
7303 && ( dstBinding == rhs.dstBinding )
7304 && ( dstArrayElement == rhs.dstArrayElement )
7305 && ( descriptorCount == rhs.descriptorCount );
7306 }
7307
7308 bool operator!=( CopyDescriptorSet const& rhs ) const
7309 {
7310 return !operator==( rhs );
7311 }
7312
7313 private:
7314 StructureType sType;
7315
7316 public:
7317 const void* pNext;
7318 DescriptorSet srcSet;
7319 uint32_t srcBinding;
7320 uint32_t srcArrayElement;
7321 DescriptorSet dstSet;
7322 uint32_t dstBinding;
7323 uint32_t dstArrayElement;
7324 uint32_t descriptorCount;
7325 };
7326 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7327
7328 struct BufferViewCreateInfo
7329 {
7330 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7331 : sType( StructureType::eBufferViewCreateInfo )
7332 , pNext( nullptr )
7333 , flags( flags_ )
7334 , buffer( buffer_ )
7335 , format( format_ )
7336 , offset( offset_ )
7337 , range( range_ )
7338 {
7339 }
7340
7341 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7342 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007343 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007344 }
7345
7346 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7347 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007348 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007349 return *this;
7350 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007351 BufferViewCreateInfo& setPNext( const void* pNext_ )
7352 {
7353 pNext = pNext_;
7354 return *this;
7355 }
7356
7357 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7358 {
7359 flags = flags_;
7360 return *this;
7361 }
7362
7363 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7364 {
7365 buffer = buffer_;
7366 return *this;
7367 }
7368
7369 BufferViewCreateInfo& setFormat( Format format_ )
7370 {
7371 format = format_;
7372 return *this;
7373 }
7374
7375 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7376 {
7377 offset = offset_;
7378 return *this;
7379 }
7380
7381 BufferViewCreateInfo& setRange( DeviceSize range_ )
7382 {
7383 range = range_;
7384 return *this;
7385 }
7386
7387 operator const VkBufferViewCreateInfo&() const
7388 {
7389 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7390 }
7391
7392 bool operator==( BufferViewCreateInfo const& rhs ) const
7393 {
7394 return ( sType == rhs.sType )
7395 && ( pNext == rhs.pNext )
7396 && ( flags == rhs.flags )
7397 && ( buffer == rhs.buffer )
7398 && ( format == rhs.format )
7399 && ( offset == rhs.offset )
7400 && ( range == rhs.range );
7401 }
7402
7403 bool operator!=( BufferViewCreateInfo const& rhs ) const
7404 {
7405 return !operator==( rhs );
7406 }
7407
7408 private:
7409 StructureType sType;
7410
7411 public:
7412 const void* pNext;
7413 BufferViewCreateFlags flags;
7414 Buffer buffer;
7415 Format format;
7416 DeviceSize offset;
7417 DeviceSize range;
7418 };
7419 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7420
7421 struct ShaderModuleCreateInfo
7422 {
7423 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7424 : sType( StructureType::eShaderModuleCreateInfo )
7425 , pNext( nullptr )
7426 , flags( flags_ )
7427 , codeSize( codeSize_ )
7428 , pCode( pCode_ )
7429 {
7430 }
7431
7432 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7433 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007434 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007435 }
7436
7437 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7438 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007439 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007440 return *this;
7441 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007442 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7443 {
7444 pNext = pNext_;
7445 return *this;
7446 }
7447
7448 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7449 {
7450 flags = flags_;
7451 return *this;
7452 }
7453
7454 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7455 {
7456 codeSize = codeSize_;
7457 return *this;
7458 }
7459
7460 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7461 {
7462 pCode = pCode_;
7463 return *this;
7464 }
7465
7466 operator const VkShaderModuleCreateInfo&() const
7467 {
7468 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7469 }
7470
7471 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7472 {
7473 return ( sType == rhs.sType )
7474 && ( pNext == rhs.pNext )
7475 && ( flags == rhs.flags )
7476 && ( codeSize == rhs.codeSize )
7477 && ( pCode == rhs.pCode );
7478 }
7479
7480 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7481 {
7482 return !operator==( rhs );
7483 }
7484
7485 private:
7486 StructureType sType;
7487
7488 public:
7489 const void* pNext;
7490 ShaderModuleCreateFlags flags;
7491 size_t codeSize;
7492 const uint32_t* pCode;
7493 };
7494 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7495
7496 struct DescriptorSetAllocateInfo
7497 {
7498 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7499 : sType( StructureType::eDescriptorSetAllocateInfo )
7500 , pNext( nullptr )
7501 , descriptorPool( descriptorPool_ )
7502 , descriptorSetCount( descriptorSetCount_ )
7503 , pSetLayouts( pSetLayouts_ )
7504 {
7505 }
7506
7507 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7508 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007509 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007510 }
7511
7512 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7513 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007514 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007515 return *this;
7516 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007517 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7518 {
7519 pNext = pNext_;
7520 return *this;
7521 }
7522
7523 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7524 {
7525 descriptorPool = descriptorPool_;
7526 return *this;
7527 }
7528
7529 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7530 {
7531 descriptorSetCount = descriptorSetCount_;
7532 return *this;
7533 }
7534
7535 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7536 {
7537 pSetLayouts = pSetLayouts_;
7538 return *this;
7539 }
7540
7541 operator const VkDescriptorSetAllocateInfo&() const
7542 {
7543 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7544 }
7545
7546 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7547 {
7548 return ( sType == rhs.sType )
7549 && ( pNext == rhs.pNext )
7550 && ( descriptorPool == rhs.descriptorPool )
7551 && ( descriptorSetCount == rhs.descriptorSetCount )
7552 && ( pSetLayouts == rhs.pSetLayouts );
7553 }
7554
7555 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7556 {
7557 return !operator==( rhs );
7558 }
7559
7560 private:
7561 StructureType sType;
7562
7563 public:
7564 const void* pNext;
7565 DescriptorPool descriptorPool;
7566 uint32_t descriptorSetCount;
7567 const DescriptorSetLayout* pSetLayouts;
7568 };
7569 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7570
7571 struct PipelineVertexInputStateCreateInfo
7572 {
7573 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7574 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7575 , pNext( nullptr )
7576 , flags( flags_ )
7577 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7578 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7579 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7580 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7581 {
7582 }
7583
7584 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7585 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007586 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007587 }
7588
7589 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007591 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007592 return *this;
7593 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007594 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7595 {
7596 pNext = pNext_;
7597 return *this;
7598 }
7599
7600 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7601 {
7602 flags = flags_;
7603 return *this;
7604 }
7605
7606 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7607 {
7608 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7609 return *this;
7610 }
7611
7612 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7613 {
7614 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7615 return *this;
7616 }
7617
7618 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7619 {
7620 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7621 return *this;
7622 }
7623
7624 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7625 {
7626 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7627 return *this;
7628 }
7629
7630 operator const VkPipelineVertexInputStateCreateInfo&() const
7631 {
7632 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7633 }
7634
7635 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7636 {
7637 return ( sType == rhs.sType )
7638 && ( pNext == rhs.pNext )
7639 && ( flags == rhs.flags )
7640 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7641 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7642 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7643 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7644 }
7645
7646 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7647 {
7648 return !operator==( rhs );
7649 }
7650
7651 private:
7652 StructureType sType;
7653
7654 public:
7655 const void* pNext;
7656 PipelineVertexInputStateCreateFlags flags;
7657 uint32_t vertexBindingDescriptionCount;
7658 const VertexInputBindingDescription* pVertexBindingDescriptions;
7659 uint32_t vertexAttributeDescriptionCount;
7660 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7661 };
7662 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7663
7664 struct PipelineInputAssemblyStateCreateInfo
7665 {
7666 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7667 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7668 , pNext( nullptr )
7669 , flags( flags_ )
7670 , topology( topology_ )
7671 , primitiveRestartEnable( primitiveRestartEnable_ )
7672 {
7673 }
7674
7675 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007677 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007678 }
7679
7680 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7681 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007682 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007683 return *this;
7684 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007685 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7686 {
7687 pNext = pNext_;
7688 return *this;
7689 }
7690
7691 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7692 {
7693 flags = flags_;
7694 return *this;
7695 }
7696
7697 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7698 {
7699 topology = topology_;
7700 return *this;
7701 }
7702
7703 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7704 {
7705 primitiveRestartEnable = primitiveRestartEnable_;
7706 return *this;
7707 }
7708
7709 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7710 {
7711 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7712 }
7713
7714 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7715 {
7716 return ( sType == rhs.sType )
7717 && ( pNext == rhs.pNext )
7718 && ( flags == rhs.flags )
7719 && ( topology == rhs.topology )
7720 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7721 }
7722
7723 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7724 {
7725 return !operator==( rhs );
7726 }
7727
7728 private:
7729 StructureType sType;
7730
7731 public:
7732 const void* pNext;
7733 PipelineInputAssemblyStateCreateFlags flags;
7734 PrimitiveTopology topology;
7735 Bool32 primitiveRestartEnable;
7736 };
7737 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7738
7739 struct PipelineTessellationStateCreateInfo
7740 {
7741 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7742 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7743 , pNext( nullptr )
7744 , flags( flags_ )
7745 , patchControlPoints( patchControlPoints_ )
7746 {
7747 }
7748
7749 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7750 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007751 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007752 }
7753
7754 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007756 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007757 return *this;
7758 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007759 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7760 {
7761 pNext = pNext_;
7762 return *this;
7763 }
7764
7765 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7766 {
7767 flags = flags_;
7768 return *this;
7769 }
7770
7771 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7772 {
7773 patchControlPoints = patchControlPoints_;
7774 return *this;
7775 }
7776
7777 operator const VkPipelineTessellationStateCreateInfo&() const
7778 {
7779 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7780 }
7781
7782 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7783 {
7784 return ( sType == rhs.sType )
7785 && ( pNext == rhs.pNext )
7786 && ( flags == rhs.flags )
7787 && ( patchControlPoints == rhs.patchControlPoints );
7788 }
7789
7790 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7791 {
7792 return !operator==( rhs );
7793 }
7794
7795 private:
7796 StructureType sType;
7797
7798 public:
7799 const void* pNext;
7800 PipelineTessellationStateCreateFlags flags;
7801 uint32_t patchControlPoints;
7802 };
7803 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7804
7805 struct PipelineViewportStateCreateInfo
7806 {
7807 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7808 : sType( StructureType::ePipelineViewportStateCreateInfo )
7809 , pNext( nullptr )
7810 , flags( flags_ )
7811 , viewportCount( viewportCount_ )
7812 , pViewports( pViewports_ )
7813 , scissorCount( scissorCount_ )
7814 , pScissors( pScissors_ )
7815 {
7816 }
7817
7818 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7819 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007820 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007821 }
7822
7823 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007825 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007826 return *this;
7827 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007828 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7829 {
7830 pNext = pNext_;
7831 return *this;
7832 }
7833
7834 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7835 {
7836 flags = flags_;
7837 return *this;
7838 }
7839
7840 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7841 {
7842 viewportCount = viewportCount_;
7843 return *this;
7844 }
7845
7846 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7847 {
7848 pViewports = pViewports_;
7849 return *this;
7850 }
7851
7852 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7853 {
7854 scissorCount = scissorCount_;
7855 return *this;
7856 }
7857
7858 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7859 {
7860 pScissors = pScissors_;
7861 return *this;
7862 }
7863
7864 operator const VkPipelineViewportStateCreateInfo&() const
7865 {
7866 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7867 }
7868
7869 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7870 {
7871 return ( sType == rhs.sType )
7872 && ( pNext == rhs.pNext )
7873 && ( flags == rhs.flags )
7874 && ( viewportCount == rhs.viewportCount )
7875 && ( pViewports == rhs.pViewports )
7876 && ( scissorCount == rhs.scissorCount )
7877 && ( pScissors == rhs.pScissors );
7878 }
7879
7880 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7881 {
7882 return !operator==( rhs );
7883 }
7884
7885 private:
7886 StructureType sType;
7887
7888 public:
7889 const void* pNext;
7890 PipelineViewportStateCreateFlags flags;
7891 uint32_t viewportCount;
7892 const Viewport* pViewports;
7893 uint32_t scissorCount;
7894 const Rect2D* pScissors;
7895 };
7896 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7897
7898 struct PipelineRasterizationStateCreateInfo
7899 {
7900 PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateFlags flags_ = PipelineRasterizationStateCreateFlags(), Bool32 depthClampEnable_ = 0, Bool32 rasterizerDiscardEnable_ = 0, PolygonMode polygonMode_ = PolygonMode::eFill, CullModeFlags cullMode_ = CullModeFlags(), FrontFace frontFace_ = FrontFace::eCounterClockwise, Bool32 depthBiasEnable_ = 0, float depthBiasConstantFactor_ = 0, float depthBiasClamp_ = 0, float depthBiasSlopeFactor_ = 0, float lineWidth_ = 0 )
7901 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7902 , pNext( nullptr )
7903 , flags( flags_ )
7904 , depthClampEnable( depthClampEnable_ )
7905 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7906 , polygonMode( polygonMode_ )
7907 , cullMode( cullMode_ )
7908 , frontFace( frontFace_ )
7909 , depthBiasEnable( depthBiasEnable_ )
7910 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7911 , depthBiasClamp( depthBiasClamp_ )
7912 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7913 , lineWidth( lineWidth_ )
7914 {
7915 }
7916
7917 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7918 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007919 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007920 }
7921
7922 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7923 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007924 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007925 return *this;
7926 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007927 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7928 {
7929 pNext = pNext_;
7930 return *this;
7931 }
7932
7933 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7934 {
7935 flags = flags_;
7936 return *this;
7937 }
7938
7939 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7940 {
7941 depthClampEnable = depthClampEnable_;
7942 return *this;
7943 }
7944
7945 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7946 {
7947 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7948 return *this;
7949 }
7950
7951 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7952 {
7953 polygonMode = polygonMode_;
7954 return *this;
7955 }
7956
7957 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7958 {
7959 cullMode = cullMode_;
7960 return *this;
7961 }
7962
7963 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7964 {
7965 frontFace = frontFace_;
7966 return *this;
7967 }
7968
7969 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7970 {
7971 depthBiasEnable = depthBiasEnable_;
7972 return *this;
7973 }
7974
7975 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7976 {
7977 depthBiasConstantFactor = depthBiasConstantFactor_;
7978 return *this;
7979 }
7980
7981 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7982 {
7983 depthBiasClamp = depthBiasClamp_;
7984 return *this;
7985 }
7986
7987 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7988 {
7989 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7990 return *this;
7991 }
7992
7993 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7994 {
7995 lineWidth = lineWidth_;
7996 return *this;
7997 }
7998
7999 operator const VkPipelineRasterizationStateCreateInfo&() const
8000 {
8001 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8002 }
8003
8004 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8005 {
8006 return ( sType == rhs.sType )
8007 && ( pNext == rhs.pNext )
8008 && ( flags == rhs.flags )
8009 && ( depthClampEnable == rhs.depthClampEnable )
8010 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8011 && ( polygonMode == rhs.polygonMode )
8012 && ( cullMode == rhs.cullMode )
8013 && ( frontFace == rhs.frontFace )
8014 && ( depthBiasEnable == rhs.depthBiasEnable )
8015 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8016 && ( depthBiasClamp == rhs.depthBiasClamp )
8017 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8018 && ( lineWidth == rhs.lineWidth );
8019 }
8020
8021 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8022 {
8023 return !operator==( rhs );
8024 }
8025
8026 private:
8027 StructureType sType;
8028
8029 public:
8030 const void* pNext;
8031 PipelineRasterizationStateCreateFlags flags;
8032 Bool32 depthClampEnable;
8033 Bool32 rasterizerDiscardEnable;
8034 PolygonMode polygonMode;
8035 CullModeFlags cullMode;
8036 FrontFace frontFace;
8037 Bool32 depthBiasEnable;
8038 float depthBiasConstantFactor;
8039 float depthBiasClamp;
8040 float depthBiasSlopeFactor;
8041 float lineWidth;
8042 };
8043 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8044
8045 struct PipelineDepthStencilStateCreateInfo
8046 {
8047 PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateFlags flags_ = PipelineDepthStencilStateCreateFlags(), Bool32 depthTestEnable_ = 0, Bool32 depthWriteEnable_ = 0, CompareOp depthCompareOp_ = CompareOp::eNever, Bool32 depthBoundsTestEnable_ = 0, Bool32 stencilTestEnable_ = 0, StencilOpState front_ = StencilOpState(), StencilOpState back_ = StencilOpState(), float minDepthBounds_ = 0, float maxDepthBounds_ = 0 )
8048 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8049 , pNext( nullptr )
8050 , flags( flags_ )
8051 , depthTestEnable( depthTestEnable_ )
8052 , depthWriteEnable( depthWriteEnable_ )
8053 , depthCompareOp( depthCompareOp_ )
8054 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8055 , stencilTestEnable( stencilTestEnable_ )
8056 , front( front_ )
8057 , back( back_ )
8058 , minDepthBounds( minDepthBounds_ )
8059 , maxDepthBounds( maxDepthBounds_ )
8060 {
8061 }
8062
8063 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008065 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008066 }
8067
8068 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008070 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008071 return *this;
8072 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008073 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8074 {
8075 pNext = pNext_;
8076 return *this;
8077 }
8078
8079 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8080 {
8081 flags = flags_;
8082 return *this;
8083 }
8084
8085 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8086 {
8087 depthTestEnable = depthTestEnable_;
8088 return *this;
8089 }
8090
8091 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8092 {
8093 depthWriteEnable = depthWriteEnable_;
8094 return *this;
8095 }
8096
8097 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8098 {
8099 depthCompareOp = depthCompareOp_;
8100 return *this;
8101 }
8102
8103 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8104 {
8105 depthBoundsTestEnable = depthBoundsTestEnable_;
8106 return *this;
8107 }
8108
8109 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8110 {
8111 stencilTestEnable = stencilTestEnable_;
8112 return *this;
8113 }
8114
8115 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8116 {
8117 front = front_;
8118 return *this;
8119 }
8120
8121 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8122 {
8123 back = back_;
8124 return *this;
8125 }
8126
8127 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8128 {
8129 minDepthBounds = minDepthBounds_;
8130 return *this;
8131 }
8132
8133 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8134 {
8135 maxDepthBounds = maxDepthBounds_;
8136 return *this;
8137 }
8138
8139 operator const VkPipelineDepthStencilStateCreateInfo&() const
8140 {
8141 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8142 }
8143
8144 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8145 {
8146 return ( sType == rhs.sType )
8147 && ( pNext == rhs.pNext )
8148 && ( flags == rhs.flags )
8149 && ( depthTestEnable == rhs.depthTestEnable )
8150 && ( depthWriteEnable == rhs.depthWriteEnable )
8151 && ( depthCompareOp == rhs.depthCompareOp )
8152 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8153 && ( stencilTestEnable == rhs.stencilTestEnable )
8154 && ( front == rhs.front )
8155 && ( back == rhs.back )
8156 && ( minDepthBounds == rhs.minDepthBounds )
8157 && ( maxDepthBounds == rhs.maxDepthBounds );
8158 }
8159
8160 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8161 {
8162 return !operator==( rhs );
8163 }
8164
8165 private:
8166 StructureType sType;
8167
8168 public:
8169 const void* pNext;
8170 PipelineDepthStencilStateCreateFlags flags;
8171 Bool32 depthTestEnable;
8172 Bool32 depthWriteEnable;
8173 CompareOp depthCompareOp;
8174 Bool32 depthBoundsTestEnable;
8175 Bool32 stencilTestEnable;
8176 StencilOpState front;
8177 StencilOpState back;
8178 float minDepthBounds;
8179 float maxDepthBounds;
8180 };
8181 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8182
8183 struct PipelineCacheCreateInfo
8184 {
8185 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8186 : sType( StructureType::ePipelineCacheCreateInfo )
8187 , pNext( nullptr )
8188 , flags( flags_ )
8189 , initialDataSize( initialDataSize_ )
8190 , pInitialData( pInitialData_ )
8191 {
8192 }
8193
8194 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8195 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008196 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008197 }
8198
8199 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8200 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008201 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008202 return *this;
8203 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008204 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8205 {
8206 pNext = pNext_;
8207 return *this;
8208 }
8209
8210 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8211 {
8212 flags = flags_;
8213 return *this;
8214 }
8215
8216 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8217 {
8218 initialDataSize = initialDataSize_;
8219 return *this;
8220 }
8221
8222 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8223 {
8224 pInitialData = pInitialData_;
8225 return *this;
8226 }
8227
8228 operator const VkPipelineCacheCreateInfo&() const
8229 {
8230 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8231 }
8232
8233 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8234 {
8235 return ( sType == rhs.sType )
8236 && ( pNext == rhs.pNext )
8237 && ( flags == rhs.flags )
8238 && ( initialDataSize == rhs.initialDataSize )
8239 && ( pInitialData == rhs.pInitialData );
8240 }
8241
8242 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8243 {
8244 return !operator==( rhs );
8245 }
8246
8247 private:
8248 StructureType sType;
8249
8250 public:
8251 const void* pNext;
8252 PipelineCacheCreateFlags flags;
8253 size_t initialDataSize;
8254 const void* pInitialData;
8255 };
8256 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8257
8258 struct SamplerCreateInfo
8259 {
8260 SamplerCreateInfo( SamplerCreateFlags flags_ = SamplerCreateFlags(), Filter magFilter_ = Filter::eNearest, Filter minFilter_ = Filter::eNearest, SamplerMipmapMode mipmapMode_ = SamplerMipmapMode::eNearest, SamplerAddressMode addressModeU_ = SamplerAddressMode::eRepeat, SamplerAddressMode addressModeV_ = SamplerAddressMode::eRepeat, SamplerAddressMode addressModeW_ = SamplerAddressMode::eRepeat, float mipLodBias_ = 0, Bool32 anisotropyEnable_ = 0, float maxAnisotropy_ = 0, Bool32 compareEnable_ = 0, CompareOp compareOp_ = CompareOp::eNever, float minLod_ = 0, float maxLod_ = 0, BorderColor borderColor_ = BorderColor::eFloatTransparentBlack, Bool32 unnormalizedCoordinates_ = 0 )
8261 : sType( StructureType::eSamplerCreateInfo )
8262 , pNext( nullptr )
8263 , flags( flags_ )
8264 , magFilter( magFilter_ )
8265 , minFilter( minFilter_ )
8266 , mipmapMode( mipmapMode_ )
8267 , addressModeU( addressModeU_ )
8268 , addressModeV( addressModeV_ )
8269 , addressModeW( addressModeW_ )
8270 , mipLodBias( mipLodBias_ )
8271 , anisotropyEnable( anisotropyEnable_ )
8272 , maxAnisotropy( maxAnisotropy_ )
8273 , compareEnable( compareEnable_ )
8274 , compareOp( compareOp_ )
8275 , minLod( minLod_ )
8276 , maxLod( maxLod_ )
8277 , borderColor( borderColor_ )
8278 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8279 {
8280 }
8281
8282 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8283 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008284 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008285 }
8286
8287 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8288 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008289 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008290 return *this;
8291 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008292 SamplerCreateInfo& setPNext( const void* pNext_ )
8293 {
8294 pNext = pNext_;
8295 return *this;
8296 }
8297
8298 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8299 {
8300 flags = flags_;
8301 return *this;
8302 }
8303
8304 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8305 {
8306 magFilter = magFilter_;
8307 return *this;
8308 }
8309
8310 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8311 {
8312 minFilter = minFilter_;
8313 return *this;
8314 }
8315
8316 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8317 {
8318 mipmapMode = mipmapMode_;
8319 return *this;
8320 }
8321
8322 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8323 {
8324 addressModeU = addressModeU_;
8325 return *this;
8326 }
8327
8328 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8329 {
8330 addressModeV = addressModeV_;
8331 return *this;
8332 }
8333
8334 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8335 {
8336 addressModeW = addressModeW_;
8337 return *this;
8338 }
8339
8340 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8341 {
8342 mipLodBias = mipLodBias_;
8343 return *this;
8344 }
8345
8346 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8347 {
8348 anisotropyEnable = anisotropyEnable_;
8349 return *this;
8350 }
8351
8352 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8353 {
8354 maxAnisotropy = maxAnisotropy_;
8355 return *this;
8356 }
8357
8358 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8359 {
8360 compareEnable = compareEnable_;
8361 return *this;
8362 }
8363
8364 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8365 {
8366 compareOp = compareOp_;
8367 return *this;
8368 }
8369
8370 SamplerCreateInfo& setMinLod( float minLod_ )
8371 {
8372 minLod = minLod_;
8373 return *this;
8374 }
8375
8376 SamplerCreateInfo& setMaxLod( float maxLod_ )
8377 {
8378 maxLod = maxLod_;
8379 return *this;
8380 }
8381
8382 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8383 {
8384 borderColor = borderColor_;
8385 return *this;
8386 }
8387
8388 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8389 {
8390 unnormalizedCoordinates = unnormalizedCoordinates_;
8391 return *this;
8392 }
8393
8394 operator const VkSamplerCreateInfo&() const
8395 {
8396 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8397 }
8398
8399 bool operator==( SamplerCreateInfo const& rhs ) const
8400 {
8401 return ( sType == rhs.sType )
8402 && ( pNext == rhs.pNext )
8403 && ( flags == rhs.flags )
8404 && ( magFilter == rhs.magFilter )
8405 && ( minFilter == rhs.minFilter )
8406 && ( mipmapMode == rhs.mipmapMode )
8407 && ( addressModeU == rhs.addressModeU )
8408 && ( addressModeV == rhs.addressModeV )
8409 && ( addressModeW == rhs.addressModeW )
8410 && ( mipLodBias == rhs.mipLodBias )
8411 && ( anisotropyEnable == rhs.anisotropyEnable )
8412 && ( maxAnisotropy == rhs.maxAnisotropy )
8413 && ( compareEnable == rhs.compareEnable )
8414 && ( compareOp == rhs.compareOp )
8415 && ( minLod == rhs.minLod )
8416 && ( maxLod == rhs.maxLod )
8417 && ( borderColor == rhs.borderColor )
8418 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8419 }
8420
8421 bool operator!=( SamplerCreateInfo const& rhs ) const
8422 {
8423 return !operator==( rhs );
8424 }
8425
8426 private:
8427 StructureType sType;
8428
8429 public:
8430 const void* pNext;
8431 SamplerCreateFlags flags;
8432 Filter magFilter;
8433 Filter minFilter;
8434 SamplerMipmapMode mipmapMode;
8435 SamplerAddressMode addressModeU;
8436 SamplerAddressMode addressModeV;
8437 SamplerAddressMode addressModeW;
8438 float mipLodBias;
8439 Bool32 anisotropyEnable;
8440 float maxAnisotropy;
8441 Bool32 compareEnable;
8442 CompareOp compareOp;
8443 float minLod;
8444 float maxLod;
8445 BorderColor borderColor;
8446 Bool32 unnormalizedCoordinates;
8447 };
8448 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8449
8450 struct CommandBufferAllocateInfo
8451 {
8452 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8453 : sType( StructureType::eCommandBufferAllocateInfo )
8454 , pNext( nullptr )
8455 , commandPool( commandPool_ )
8456 , level( level_ )
8457 , commandBufferCount( commandBufferCount_ )
8458 {
8459 }
8460
8461 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008463 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008464 }
8465
8466 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008468 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008469 return *this;
8470 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008471 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8472 {
8473 pNext = pNext_;
8474 return *this;
8475 }
8476
8477 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8478 {
8479 commandPool = commandPool_;
8480 return *this;
8481 }
8482
8483 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8484 {
8485 level = level_;
8486 return *this;
8487 }
8488
8489 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8490 {
8491 commandBufferCount = commandBufferCount_;
8492 return *this;
8493 }
8494
8495 operator const VkCommandBufferAllocateInfo&() const
8496 {
8497 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8498 }
8499
8500 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8501 {
8502 return ( sType == rhs.sType )
8503 && ( pNext == rhs.pNext )
8504 && ( commandPool == rhs.commandPool )
8505 && ( level == rhs.level )
8506 && ( commandBufferCount == rhs.commandBufferCount );
8507 }
8508
8509 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8510 {
8511 return !operator==( rhs );
8512 }
8513
8514 private:
8515 StructureType sType;
8516
8517 public:
8518 const void* pNext;
8519 CommandPool commandPool;
8520 CommandBufferLevel level;
8521 uint32_t commandBufferCount;
8522 };
8523 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8524
8525 struct RenderPassBeginInfo
8526 {
8527 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8528 : sType( StructureType::eRenderPassBeginInfo )
8529 , pNext( nullptr )
8530 , renderPass( renderPass_ )
8531 , framebuffer( framebuffer_ )
8532 , renderArea( renderArea_ )
8533 , clearValueCount( clearValueCount_ )
8534 , pClearValues( pClearValues_ )
8535 {
8536 }
8537
8538 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8539 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008540 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008541 }
8542
8543 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8544 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008545 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008546 return *this;
8547 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008548 RenderPassBeginInfo& setPNext( const void* pNext_ )
8549 {
8550 pNext = pNext_;
8551 return *this;
8552 }
8553
8554 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8555 {
8556 renderPass = renderPass_;
8557 return *this;
8558 }
8559
8560 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8561 {
8562 framebuffer = framebuffer_;
8563 return *this;
8564 }
8565
8566 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8567 {
8568 renderArea = renderArea_;
8569 return *this;
8570 }
8571
8572 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8573 {
8574 clearValueCount = clearValueCount_;
8575 return *this;
8576 }
8577
8578 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8579 {
8580 pClearValues = pClearValues_;
8581 return *this;
8582 }
8583
8584 operator const VkRenderPassBeginInfo&() const
8585 {
8586 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8587 }
8588
8589 bool operator==( RenderPassBeginInfo const& rhs ) const
8590 {
8591 return ( sType == rhs.sType )
8592 && ( pNext == rhs.pNext )
8593 && ( renderPass == rhs.renderPass )
8594 && ( framebuffer == rhs.framebuffer )
8595 && ( renderArea == rhs.renderArea )
8596 && ( clearValueCount == rhs.clearValueCount )
8597 && ( pClearValues == rhs.pClearValues );
8598 }
8599
8600 bool operator!=( RenderPassBeginInfo const& rhs ) const
8601 {
8602 return !operator==( rhs );
8603 }
8604
8605 private:
8606 StructureType sType;
8607
8608 public:
8609 const void* pNext;
8610 RenderPass renderPass;
8611 Framebuffer framebuffer;
8612 Rect2D renderArea;
8613 uint32_t clearValueCount;
8614 const ClearValue* pClearValues;
8615 };
8616 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8617
8618 struct EventCreateInfo
8619 {
8620 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8621 : sType( StructureType::eEventCreateInfo )
8622 , pNext( nullptr )
8623 , flags( flags_ )
8624 {
8625 }
8626
8627 EventCreateInfo( VkEventCreateInfo const & rhs )
8628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008629 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008630 }
8631
8632 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008634 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008635 return *this;
8636 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008637 EventCreateInfo& setPNext( const void* pNext_ )
8638 {
8639 pNext = pNext_;
8640 return *this;
8641 }
8642
8643 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8644 {
8645 flags = flags_;
8646 return *this;
8647 }
8648
8649 operator const VkEventCreateInfo&() const
8650 {
8651 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8652 }
8653
8654 bool operator==( EventCreateInfo const& rhs ) const
8655 {
8656 return ( sType == rhs.sType )
8657 && ( pNext == rhs.pNext )
8658 && ( flags == rhs.flags );
8659 }
8660
8661 bool operator!=( EventCreateInfo const& rhs ) const
8662 {
8663 return !operator==( rhs );
8664 }
8665
8666 private:
8667 StructureType sType;
8668
8669 public:
8670 const void* pNext;
8671 EventCreateFlags flags;
8672 };
8673 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8674
8675 struct SemaphoreCreateInfo
8676 {
8677 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8678 : sType( StructureType::eSemaphoreCreateInfo )
8679 , pNext( nullptr )
8680 , flags( flags_ )
8681 {
8682 }
8683
8684 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008686 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008687 }
8688
8689 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8690 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008691 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008692 return *this;
8693 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008694 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8695 {
8696 pNext = pNext_;
8697 return *this;
8698 }
8699
8700 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8701 {
8702 flags = flags_;
8703 return *this;
8704 }
8705
8706 operator const VkSemaphoreCreateInfo&() const
8707 {
8708 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8709 }
8710
8711 bool operator==( SemaphoreCreateInfo const& rhs ) const
8712 {
8713 return ( sType == rhs.sType )
8714 && ( pNext == rhs.pNext )
8715 && ( flags == rhs.flags );
8716 }
8717
8718 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8719 {
8720 return !operator==( rhs );
8721 }
8722
8723 private:
8724 StructureType sType;
8725
8726 public:
8727 const void* pNext;
8728 SemaphoreCreateFlags flags;
8729 };
8730 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8731
8732 struct FramebufferCreateInfo
8733 {
8734 FramebufferCreateInfo( FramebufferCreateFlags flags_ = FramebufferCreateFlags(), RenderPass renderPass_ = RenderPass(), uint32_t attachmentCount_ = 0, const ImageView* pAttachments_ = nullptr, uint32_t width_ = 0, uint32_t height_ = 0, uint32_t layers_ = 0 )
8735 : sType( StructureType::eFramebufferCreateInfo )
8736 , pNext( nullptr )
8737 , flags( flags_ )
8738 , renderPass( renderPass_ )
8739 , attachmentCount( attachmentCount_ )
8740 , pAttachments( pAttachments_ )
8741 , width( width_ )
8742 , height( height_ )
8743 , layers( layers_ )
8744 {
8745 }
8746
8747 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8748 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008749 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008750 }
8751
8752 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008754 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008755 return *this;
8756 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008757 FramebufferCreateInfo& setPNext( const void* pNext_ )
8758 {
8759 pNext = pNext_;
8760 return *this;
8761 }
8762
8763 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8764 {
8765 flags = flags_;
8766 return *this;
8767 }
8768
8769 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8770 {
8771 renderPass = renderPass_;
8772 return *this;
8773 }
8774
8775 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8776 {
8777 attachmentCount = attachmentCount_;
8778 return *this;
8779 }
8780
8781 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8782 {
8783 pAttachments = pAttachments_;
8784 return *this;
8785 }
8786
8787 FramebufferCreateInfo& setWidth( uint32_t width_ )
8788 {
8789 width = width_;
8790 return *this;
8791 }
8792
8793 FramebufferCreateInfo& setHeight( uint32_t height_ )
8794 {
8795 height = height_;
8796 return *this;
8797 }
8798
8799 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8800 {
8801 layers = layers_;
8802 return *this;
8803 }
8804
8805 operator const VkFramebufferCreateInfo&() const
8806 {
8807 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8808 }
8809
8810 bool operator==( FramebufferCreateInfo const& rhs ) const
8811 {
8812 return ( sType == rhs.sType )
8813 && ( pNext == rhs.pNext )
8814 && ( flags == rhs.flags )
8815 && ( renderPass == rhs.renderPass )
8816 && ( attachmentCount == rhs.attachmentCount )
8817 && ( pAttachments == rhs.pAttachments )
8818 && ( width == rhs.width )
8819 && ( height == rhs.height )
8820 && ( layers == rhs.layers );
8821 }
8822
8823 bool operator!=( FramebufferCreateInfo const& rhs ) const
8824 {
8825 return !operator==( rhs );
8826 }
8827
8828 private:
8829 StructureType sType;
8830
8831 public:
8832 const void* pNext;
8833 FramebufferCreateFlags flags;
8834 RenderPass renderPass;
8835 uint32_t attachmentCount;
8836 const ImageView* pAttachments;
8837 uint32_t width;
8838 uint32_t height;
8839 uint32_t layers;
8840 };
8841 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8842
8843 struct DisplayModeCreateInfoKHR
8844 {
8845 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8846 : sType( StructureType::eDisplayModeCreateInfoKHR )
8847 , pNext( nullptr )
8848 , flags( flags_ )
8849 , parameters( parameters_ )
8850 {
8851 }
8852
8853 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8854 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008855 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008856 }
8857
8858 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008860 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008861 return *this;
8862 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008863 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8864 {
8865 pNext = pNext_;
8866 return *this;
8867 }
8868
8869 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8870 {
8871 flags = flags_;
8872 return *this;
8873 }
8874
8875 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8876 {
8877 parameters = parameters_;
8878 return *this;
8879 }
8880
8881 operator const VkDisplayModeCreateInfoKHR&() const
8882 {
8883 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8884 }
8885
8886 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8887 {
8888 return ( sType == rhs.sType )
8889 && ( pNext == rhs.pNext )
8890 && ( flags == rhs.flags )
8891 && ( parameters == rhs.parameters );
8892 }
8893
8894 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8895 {
8896 return !operator==( rhs );
8897 }
8898
8899 private:
8900 StructureType sType;
8901
8902 public:
8903 const void* pNext;
8904 DisplayModeCreateFlagsKHR flags;
8905 DisplayModeParametersKHR parameters;
8906 };
8907 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8908
8909 struct DisplayPresentInfoKHR
8910 {
8911 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8912 : sType( StructureType::eDisplayPresentInfoKHR )
8913 , pNext( nullptr )
8914 , srcRect( srcRect_ )
8915 , dstRect( dstRect_ )
8916 , persistent( persistent_ )
8917 {
8918 }
8919
8920 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008922 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008923 }
8924
8925 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008927 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008928 return *this;
8929 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008930 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8931 {
8932 pNext = pNext_;
8933 return *this;
8934 }
8935
8936 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8937 {
8938 srcRect = srcRect_;
8939 return *this;
8940 }
8941
8942 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8943 {
8944 dstRect = dstRect_;
8945 return *this;
8946 }
8947
8948 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8949 {
8950 persistent = persistent_;
8951 return *this;
8952 }
8953
8954 operator const VkDisplayPresentInfoKHR&() const
8955 {
8956 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8957 }
8958
8959 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8960 {
8961 return ( sType == rhs.sType )
8962 && ( pNext == rhs.pNext )
8963 && ( srcRect == rhs.srcRect )
8964 && ( dstRect == rhs.dstRect )
8965 && ( persistent == rhs.persistent );
8966 }
8967
8968 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8969 {
8970 return !operator==( rhs );
8971 }
8972
8973 private:
8974 StructureType sType;
8975
8976 public:
8977 const void* pNext;
8978 Rect2D srcRect;
8979 Rect2D dstRect;
8980 Bool32 persistent;
8981 };
8982 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8983
8984#ifdef VK_USE_PLATFORM_ANDROID_KHR
8985 struct AndroidSurfaceCreateInfoKHR
8986 {
8987 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8988 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8989 , pNext( nullptr )
8990 , flags( flags_ )
8991 , window( window_ )
8992 {
8993 }
8994
8995 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8996 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008997 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008998 }
8999
9000 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009002 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009003 return *this;
9004 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009005 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9006 {
9007 pNext = pNext_;
9008 return *this;
9009 }
9010
9011 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9012 {
9013 flags = flags_;
9014 return *this;
9015 }
9016
9017 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9018 {
9019 window = window_;
9020 return *this;
9021 }
9022
9023 operator const VkAndroidSurfaceCreateInfoKHR&() const
9024 {
9025 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9026 }
9027
9028 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9029 {
9030 return ( sType == rhs.sType )
9031 && ( pNext == rhs.pNext )
9032 && ( flags == rhs.flags )
9033 && ( window == rhs.window );
9034 }
9035
9036 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9037 {
9038 return !operator==( rhs );
9039 }
9040
9041 private:
9042 StructureType sType;
9043
9044 public:
9045 const void* pNext;
9046 AndroidSurfaceCreateFlagsKHR flags;
9047 ANativeWindow* window;
9048 };
9049 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9050#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9051
9052#ifdef VK_USE_PLATFORM_MIR_KHR
9053 struct MirSurfaceCreateInfoKHR
9054 {
9055 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9056 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9057 , pNext( nullptr )
9058 , flags( flags_ )
9059 , connection( connection_ )
9060 , mirSurface( mirSurface_ )
9061 {
9062 }
9063
9064 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009066 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009067 }
9068
9069 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009071 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009072 return *this;
9073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009074 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9075 {
9076 pNext = pNext_;
9077 return *this;
9078 }
9079
9080 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9081 {
9082 flags = flags_;
9083 return *this;
9084 }
9085
9086 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9087 {
9088 connection = connection_;
9089 return *this;
9090 }
9091
9092 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9093 {
9094 mirSurface = mirSurface_;
9095 return *this;
9096 }
9097
9098 operator const VkMirSurfaceCreateInfoKHR&() const
9099 {
9100 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9101 }
9102
9103 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9104 {
9105 return ( sType == rhs.sType )
9106 && ( pNext == rhs.pNext )
9107 && ( flags == rhs.flags )
9108 && ( connection == rhs.connection )
9109 && ( mirSurface == rhs.mirSurface );
9110 }
9111
9112 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9113 {
9114 return !operator==( rhs );
9115 }
9116
9117 private:
9118 StructureType sType;
9119
9120 public:
9121 const void* pNext;
9122 MirSurfaceCreateFlagsKHR flags;
9123 MirConnection* connection;
9124 MirSurface* mirSurface;
9125 };
9126 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9127#endif /*VK_USE_PLATFORM_MIR_KHR*/
9128
Mark Young39389872017-01-19 21:10:49 -07009129#ifdef VK_USE_PLATFORM_VI_NN
9130 struct ViSurfaceCreateInfoNN
9131 {
9132 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9133 : sType( StructureType::eViSurfaceCreateInfoNN )
9134 , pNext( nullptr )
9135 , flags( flags_ )
9136 , window( window_ )
9137 {
9138 }
9139
9140 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9141 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009142 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009143 }
9144
9145 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9146 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009147 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009148 return *this;
9149 }
Mark Young39389872017-01-19 21:10:49 -07009150 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9151 {
9152 pNext = pNext_;
9153 return *this;
9154 }
9155
9156 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9157 {
9158 flags = flags_;
9159 return *this;
9160 }
9161
9162 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9163 {
9164 window = window_;
9165 return *this;
9166 }
9167
9168 operator const VkViSurfaceCreateInfoNN&() const
9169 {
9170 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9171 }
9172
9173 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9174 {
9175 return ( sType == rhs.sType )
9176 && ( pNext == rhs.pNext )
9177 && ( flags == rhs.flags )
9178 && ( window == rhs.window );
9179 }
9180
9181 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9182 {
9183 return !operator==( rhs );
9184 }
9185
9186 private:
9187 StructureType sType;
9188
9189 public:
9190 const void* pNext;
9191 ViSurfaceCreateFlagsNN flags;
9192 void* window;
9193 };
9194 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9195#endif /*VK_USE_PLATFORM_VI_NN*/
9196
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009197#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9198 struct WaylandSurfaceCreateInfoKHR
9199 {
9200 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9201 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9202 , pNext( nullptr )
9203 , flags( flags_ )
9204 , display( display_ )
9205 , surface( surface_ )
9206 {
9207 }
9208
9209 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9210 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009211 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009212 }
9213
9214 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9215 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009216 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009217 return *this;
9218 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009219 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9220 {
9221 pNext = pNext_;
9222 return *this;
9223 }
9224
9225 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9226 {
9227 flags = flags_;
9228 return *this;
9229 }
9230
9231 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9232 {
9233 display = display_;
9234 return *this;
9235 }
9236
9237 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9238 {
9239 surface = surface_;
9240 return *this;
9241 }
9242
9243 operator const VkWaylandSurfaceCreateInfoKHR&() const
9244 {
9245 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9246 }
9247
9248 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9249 {
9250 return ( sType == rhs.sType )
9251 && ( pNext == rhs.pNext )
9252 && ( flags == rhs.flags )
9253 && ( display == rhs.display )
9254 && ( surface == rhs.surface );
9255 }
9256
9257 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9258 {
9259 return !operator==( rhs );
9260 }
9261
9262 private:
9263 StructureType sType;
9264
9265 public:
9266 const void* pNext;
9267 WaylandSurfaceCreateFlagsKHR flags;
9268 struct wl_display* display;
9269 struct wl_surface* surface;
9270 };
9271 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9272#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9273
9274#ifdef VK_USE_PLATFORM_WIN32_KHR
9275 struct Win32SurfaceCreateInfoKHR
9276 {
9277 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9278 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9279 , pNext( nullptr )
9280 , flags( flags_ )
9281 , hinstance( hinstance_ )
9282 , hwnd( hwnd_ )
9283 {
9284 }
9285
9286 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9287 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009288 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009289 }
9290
9291 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9292 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009293 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009294 return *this;
9295 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009296 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9297 {
9298 pNext = pNext_;
9299 return *this;
9300 }
9301
9302 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9303 {
9304 flags = flags_;
9305 return *this;
9306 }
9307
9308 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9309 {
9310 hinstance = hinstance_;
9311 return *this;
9312 }
9313
9314 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9315 {
9316 hwnd = hwnd_;
9317 return *this;
9318 }
9319
9320 operator const VkWin32SurfaceCreateInfoKHR&() const
9321 {
9322 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9323 }
9324
9325 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9326 {
9327 return ( sType == rhs.sType )
9328 && ( pNext == rhs.pNext )
9329 && ( flags == rhs.flags )
9330 && ( hinstance == rhs.hinstance )
9331 && ( hwnd == rhs.hwnd );
9332 }
9333
9334 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9335 {
9336 return !operator==( rhs );
9337 }
9338
9339 private:
9340 StructureType sType;
9341
9342 public:
9343 const void* pNext;
9344 Win32SurfaceCreateFlagsKHR flags;
9345 HINSTANCE hinstance;
9346 HWND hwnd;
9347 };
9348 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9349#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9350
9351#ifdef VK_USE_PLATFORM_XLIB_KHR
9352 struct XlibSurfaceCreateInfoKHR
9353 {
9354 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9355 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9356 , pNext( nullptr )
9357 , flags( flags_ )
9358 , dpy( dpy_ )
9359 , window( window_ )
9360 {
9361 }
9362
9363 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009365 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009366 }
9367
9368 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009370 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009371 return *this;
9372 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009373 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9374 {
9375 pNext = pNext_;
9376 return *this;
9377 }
9378
9379 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9380 {
9381 flags = flags_;
9382 return *this;
9383 }
9384
9385 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9386 {
9387 dpy = dpy_;
9388 return *this;
9389 }
9390
9391 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9392 {
9393 window = window_;
9394 return *this;
9395 }
9396
9397 operator const VkXlibSurfaceCreateInfoKHR&() const
9398 {
9399 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9400 }
9401
9402 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9403 {
9404 return ( sType == rhs.sType )
9405 && ( pNext == rhs.pNext )
9406 && ( flags == rhs.flags )
9407 && ( dpy == rhs.dpy )
9408 && ( window == rhs.window );
9409 }
9410
9411 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9412 {
9413 return !operator==( rhs );
9414 }
9415
9416 private:
9417 StructureType sType;
9418
9419 public:
9420 const void* pNext;
9421 XlibSurfaceCreateFlagsKHR flags;
9422 Display* dpy;
9423 Window window;
9424 };
9425 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9426#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9427
9428#ifdef VK_USE_PLATFORM_XCB_KHR
9429 struct XcbSurfaceCreateInfoKHR
9430 {
9431 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9432 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9433 , pNext( nullptr )
9434 , flags( flags_ )
9435 , connection( connection_ )
9436 , window( window_ )
9437 {
9438 }
9439
9440 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009442 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009443 }
9444
9445 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009447 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009448 return *this;
9449 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009450 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9451 {
9452 pNext = pNext_;
9453 return *this;
9454 }
9455
9456 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9457 {
9458 flags = flags_;
9459 return *this;
9460 }
9461
9462 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9463 {
9464 connection = connection_;
9465 return *this;
9466 }
9467
9468 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9469 {
9470 window = window_;
9471 return *this;
9472 }
9473
9474 operator const VkXcbSurfaceCreateInfoKHR&() const
9475 {
9476 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9477 }
9478
9479 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9480 {
9481 return ( sType == rhs.sType )
9482 && ( pNext == rhs.pNext )
9483 && ( flags == rhs.flags )
9484 && ( connection == rhs.connection )
9485 && ( window == rhs.window );
9486 }
9487
9488 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9489 {
9490 return !operator==( rhs );
9491 }
9492
9493 private:
9494 StructureType sType;
9495
9496 public:
9497 const void* pNext;
9498 XcbSurfaceCreateFlagsKHR flags;
9499 xcb_connection_t* connection;
9500 xcb_window_t window;
9501 };
9502 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9503#endif /*VK_USE_PLATFORM_XCB_KHR*/
9504
9505 struct DebugMarkerMarkerInfoEXT
9506 {
9507 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9508 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9509 , pNext( nullptr )
9510 , pMarkerName( pMarkerName_ )
9511 {
9512 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9513 }
9514
9515 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9516 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009517 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009518 }
9519
9520 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9521 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009522 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009523 return *this;
9524 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009525 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9526 {
9527 pNext = pNext_;
9528 return *this;
9529 }
9530
9531 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9532 {
9533 pMarkerName = pMarkerName_;
9534 return *this;
9535 }
9536
9537 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9538 {
9539 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9540 return *this;
9541 }
9542
9543 operator const VkDebugMarkerMarkerInfoEXT&() const
9544 {
9545 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9546 }
9547
9548 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9549 {
9550 return ( sType == rhs.sType )
9551 && ( pNext == rhs.pNext )
9552 && ( pMarkerName == rhs.pMarkerName )
9553 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9554 }
9555
9556 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9557 {
9558 return !operator==( rhs );
9559 }
9560
9561 private:
9562 StructureType sType;
9563
9564 public:
9565 const void* pNext;
9566 const char* pMarkerName;
9567 float color[4];
9568 };
9569 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9570
9571 struct DedicatedAllocationImageCreateInfoNV
9572 {
9573 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9574 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9575 , pNext( nullptr )
9576 , dedicatedAllocation( dedicatedAllocation_ )
9577 {
9578 }
9579
9580 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9581 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009582 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009583 }
9584
9585 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9586 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009587 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009588 return *this;
9589 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009590 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9591 {
9592 pNext = pNext_;
9593 return *this;
9594 }
9595
9596 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9597 {
9598 dedicatedAllocation = dedicatedAllocation_;
9599 return *this;
9600 }
9601
9602 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9603 {
9604 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9605 }
9606
9607 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9608 {
9609 return ( sType == rhs.sType )
9610 && ( pNext == rhs.pNext )
9611 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9612 }
9613
9614 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9615 {
9616 return !operator==( rhs );
9617 }
9618
9619 private:
9620 StructureType sType;
9621
9622 public:
9623 const void* pNext;
9624 Bool32 dedicatedAllocation;
9625 };
9626 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9627
9628 struct DedicatedAllocationBufferCreateInfoNV
9629 {
9630 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9631 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9632 , pNext( nullptr )
9633 , dedicatedAllocation( dedicatedAllocation_ )
9634 {
9635 }
9636
9637 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009639 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009640 }
9641
9642 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009644 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009645 return *this;
9646 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009647 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9648 {
9649 pNext = pNext_;
9650 return *this;
9651 }
9652
9653 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9654 {
9655 dedicatedAllocation = dedicatedAllocation_;
9656 return *this;
9657 }
9658
9659 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9660 {
9661 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9662 }
9663
9664 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9665 {
9666 return ( sType == rhs.sType )
9667 && ( pNext == rhs.pNext )
9668 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9669 }
9670
9671 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9672 {
9673 return !operator==( rhs );
9674 }
9675
9676 private:
9677 StructureType sType;
9678
9679 public:
9680 const void* pNext;
9681 Bool32 dedicatedAllocation;
9682 };
9683 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9684
9685 struct DedicatedAllocationMemoryAllocateInfoNV
9686 {
9687 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9688 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9689 , pNext( nullptr )
9690 , image( image_ )
9691 , buffer( buffer_ )
9692 {
9693 }
9694
9695 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9696 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009697 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009698 }
9699
9700 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9701 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009702 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009703 return *this;
9704 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009705 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9706 {
9707 pNext = pNext_;
9708 return *this;
9709 }
9710
9711 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9712 {
9713 image = image_;
9714 return *this;
9715 }
9716
9717 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9718 {
9719 buffer = buffer_;
9720 return *this;
9721 }
9722
9723 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9724 {
9725 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9726 }
9727
9728 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9729 {
9730 return ( sType == rhs.sType )
9731 && ( pNext == rhs.pNext )
9732 && ( image == rhs.image )
9733 && ( buffer == rhs.buffer );
9734 }
9735
9736 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9737 {
9738 return !operator==( rhs );
9739 }
9740
9741 private:
9742 StructureType sType;
9743
9744 public:
9745 const void* pNext;
9746 Image image;
9747 Buffer buffer;
9748 };
9749 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9750
Lenny Komow6501c122016-08-31 15:03:49 -06009751#ifdef VK_USE_PLATFORM_WIN32_KHR
9752 struct ExportMemoryWin32HandleInfoNV
9753 {
9754 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9755 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9756 , pNext( nullptr )
9757 , pAttributes( pAttributes_ )
9758 , dwAccess( dwAccess_ )
9759 {
9760 }
9761
9762 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9763 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009764 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009765 }
9766
9767 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9768 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009769 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009770 return *this;
9771 }
Lenny Komow6501c122016-08-31 15:03:49 -06009772 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9773 {
9774 pNext = pNext_;
9775 return *this;
9776 }
9777
9778 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9779 {
9780 pAttributes = pAttributes_;
9781 return *this;
9782 }
9783
9784 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9785 {
9786 dwAccess = dwAccess_;
9787 return *this;
9788 }
9789
9790 operator const VkExportMemoryWin32HandleInfoNV&() const
9791 {
9792 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9793 }
9794
9795 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9796 {
9797 return ( sType == rhs.sType )
9798 && ( pNext == rhs.pNext )
9799 && ( pAttributes == rhs.pAttributes )
9800 && ( dwAccess == rhs.dwAccess );
9801 }
9802
9803 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9804 {
9805 return !operator==( rhs );
9806 }
9807
9808 private:
9809 StructureType sType;
9810
9811 public:
9812 const void* pNext;
9813 const SECURITY_ATTRIBUTES* pAttributes;
9814 DWORD dwAccess;
9815 };
9816 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9817#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9818
9819#ifdef VK_USE_PLATFORM_WIN32_KHR
9820 struct Win32KeyedMutexAcquireReleaseInfoNV
9821 {
9822 Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0, const DeviceMemory* pAcquireSyncs_ = nullptr, const uint64_t* pAcquireKeys_ = nullptr, const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr, uint32_t releaseCount_ = 0, const DeviceMemory* pReleaseSyncs_ = nullptr, const uint64_t* pReleaseKeys_ = nullptr )
9823 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9824 , pNext( nullptr )
9825 , acquireCount( acquireCount_ )
9826 , pAcquireSyncs( pAcquireSyncs_ )
9827 , pAcquireKeys( pAcquireKeys_ )
9828 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9829 , releaseCount( releaseCount_ )
9830 , pReleaseSyncs( pReleaseSyncs_ )
9831 , pReleaseKeys( pReleaseKeys_ )
9832 {
9833 }
9834
9835 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9836 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009837 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009838 }
9839
9840 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9841 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009842 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009843 return *this;
9844 }
Lenny Komow6501c122016-08-31 15:03:49 -06009845 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9846 {
9847 pNext = pNext_;
9848 return *this;
9849 }
9850
9851 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9852 {
9853 acquireCount = acquireCount_;
9854 return *this;
9855 }
9856
9857 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9858 {
9859 pAcquireSyncs = pAcquireSyncs_;
9860 return *this;
9861 }
9862
9863 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9864 {
9865 pAcquireKeys = pAcquireKeys_;
9866 return *this;
9867 }
9868
9869 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9870 {
9871 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9872 return *this;
9873 }
9874
9875 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9876 {
9877 releaseCount = releaseCount_;
9878 return *this;
9879 }
9880
9881 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9882 {
9883 pReleaseSyncs = pReleaseSyncs_;
9884 return *this;
9885 }
9886
9887 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9888 {
9889 pReleaseKeys = pReleaseKeys_;
9890 return *this;
9891 }
9892
9893 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9894 {
9895 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9896 }
9897
9898 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9899 {
9900 return ( sType == rhs.sType )
9901 && ( pNext == rhs.pNext )
9902 && ( acquireCount == rhs.acquireCount )
9903 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9904 && ( pAcquireKeys == rhs.pAcquireKeys )
9905 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9906 && ( releaseCount == rhs.releaseCount )
9907 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9908 && ( pReleaseKeys == rhs.pReleaseKeys );
9909 }
9910
9911 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9912 {
9913 return !operator==( rhs );
9914 }
9915
9916 private:
9917 StructureType sType;
9918
9919 public:
9920 const void* pNext;
9921 uint32_t acquireCount;
9922 const DeviceMemory* pAcquireSyncs;
9923 const uint64_t* pAcquireKeys;
9924 const uint32_t* pAcquireTimeoutMilliseconds;
9925 uint32_t releaseCount;
9926 const DeviceMemory* pReleaseSyncs;
9927 const uint64_t* pReleaseKeys;
9928 };
9929 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9930#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9931
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009932 struct DeviceGeneratedCommandsFeaturesNVX
9933 {
9934 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9935 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9936 , pNext( nullptr )
9937 , computeBindingPointSupport( computeBindingPointSupport_ )
9938 {
9939 }
9940
9941 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9942 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009943 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009944 }
9945
9946 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9947 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009948 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009949 return *this;
9950 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009951 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9952 {
9953 pNext = pNext_;
9954 return *this;
9955 }
9956
9957 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9958 {
9959 computeBindingPointSupport = computeBindingPointSupport_;
9960 return *this;
9961 }
9962
9963 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9964 {
9965 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9966 }
9967
9968 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9969 {
9970 return ( sType == rhs.sType )
9971 && ( pNext == rhs.pNext )
9972 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9973 }
9974
9975 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9976 {
9977 return !operator==( rhs );
9978 }
9979
9980 private:
9981 StructureType sType;
9982
9983 public:
9984 const void* pNext;
9985 Bool32 computeBindingPointSupport;
9986 };
9987 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9988
9989 struct DeviceGeneratedCommandsLimitsNVX
9990 {
9991 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9992 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9993 , pNext( nullptr )
9994 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9995 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9996 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9997 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9998 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9999 {
10000 }
10001
10002 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10003 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010004 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010005 }
10006
10007 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10008 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010009 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010010 return *this;
10011 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010012 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10013 {
10014 pNext = pNext_;
10015 return *this;
10016 }
10017
10018 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10019 {
10020 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10021 return *this;
10022 }
10023
10024 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10025 {
10026 maxObjectEntryCounts = maxObjectEntryCounts_;
10027 return *this;
10028 }
10029
10030 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10031 {
10032 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10033 return *this;
10034 }
10035
10036 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10037 {
10038 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10039 return *this;
10040 }
10041
10042 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10043 {
10044 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10045 return *this;
10046 }
10047
10048 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10049 {
10050 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10051 }
10052
10053 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10054 {
10055 return ( sType == rhs.sType )
10056 && ( pNext == rhs.pNext )
10057 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10058 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10059 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10060 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10061 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10062 }
10063
10064 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10065 {
10066 return !operator==( rhs );
10067 }
10068
10069 private:
10070 StructureType sType;
10071
10072 public:
10073 const void* pNext;
10074 uint32_t maxIndirectCommandsLayoutTokenCount;
10075 uint32_t maxObjectEntryCounts;
10076 uint32_t minSequenceCountBufferOffsetAlignment;
10077 uint32_t minSequenceIndexBufferOffsetAlignment;
10078 uint32_t minCommandsTokenBufferOffsetAlignment;
10079 };
10080 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10081
10082 struct CmdReserveSpaceForCommandsInfoNVX
10083 {
10084 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10085 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10086 , pNext( nullptr )
10087 , objectTable( objectTable_ )
10088 , indirectCommandsLayout( indirectCommandsLayout_ )
10089 , maxSequencesCount( maxSequencesCount_ )
10090 {
10091 }
10092
10093 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10094 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010095 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010096 }
10097
10098 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10099 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010100 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010101 return *this;
10102 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010103 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10104 {
10105 pNext = pNext_;
10106 return *this;
10107 }
10108
10109 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10110 {
10111 objectTable = objectTable_;
10112 return *this;
10113 }
10114
10115 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10116 {
10117 indirectCommandsLayout = indirectCommandsLayout_;
10118 return *this;
10119 }
10120
10121 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10122 {
10123 maxSequencesCount = maxSequencesCount_;
10124 return *this;
10125 }
10126
10127 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10128 {
10129 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10130 }
10131
10132 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10133 {
10134 return ( sType == rhs.sType )
10135 && ( pNext == rhs.pNext )
10136 && ( objectTable == rhs.objectTable )
10137 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10138 && ( maxSequencesCount == rhs.maxSequencesCount );
10139 }
10140
10141 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10142 {
10143 return !operator==( rhs );
10144 }
10145
10146 private:
10147 StructureType sType;
10148
10149 public:
10150 const void* pNext;
10151 ObjectTableNVX objectTable;
10152 IndirectCommandsLayoutNVX indirectCommandsLayout;
10153 uint32_t maxSequencesCount;
10154 };
10155 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10156
Mark Young39389872017-01-19 21:10:49 -070010157 struct PhysicalDeviceFeatures2KHR
10158 {
10159 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10160 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10161 , pNext( nullptr )
10162 , features( features_ )
10163 {
10164 }
10165
10166 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10167 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010168 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010169 }
10170
10171 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010173 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010174 return *this;
10175 }
Mark Young39389872017-01-19 21:10:49 -070010176 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10177 {
10178 pNext = pNext_;
10179 return *this;
10180 }
10181
10182 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10183 {
10184 features = features_;
10185 return *this;
10186 }
10187
10188 operator const VkPhysicalDeviceFeatures2KHR&() const
10189 {
10190 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10191 }
10192
10193 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10194 {
10195 return ( sType == rhs.sType )
10196 && ( pNext == rhs.pNext )
10197 && ( features == rhs.features );
10198 }
10199
10200 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10201 {
10202 return !operator==( rhs );
10203 }
10204
10205 private:
10206 StructureType sType;
10207
10208 public:
10209 void* pNext;
10210 PhysicalDeviceFeatures features;
10211 };
10212 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10213
Mark Young0f183a82017-02-28 09:58:04 -070010214 struct PhysicalDevicePushDescriptorPropertiesKHR
10215 {
10216 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10217 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10218 , pNext( nullptr )
10219 , maxPushDescriptors( maxPushDescriptors_ )
10220 {
10221 }
10222
10223 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10224 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010225 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010226 }
10227
10228 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10229 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010230 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010231 return *this;
10232 }
Mark Young0f183a82017-02-28 09:58:04 -070010233 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10234 {
10235 pNext = pNext_;
10236 return *this;
10237 }
10238
10239 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10240 {
10241 maxPushDescriptors = maxPushDescriptors_;
10242 return *this;
10243 }
10244
10245 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10246 {
10247 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10248 }
10249
10250 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10251 {
10252 return ( sType == rhs.sType )
10253 && ( pNext == rhs.pNext )
10254 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10255 }
10256
10257 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10258 {
10259 return !operator==( rhs );
10260 }
10261
10262 private:
10263 StructureType sType;
10264
10265 public:
10266 void* pNext;
10267 uint32_t maxPushDescriptors;
10268 };
10269 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10270
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010271 struct PresentRegionsKHR
10272 {
10273 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10274 : sType( StructureType::ePresentRegionsKHR )
10275 , pNext( nullptr )
10276 , swapchainCount( swapchainCount_ )
10277 , pRegions( pRegions_ )
10278 {
10279 }
10280
10281 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10282 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010283 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010284 }
10285
10286 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10287 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010288 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010289 return *this;
10290 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010291 PresentRegionsKHR& setPNext( const void* pNext_ )
10292 {
10293 pNext = pNext_;
10294 return *this;
10295 }
10296
10297 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10298 {
10299 swapchainCount = swapchainCount_;
10300 return *this;
10301 }
10302
10303 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10304 {
10305 pRegions = pRegions_;
10306 return *this;
10307 }
10308
10309 operator const VkPresentRegionsKHR&() const
10310 {
10311 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10312 }
10313
10314 bool operator==( PresentRegionsKHR const& rhs ) const
10315 {
10316 return ( sType == rhs.sType )
10317 && ( pNext == rhs.pNext )
10318 && ( swapchainCount == rhs.swapchainCount )
10319 && ( pRegions == rhs.pRegions );
10320 }
10321
10322 bool operator!=( PresentRegionsKHR const& rhs ) const
10323 {
10324 return !operator==( rhs );
10325 }
10326
10327 private:
10328 StructureType sType;
10329
10330 public:
10331 const void* pNext;
10332 uint32_t swapchainCount;
10333 const PresentRegionKHR* pRegions;
10334 };
10335 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10336
Mark Youngabc2d6e2017-07-07 07:59:56 -060010337 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010338 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010339 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10340 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10341 , pNext( nullptr )
10342 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10343 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010344 {
Mark Young0f183a82017-02-28 09:58:04 -070010345 }
10346
Mark Youngabc2d6e2017-07-07 07:59:56 -060010347 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10348 {
10349 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10350 }
10351
10352 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10353 {
10354 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10355 return *this;
10356 }
10357 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10358 {
10359 pNext = pNext_;
10360 return *this;
10361 }
10362
10363 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10364 {
10365 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10366 return *this;
10367 }
10368
10369 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10370 {
10371 variablePointers = variablePointers_;
10372 return *this;
10373 }
10374
10375 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10376 {
10377 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10378 }
10379
10380 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10381 {
10382 return ( sType == rhs.sType )
10383 && ( pNext == rhs.pNext )
10384 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10385 && ( variablePointers == rhs.variablePointers );
10386 }
10387
10388 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10389 {
10390 return !operator==( rhs );
10391 }
10392
10393 private:
10394 StructureType sType;
10395
10396 public:
10397 void* pNext;
10398 Bool32 variablePointersStorageBuffer;
10399 Bool32 variablePointers;
10400 };
10401 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10402
10403 struct PhysicalDeviceIDPropertiesKHR
10404 {
10405 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10406 {
10407 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10408 }
10409
10410 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010411 {
10412 return ( sType == rhs.sType )
10413 && ( pNext == rhs.pNext )
10414 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10415 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010416 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10417 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010418 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10419 }
10420
Mark Youngabc2d6e2017-07-07 07:59:56 -060010421 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010422 {
10423 return !operator==( rhs );
10424 }
10425
10426 private:
10427 StructureType sType;
10428
10429 public:
10430 void* pNext;
10431 uint8_t deviceUUID[VK_UUID_SIZE];
10432 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010433 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10434 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010435 Bool32 deviceLUIDValid;
10436 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010437 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010438
Mark Youngabc2d6e2017-07-07 07:59:56 -060010439#ifdef VK_USE_PLATFORM_WIN32_KHR
10440 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010441 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010442 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10443 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010444 , pNext( nullptr )
10445 , pAttributes( pAttributes_ )
10446 , dwAccess( dwAccess_ )
10447 , name( name_ )
10448 {
10449 }
10450
Mark Youngabc2d6e2017-07-07 07:59:56 -060010451 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010452 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010453 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010454 }
10455
Mark Youngabc2d6e2017-07-07 07:59:56 -060010456 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010457 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010458 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010459 return *this;
10460 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010461 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010462 {
10463 pNext = pNext_;
10464 return *this;
10465 }
10466
Mark Youngabc2d6e2017-07-07 07:59:56 -060010467 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010468 {
10469 pAttributes = pAttributes_;
10470 return *this;
10471 }
10472
Mark Youngabc2d6e2017-07-07 07:59:56 -060010473 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010474 {
10475 dwAccess = dwAccess_;
10476 return *this;
10477 }
10478
Mark Youngabc2d6e2017-07-07 07:59:56 -060010479 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010480 {
10481 name = name_;
10482 return *this;
10483 }
10484
Mark Youngabc2d6e2017-07-07 07:59:56 -060010485 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010486 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010487 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010488 }
10489
Mark Youngabc2d6e2017-07-07 07:59:56 -060010490 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010491 {
10492 return ( sType == rhs.sType )
10493 && ( pNext == rhs.pNext )
10494 && ( pAttributes == rhs.pAttributes )
10495 && ( dwAccess == rhs.dwAccess )
10496 && ( name == rhs.name );
10497 }
10498
Mark Youngabc2d6e2017-07-07 07:59:56 -060010499 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010500 {
10501 return !operator==( rhs );
10502 }
10503
10504 private:
10505 StructureType sType;
10506
10507 public:
10508 const void* pNext;
10509 const SECURITY_ATTRIBUTES* pAttributes;
10510 DWORD dwAccess;
10511 LPCWSTR name;
10512 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010513 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10514#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010515
10516#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010517 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010518 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010519 operator const VkMemoryWin32HandlePropertiesKHR&() const
10520 {
10521 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10522 }
10523
10524 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10525 {
10526 return ( sType == rhs.sType )
10527 && ( pNext == rhs.pNext )
10528 && ( memoryTypeBits == rhs.memoryTypeBits );
10529 }
10530
10531 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10532 {
10533 return !operator==( rhs );
10534 }
10535
10536 private:
10537 StructureType sType;
10538
10539 public:
10540 void* pNext;
10541 uint32_t memoryTypeBits;
10542 };
10543 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10544#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10545
10546 struct MemoryFdPropertiesKHR
10547 {
10548 operator const VkMemoryFdPropertiesKHR&() const
10549 {
10550 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10551 }
10552
10553 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10554 {
10555 return ( sType == rhs.sType )
10556 && ( pNext == rhs.pNext )
10557 && ( memoryTypeBits == rhs.memoryTypeBits );
10558 }
10559
10560 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10561 {
10562 return !operator==( rhs );
10563 }
10564
10565 private:
10566 StructureType sType;
10567
10568 public:
10569 void* pNext;
10570 uint32_t memoryTypeBits;
10571 };
10572 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10573
10574#ifdef VK_USE_PLATFORM_WIN32_KHR
10575 struct Win32KeyedMutexAcquireReleaseInfoKHR
10576 {
10577 Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0, const DeviceMemory* pAcquireSyncs_ = nullptr, const uint64_t* pAcquireKeys_ = nullptr, const uint32_t* pAcquireTimeouts_ = nullptr, uint32_t releaseCount_ = 0, const DeviceMemory* pReleaseSyncs_ = nullptr, const uint64_t* pReleaseKeys_ = nullptr )
10578 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010579 , pNext( nullptr )
10580 , acquireCount( acquireCount_ )
10581 , pAcquireSyncs( pAcquireSyncs_ )
10582 , pAcquireKeys( pAcquireKeys_ )
10583 , pAcquireTimeouts( pAcquireTimeouts_ )
10584 , releaseCount( releaseCount_ )
10585 , pReleaseSyncs( pReleaseSyncs_ )
10586 , pReleaseKeys( pReleaseKeys_ )
10587 {
10588 }
10589
Mark Youngabc2d6e2017-07-07 07:59:56 -060010590 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010591 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010592 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010593 }
10594
Mark Youngabc2d6e2017-07-07 07:59:56 -060010595 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010596 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010597 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010598 return *this;
10599 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010600 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010601 {
10602 pNext = pNext_;
10603 return *this;
10604 }
10605
Mark Youngabc2d6e2017-07-07 07:59:56 -060010606 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010607 {
10608 acquireCount = acquireCount_;
10609 return *this;
10610 }
10611
Mark Youngabc2d6e2017-07-07 07:59:56 -060010612 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010613 {
10614 pAcquireSyncs = pAcquireSyncs_;
10615 return *this;
10616 }
10617
Mark Youngabc2d6e2017-07-07 07:59:56 -060010618 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010619 {
10620 pAcquireKeys = pAcquireKeys_;
10621 return *this;
10622 }
10623
Mark Youngabc2d6e2017-07-07 07:59:56 -060010624 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010625 {
10626 pAcquireTimeouts = pAcquireTimeouts_;
10627 return *this;
10628 }
10629
Mark Youngabc2d6e2017-07-07 07:59:56 -060010630 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010631 {
10632 releaseCount = releaseCount_;
10633 return *this;
10634 }
10635
Mark Youngabc2d6e2017-07-07 07:59:56 -060010636 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010637 {
10638 pReleaseSyncs = pReleaseSyncs_;
10639 return *this;
10640 }
10641
Mark Youngabc2d6e2017-07-07 07:59:56 -060010642 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010643 {
10644 pReleaseKeys = pReleaseKeys_;
10645 return *this;
10646 }
10647
Mark Youngabc2d6e2017-07-07 07:59:56 -060010648 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010649 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010650 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010651 }
10652
Mark Youngabc2d6e2017-07-07 07:59:56 -060010653 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010654 {
10655 return ( sType == rhs.sType )
10656 && ( pNext == rhs.pNext )
10657 && ( acquireCount == rhs.acquireCount )
10658 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10659 && ( pAcquireKeys == rhs.pAcquireKeys )
10660 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10661 && ( releaseCount == rhs.releaseCount )
10662 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10663 && ( pReleaseKeys == rhs.pReleaseKeys );
10664 }
10665
Mark Youngabc2d6e2017-07-07 07:59:56 -060010666 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010667 {
10668 return !operator==( rhs );
10669 }
10670
10671 private:
10672 StructureType sType;
10673
10674 public:
10675 const void* pNext;
10676 uint32_t acquireCount;
10677 const DeviceMemory* pAcquireSyncs;
10678 const uint64_t* pAcquireKeys;
10679 const uint32_t* pAcquireTimeouts;
10680 uint32_t releaseCount;
10681 const DeviceMemory* pReleaseSyncs;
10682 const uint64_t* pReleaseKeys;
10683 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010684 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010685#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10686
Mark Youngabc2d6e2017-07-07 07:59:56 -060010687#ifdef VK_USE_PLATFORM_WIN32_KHR
10688 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010689 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010690 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10691 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010692 , pNext( nullptr )
10693 , pAttributes( pAttributes_ )
10694 , dwAccess( dwAccess_ )
10695 , name( name_ )
10696 {
10697 }
10698
Mark Youngabc2d6e2017-07-07 07:59:56 -060010699 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010700 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010701 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010702 }
10703
Mark Youngabc2d6e2017-07-07 07:59:56 -060010704 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010705 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010706 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010707 return *this;
10708 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010709 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010710 {
10711 pNext = pNext_;
10712 return *this;
10713 }
10714
Mark Youngabc2d6e2017-07-07 07:59:56 -060010715 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010716 {
10717 pAttributes = pAttributes_;
10718 return *this;
10719 }
10720
Mark Youngabc2d6e2017-07-07 07:59:56 -060010721 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010722 {
10723 dwAccess = dwAccess_;
10724 return *this;
10725 }
10726
Mark Youngabc2d6e2017-07-07 07:59:56 -060010727 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010728 {
10729 name = name_;
10730 return *this;
10731 }
10732
Mark Youngabc2d6e2017-07-07 07:59:56 -060010733 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010734 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010735 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010736 }
10737
Mark Youngabc2d6e2017-07-07 07:59:56 -060010738 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010739 {
10740 return ( sType == rhs.sType )
10741 && ( pNext == rhs.pNext )
10742 && ( pAttributes == rhs.pAttributes )
10743 && ( dwAccess == rhs.dwAccess )
10744 && ( name == rhs.name );
10745 }
10746
Mark Youngabc2d6e2017-07-07 07:59:56 -060010747 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010748 {
10749 return !operator==( rhs );
10750 }
10751
10752 private:
10753 StructureType sType;
10754
10755 public:
10756 const void* pNext;
10757 const SECURITY_ATTRIBUTES* pAttributes;
10758 DWORD dwAccess;
10759 LPCWSTR name;
10760 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010761 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10762#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010763
Mark Youngabc2d6e2017-07-07 07:59:56 -060010764#ifdef VK_USE_PLATFORM_WIN32_KHR
10765 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010766 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010767 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10768 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010769 , pNext( nullptr )
10770 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10771 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10772 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10773 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10774 {
10775 }
10776
Mark Youngabc2d6e2017-07-07 07:59:56 -060010777 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010778 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010779 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010780 }
10781
Mark Youngabc2d6e2017-07-07 07:59:56 -060010782 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010783 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010784 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010785 return *this;
10786 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010787 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010788 {
10789 pNext = pNext_;
10790 return *this;
10791 }
10792
Mark Youngabc2d6e2017-07-07 07:59:56 -060010793 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010794 {
10795 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10796 return *this;
10797 }
10798
Mark Youngabc2d6e2017-07-07 07:59:56 -060010799 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070010800 {
10801 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10802 return *this;
10803 }
10804
Mark Youngabc2d6e2017-07-07 07:59:56 -060010805 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010806 {
10807 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10808 return *this;
10809 }
10810
Mark Youngabc2d6e2017-07-07 07:59:56 -060010811 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070010812 {
10813 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10814 return *this;
10815 }
10816
Mark Youngabc2d6e2017-07-07 07:59:56 -060010817 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010818 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010819 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010820 }
10821
Mark Youngabc2d6e2017-07-07 07:59:56 -060010822 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010823 {
10824 return ( sType == rhs.sType )
10825 && ( pNext == rhs.pNext )
10826 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10827 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10828 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10829 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10830 }
10831
Mark Youngabc2d6e2017-07-07 07:59:56 -060010832 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010833 {
10834 return !operator==( rhs );
10835 }
10836
10837 private:
10838 StructureType sType;
10839
10840 public:
10841 const void* pNext;
10842 uint32_t waitSemaphoreValuesCount;
10843 const uint64_t* pWaitSemaphoreValues;
10844 uint32_t signalSemaphoreValuesCount;
10845 const uint64_t* pSignalSemaphoreValues;
10846 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010847 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
10848#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10849
10850#ifdef VK_USE_PLATFORM_WIN32_KHR
10851 struct ExportFenceWin32HandleInfoKHR
10852 {
10853 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10854 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
10855 , pNext( nullptr )
10856 , pAttributes( pAttributes_ )
10857 , dwAccess( dwAccess_ )
10858 , name( name_ )
10859 {
10860 }
10861
10862 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
10863 {
10864 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
10865 }
10866
10867 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
10868 {
10869 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
10870 return *this;
10871 }
10872 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
10873 {
10874 pNext = pNext_;
10875 return *this;
10876 }
10877
10878 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10879 {
10880 pAttributes = pAttributes_;
10881 return *this;
10882 }
10883
10884 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
10885 {
10886 dwAccess = dwAccess_;
10887 return *this;
10888 }
10889
10890 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
10891 {
10892 name = name_;
10893 return *this;
10894 }
10895
10896 operator const VkExportFenceWin32HandleInfoKHR&() const
10897 {
10898 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
10899 }
10900
10901 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
10902 {
10903 return ( sType == rhs.sType )
10904 && ( pNext == rhs.pNext )
10905 && ( pAttributes == rhs.pAttributes )
10906 && ( dwAccess == rhs.dwAccess )
10907 && ( name == rhs.name );
10908 }
10909
10910 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
10911 {
10912 return !operator==( rhs );
10913 }
10914
10915 private:
10916 StructureType sType;
10917
10918 public:
10919 const void* pNext;
10920 const SECURITY_ATTRIBUTES* pAttributes;
10921 DWORD dwAccess;
10922 LPCWSTR name;
10923 };
10924 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10925#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010926
10927 struct PhysicalDeviceMultiviewFeaturesKHX
10928 {
10929 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10930 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10931 , pNext( nullptr )
10932 , multiview( multiview_ )
10933 , multiviewGeometryShader( multiviewGeometryShader_ )
10934 , multiviewTessellationShader( multiviewTessellationShader_ )
10935 {
10936 }
10937
10938 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10939 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010940 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010941 }
10942
10943 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10944 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010945 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010946 return *this;
10947 }
Mark Young0f183a82017-02-28 09:58:04 -070010948 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10949 {
10950 pNext = pNext_;
10951 return *this;
10952 }
10953
10954 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10955 {
10956 multiview = multiview_;
10957 return *this;
10958 }
10959
10960 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10961 {
10962 multiviewGeometryShader = multiviewGeometryShader_;
10963 return *this;
10964 }
10965
10966 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10967 {
10968 multiviewTessellationShader = multiviewTessellationShader_;
10969 return *this;
10970 }
10971
10972 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10973 {
10974 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10975 }
10976
10977 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10978 {
10979 return ( sType == rhs.sType )
10980 && ( pNext == rhs.pNext )
10981 && ( multiview == rhs.multiview )
10982 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10983 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10984 }
10985
10986 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10987 {
10988 return !operator==( rhs );
10989 }
10990
10991 private:
10992 StructureType sType;
10993
10994 public:
10995 void* pNext;
10996 Bool32 multiview;
10997 Bool32 multiviewGeometryShader;
10998 Bool32 multiviewTessellationShader;
10999 };
11000 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11001
11002 struct PhysicalDeviceMultiviewPropertiesKHX
11003 {
11004 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11005 {
11006 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11007 }
11008
11009 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11010 {
11011 return ( sType == rhs.sType )
11012 && ( pNext == rhs.pNext )
11013 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11014 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11015 }
11016
11017 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11018 {
11019 return !operator==( rhs );
11020 }
11021
11022 private:
11023 StructureType sType;
11024
11025 public:
11026 void* pNext;
11027 uint32_t maxMultiviewViewCount;
11028 uint32_t maxMultiviewInstanceIndex;
11029 };
11030 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11031
11032 struct RenderPassMultiviewCreateInfoKHX
11033 {
11034 RenderPassMultiviewCreateInfoKHX( uint32_t subpassCount_ = 0, const uint32_t* pViewMasks_ = nullptr, uint32_t dependencyCount_ = 0, const int32_t* pViewOffsets_ = nullptr, uint32_t correlationMaskCount_ = 0, const uint32_t* pCorrelationMasks_ = nullptr )
11035 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11036 , pNext( nullptr )
11037 , subpassCount( subpassCount_ )
11038 , pViewMasks( pViewMasks_ )
11039 , dependencyCount( dependencyCount_ )
11040 , pViewOffsets( pViewOffsets_ )
11041 , correlationMaskCount( correlationMaskCount_ )
11042 , pCorrelationMasks( pCorrelationMasks_ )
11043 {
11044 }
11045
11046 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11047 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011048 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011049 }
11050
11051 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011053 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011054 return *this;
11055 }
Mark Young0f183a82017-02-28 09:58:04 -070011056 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11057 {
11058 pNext = pNext_;
11059 return *this;
11060 }
11061
11062 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11063 {
11064 subpassCount = subpassCount_;
11065 return *this;
11066 }
11067
11068 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11069 {
11070 pViewMasks = pViewMasks_;
11071 return *this;
11072 }
11073
11074 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11075 {
11076 dependencyCount = dependencyCount_;
11077 return *this;
11078 }
11079
11080 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11081 {
11082 pViewOffsets = pViewOffsets_;
11083 return *this;
11084 }
11085
11086 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11087 {
11088 correlationMaskCount = correlationMaskCount_;
11089 return *this;
11090 }
11091
11092 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11093 {
11094 pCorrelationMasks = pCorrelationMasks_;
11095 return *this;
11096 }
11097
11098 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11099 {
11100 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11101 }
11102
11103 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11104 {
11105 return ( sType == rhs.sType )
11106 && ( pNext == rhs.pNext )
11107 && ( subpassCount == rhs.subpassCount )
11108 && ( pViewMasks == rhs.pViewMasks )
11109 && ( dependencyCount == rhs.dependencyCount )
11110 && ( pViewOffsets == rhs.pViewOffsets )
11111 && ( correlationMaskCount == rhs.correlationMaskCount )
11112 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11113 }
11114
11115 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11116 {
11117 return !operator==( rhs );
11118 }
11119
11120 private:
11121 StructureType sType;
11122
11123 public:
11124 const void* pNext;
11125 uint32_t subpassCount;
11126 const uint32_t* pViewMasks;
11127 uint32_t dependencyCount;
11128 const int32_t* pViewOffsets;
11129 uint32_t correlationMaskCount;
11130 const uint32_t* pCorrelationMasks;
11131 };
11132 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11133
11134 struct BindBufferMemoryInfoKHX
11135 {
11136 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11137 : sType( StructureType::eBindBufferMemoryInfoKHX )
11138 , pNext( nullptr )
11139 , buffer( buffer_ )
11140 , memory( memory_ )
11141 , memoryOffset( memoryOffset_ )
11142 , deviceIndexCount( deviceIndexCount_ )
11143 , pDeviceIndices( pDeviceIndices_ )
11144 {
11145 }
11146
11147 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
11148 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011149 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011150 }
11151
11152 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
11153 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011154 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011155 return *this;
11156 }
Mark Young0f183a82017-02-28 09:58:04 -070011157 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
11158 {
11159 pNext = pNext_;
11160 return *this;
11161 }
11162
11163 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
11164 {
11165 buffer = buffer_;
11166 return *this;
11167 }
11168
11169 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11170 {
11171 memory = memory_;
11172 return *this;
11173 }
11174
11175 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11176 {
11177 memoryOffset = memoryOffset_;
11178 return *this;
11179 }
11180
11181 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11182 {
11183 deviceIndexCount = deviceIndexCount_;
11184 return *this;
11185 }
11186
11187 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11188 {
11189 pDeviceIndices = pDeviceIndices_;
11190 return *this;
11191 }
11192
11193 operator const VkBindBufferMemoryInfoKHX&() const
11194 {
11195 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
11196 }
11197
11198 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
11199 {
11200 return ( sType == rhs.sType )
11201 && ( pNext == rhs.pNext )
11202 && ( buffer == rhs.buffer )
11203 && ( memory == rhs.memory )
11204 && ( memoryOffset == rhs.memoryOffset )
11205 && ( deviceIndexCount == rhs.deviceIndexCount )
11206 && ( pDeviceIndices == rhs.pDeviceIndices );
11207 }
11208
11209 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
11210 {
11211 return !operator==( rhs );
11212 }
11213
11214 private:
11215 StructureType sType;
11216
11217 public:
11218 const void* pNext;
11219 Buffer buffer;
11220 DeviceMemory memory;
11221 DeviceSize memoryOffset;
11222 uint32_t deviceIndexCount;
11223 const uint32_t* pDeviceIndices;
11224 };
11225 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
11226
11227 struct BindImageMemoryInfoKHX
11228 {
11229 BindImageMemoryInfoKHX( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11230 : sType( StructureType::eBindImageMemoryInfoKHX )
11231 , pNext( nullptr )
11232 , image( image_ )
11233 , memory( memory_ )
11234 , memoryOffset( memoryOffset_ )
11235 , deviceIndexCount( deviceIndexCount_ )
11236 , pDeviceIndices( pDeviceIndices_ )
11237 , SFRRectCount( SFRRectCount_ )
11238 , pSFRRects( pSFRRects_ )
11239 {
11240 }
11241
11242 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
11243 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011244 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011245 }
11246
11247 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
11248 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011249 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011250 return *this;
11251 }
Mark Young0f183a82017-02-28 09:58:04 -070011252 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
11253 {
11254 pNext = pNext_;
11255 return *this;
11256 }
11257
11258 BindImageMemoryInfoKHX& setImage( Image image_ )
11259 {
11260 image = image_;
11261 return *this;
11262 }
11263
11264 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11265 {
11266 memory = memory_;
11267 return *this;
11268 }
11269
11270 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11271 {
11272 memoryOffset = memoryOffset_;
11273 return *this;
11274 }
11275
11276 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11277 {
11278 deviceIndexCount = deviceIndexCount_;
11279 return *this;
11280 }
11281
11282 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11283 {
11284 pDeviceIndices = pDeviceIndices_;
11285 return *this;
11286 }
11287
11288 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11289 {
11290 SFRRectCount = SFRRectCount_;
11291 return *this;
11292 }
11293
11294 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11295 {
11296 pSFRRects = pSFRRects_;
11297 return *this;
11298 }
11299
11300 operator const VkBindImageMemoryInfoKHX&() const
11301 {
11302 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11303 }
11304
11305 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11306 {
11307 return ( sType == rhs.sType )
11308 && ( pNext == rhs.pNext )
11309 && ( image == rhs.image )
11310 && ( memory == rhs.memory )
11311 && ( memoryOffset == rhs.memoryOffset )
11312 && ( deviceIndexCount == rhs.deviceIndexCount )
11313 && ( pDeviceIndices == rhs.pDeviceIndices )
11314 && ( SFRRectCount == rhs.SFRRectCount )
11315 && ( pSFRRects == rhs.pSFRRects );
11316 }
11317
11318 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11319 {
11320 return !operator==( rhs );
11321 }
11322
11323 private:
11324 StructureType sType;
11325
11326 public:
11327 const void* pNext;
11328 Image image;
11329 DeviceMemory memory;
11330 DeviceSize memoryOffset;
11331 uint32_t deviceIndexCount;
11332 const uint32_t* pDeviceIndices;
11333 uint32_t SFRRectCount;
11334 const Rect2D* pSFRRects;
11335 };
11336 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11337
11338 struct DeviceGroupRenderPassBeginInfoKHX
11339 {
11340 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11341 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11342 , pNext( nullptr )
11343 , deviceMask( deviceMask_ )
11344 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11345 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11346 {
11347 }
11348
11349 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11350 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011351 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011352 }
11353
11354 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11355 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011356 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011357 return *this;
11358 }
Mark Young0f183a82017-02-28 09:58:04 -070011359 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11360 {
11361 pNext = pNext_;
11362 return *this;
11363 }
11364
11365 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11366 {
11367 deviceMask = deviceMask_;
11368 return *this;
11369 }
11370
11371 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11372 {
11373 deviceRenderAreaCount = deviceRenderAreaCount_;
11374 return *this;
11375 }
11376
11377 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11378 {
11379 pDeviceRenderAreas = pDeviceRenderAreas_;
11380 return *this;
11381 }
11382
11383 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11384 {
11385 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11386 }
11387
11388 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11389 {
11390 return ( sType == rhs.sType )
11391 && ( pNext == rhs.pNext )
11392 && ( deviceMask == rhs.deviceMask )
11393 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11394 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11395 }
11396
11397 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11398 {
11399 return !operator==( rhs );
11400 }
11401
11402 private:
11403 StructureType sType;
11404
11405 public:
11406 const void* pNext;
11407 uint32_t deviceMask;
11408 uint32_t deviceRenderAreaCount;
11409 const Rect2D* pDeviceRenderAreas;
11410 };
11411 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11412
11413 struct DeviceGroupCommandBufferBeginInfoKHX
11414 {
11415 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11416 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11417 , pNext( nullptr )
11418 , deviceMask( deviceMask_ )
11419 {
11420 }
11421
11422 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011424 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011425 }
11426
11427 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011429 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011430 return *this;
11431 }
Mark Young0f183a82017-02-28 09:58:04 -070011432 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11433 {
11434 pNext = pNext_;
11435 return *this;
11436 }
11437
11438 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11439 {
11440 deviceMask = deviceMask_;
11441 return *this;
11442 }
11443
11444 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11445 {
11446 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11447 }
11448
11449 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11450 {
11451 return ( sType == rhs.sType )
11452 && ( pNext == rhs.pNext )
11453 && ( deviceMask == rhs.deviceMask );
11454 }
11455
11456 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11457 {
11458 return !operator==( rhs );
11459 }
11460
11461 private:
11462 StructureType sType;
11463
11464 public:
11465 const void* pNext;
11466 uint32_t deviceMask;
11467 };
11468 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11469
11470 struct DeviceGroupSubmitInfoKHX
11471 {
11472 DeviceGroupSubmitInfoKHX( uint32_t waitSemaphoreCount_ = 0, const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr, uint32_t commandBufferCount_ = 0, const uint32_t* pCommandBufferDeviceMasks_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr )
11473 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11474 , pNext( nullptr )
11475 , waitSemaphoreCount( waitSemaphoreCount_ )
11476 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11477 , commandBufferCount( commandBufferCount_ )
11478 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11479 , signalSemaphoreCount( signalSemaphoreCount_ )
11480 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11481 {
11482 }
11483
11484 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11485 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011486 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011487 }
11488
11489 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11490 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011491 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011492 return *this;
11493 }
Mark Young0f183a82017-02-28 09:58:04 -070011494 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11495 {
11496 pNext = pNext_;
11497 return *this;
11498 }
11499
11500 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11501 {
11502 waitSemaphoreCount = waitSemaphoreCount_;
11503 return *this;
11504 }
11505
11506 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11507 {
11508 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11509 return *this;
11510 }
11511
11512 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11513 {
11514 commandBufferCount = commandBufferCount_;
11515 return *this;
11516 }
11517
11518 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11519 {
11520 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11521 return *this;
11522 }
11523
11524 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11525 {
11526 signalSemaphoreCount = signalSemaphoreCount_;
11527 return *this;
11528 }
11529
11530 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11531 {
11532 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11533 return *this;
11534 }
11535
11536 operator const VkDeviceGroupSubmitInfoKHX&() const
11537 {
11538 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11539 }
11540
11541 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11542 {
11543 return ( sType == rhs.sType )
11544 && ( pNext == rhs.pNext )
11545 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11546 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11547 && ( commandBufferCount == rhs.commandBufferCount )
11548 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11549 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11550 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11551 }
11552
11553 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11554 {
11555 return !operator==( rhs );
11556 }
11557
11558 private:
11559 StructureType sType;
11560
11561 public:
11562 const void* pNext;
11563 uint32_t waitSemaphoreCount;
11564 const uint32_t* pWaitSemaphoreDeviceIndices;
11565 uint32_t commandBufferCount;
11566 const uint32_t* pCommandBufferDeviceMasks;
11567 uint32_t signalSemaphoreCount;
11568 const uint32_t* pSignalSemaphoreDeviceIndices;
11569 };
11570 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11571
11572 struct DeviceGroupBindSparseInfoKHX
11573 {
11574 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11575 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11576 , pNext( nullptr )
11577 , resourceDeviceIndex( resourceDeviceIndex_ )
11578 , memoryDeviceIndex( memoryDeviceIndex_ )
11579 {
11580 }
11581
11582 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011584 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011585 }
11586
11587 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11588 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011589 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011590 return *this;
11591 }
Mark Young0f183a82017-02-28 09:58:04 -070011592 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11593 {
11594 pNext = pNext_;
11595 return *this;
11596 }
11597
11598 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11599 {
11600 resourceDeviceIndex = resourceDeviceIndex_;
11601 return *this;
11602 }
11603
11604 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11605 {
11606 memoryDeviceIndex = memoryDeviceIndex_;
11607 return *this;
11608 }
11609
11610 operator const VkDeviceGroupBindSparseInfoKHX&() const
11611 {
11612 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11613 }
11614
11615 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11616 {
11617 return ( sType == rhs.sType )
11618 && ( pNext == rhs.pNext )
11619 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11620 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11621 }
11622
11623 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11624 {
11625 return !operator==( rhs );
11626 }
11627
11628 private:
11629 StructureType sType;
11630
11631 public:
11632 const void* pNext;
11633 uint32_t resourceDeviceIndex;
11634 uint32_t memoryDeviceIndex;
11635 };
11636 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11637
11638 struct ImageSwapchainCreateInfoKHX
11639 {
11640 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11641 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11642 , pNext( nullptr )
11643 , swapchain( swapchain_ )
11644 {
11645 }
11646
11647 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11648 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011649 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011650 }
11651
11652 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11653 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011654 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011655 return *this;
11656 }
Mark Young0f183a82017-02-28 09:58:04 -070011657 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11658 {
11659 pNext = pNext_;
11660 return *this;
11661 }
11662
11663 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11664 {
11665 swapchain = swapchain_;
11666 return *this;
11667 }
11668
11669 operator const VkImageSwapchainCreateInfoKHX&() const
11670 {
11671 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11672 }
11673
11674 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11675 {
11676 return ( sType == rhs.sType )
11677 && ( pNext == rhs.pNext )
11678 && ( swapchain == rhs.swapchain );
11679 }
11680
11681 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11682 {
11683 return !operator==( rhs );
11684 }
11685
11686 private:
11687 StructureType sType;
11688
11689 public:
11690 const void* pNext;
11691 SwapchainKHR swapchain;
11692 };
11693 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11694
11695 struct BindImageMemorySwapchainInfoKHX
11696 {
11697 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11698 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11699 , pNext( nullptr )
11700 , swapchain( swapchain_ )
11701 , imageIndex( imageIndex_ )
11702 {
11703 }
11704
11705 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11706 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011707 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011708 }
11709
11710 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11711 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011712 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011713 return *this;
11714 }
Mark Young0f183a82017-02-28 09:58:04 -070011715 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11716 {
11717 pNext = pNext_;
11718 return *this;
11719 }
11720
11721 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11722 {
11723 swapchain = swapchain_;
11724 return *this;
11725 }
11726
11727 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11728 {
11729 imageIndex = imageIndex_;
11730 return *this;
11731 }
11732
11733 operator const VkBindImageMemorySwapchainInfoKHX&() const
11734 {
11735 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11736 }
11737
11738 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11739 {
11740 return ( sType == rhs.sType )
11741 && ( pNext == rhs.pNext )
11742 && ( swapchain == rhs.swapchain )
11743 && ( imageIndex == rhs.imageIndex );
11744 }
11745
11746 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11747 {
11748 return !operator==( rhs );
11749 }
11750
11751 private:
11752 StructureType sType;
11753
11754 public:
11755 const void* pNext;
11756 SwapchainKHR swapchain;
11757 uint32_t imageIndex;
11758 };
11759 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11760
11761 struct AcquireNextImageInfoKHX
11762 {
11763 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11764 : sType( StructureType::eAcquireNextImageInfoKHX )
11765 , pNext( nullptr )
11766 , swapchain( swapchain_ )
11767 , timeout( timeout_ )
11768 , semaphore( semaphore_ )
11769 , fence( fence_ )
11770 , deviceMask( deviceMask_ )
11771 {
11772 }
11773
11774 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11775 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011776 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011777 }
11778
11779 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11780 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011781 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011782 return *this;
11783 }
Mark Young0f183a82017-02-28 09:58:04 -070011784 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11785 {
11786 pNext = pNext_;
11787 return *this;
11788 }
11789
11790 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11791 {
11792 swapchain = swapchain_;
11793 return *this;
11794 }
11795
11796 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11797 {
11798 timeout = timeout_;
11799 return *this;
11800 }
11801
11802 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11803 {
11804 semaphore = semaphore_;
11805 return *this;
11806 }
11807
11808 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11809 {
11810 fence = fence_;
11811 return *this;
11812 }
11813
11814 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11815 {
11816 deviceMask = deviceMask_;
11817 return *this;
11818 }
11819
11820 operator const VkAcquireNextImageInfoKHX&() const
11821 {
11822 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11823 }
11824
11825 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11826 {
11827 return ( sType == rhs.sType )
11828 && ( pNext == rhs.pNext )
11829 && ( swapchain == rhs.swapchain )
11830 && ( timeout == rhs.timeout )
11831 && ( semaphore == rhs.semaphore )
11832 && ( fence == rhs.fence )
11833 && ( deviceMask == rhs.deviceMask );
11834 }
11835
11836 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11837 {
11838 return !operator==( rhs );
11839 }
11840
11841 private:
11842 StructureType sType;
11843
11844 public:
11845 const void* pNext;
11846 SwapchainKHR swapchain;
11847 uint64_t timeout;
11848 Semaphore semaphore;
11849 Fence fence;
11850 uint32_t deviceMask;
11851 };
11852 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11853
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011854 struct HdrMetadataEXT
11855 {
11856 HdrMetadataEXT( XYColorEXT displayPrimaryRed_ = XYColorEXT(), XYColorEXT displayPrimaryGreen_ = XYColorEXT(), XYColorEXT displayPrimaryBlue_ = XYColorEXT(), XYColorEXT whitePoint_ = XYColorEXT(), float maxLuminance_ = 0, float minLuminance_ = 0, float maxContentLightLevel_ = 0, float maxFrameAverageLightLevel_ = 0 )
11857 : sType( StructureType::eHdrMetadataEXT )
11858 , pNext( nullptr )
11859 , displayPrimaryRed( displayPrimaryRed_ )
11860 , displayPrimaryGreen( displayPrimaryGreen_ )
11861 , displayPrimaryBlue( displayPrimaryBlue_ )
11862 , whitePoint( whitePoint_ )
11863 , maxLuminance( maxLuminance_ )
11864 , minLuminance( minLuminance_ )
11865 , maxContentLightLevel( maxContentLightLevel_ )
11866 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11867 {
11868 }
11869
11870 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11871 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011872 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011873 }
11874
11875 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11876 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011877 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011878 return *this;
11879 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011880 HdrMetadataEXT& setPNext( const void* pNext_ )
11881 {
11882 pNext = pNext_;
11883 return *this;
11884 }
11885
11886 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11887 {
11888 displayPrimaryRed = displayPrimaryRed_;
11889 return *this;
11890 }
11891
11892 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11893 {
11894 displayPrimaryGreen = displayPrimaryGreen_;
11895 return *this;
11896 }
11897
11898 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11899 {
11900 displayPrimaryBlue = displayPrimaryBlue_;
11901 return *this;
11902 }
11903
11904 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11905 {
11906 whitePoint = whitePoint_;
11907 return *this;
11908 }
11909
11910 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11911 {
11912 maxLuminance = maxLuminance_;
11913 return *this;
11914 }
11915
11916 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11917 {
11918 minLuminance = minLuminance_;
11919 return *this;
11920 }
11921
11922 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11923 {
11924 maxContentLightLevel = maxContentLightLevel_;
11925 return *this;
11926 }
11927
11928 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11929 {
11930 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11931 return *this;
11932 }
11933
11934 operator const VkHdrMetadataEXT&() const
11935 {
11936 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11937 }
11938
11939 bool operator==( HdrMetadataEXT const& rhs ) const
11940 {
11941 return ( sType == rhs.sType )
11942 && ( pNext == rhs.pNext )
11943 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11944 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11945 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11946 && ( whitePoint == rhs.whitePoint )
11947 && ( maxLuminance == rhs.maxLuminance )
11948 && ( minLuminance == rhs.minLuminance )
11949 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11950 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11951 }
11952
11953 bool operator!=( HdrMetadataEXT const& rhs ) const
11954 {
11955 return !operator==( rhs );
11956 }
11957
11958 private:
11959 StructureType sType;
11960
11961 public:
11962 const void* pNext;
11963 XYColorEXT displayPrimaryRed;
11964 XYColorEXT displayPrimaryGreen;
11965 XYColorEXT displayPrimaryBlue;
11966 XYColorEXT whitePoint;
11967 float maxLuminance;
11968 float minLuminance;
11969 float maxContentLightLevel;
11970 float maxFrameAverageLightLevel;
11971 };
11972 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11973
11974 struct PresentTimesInfoGOOGLE
11975 {
11976 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11977 : sType( StructureType::ePresentTimesInfoGOOGLE )
11978 , pNext( nullptr )
11979 , swapchainCount( swapchainCount_ )
11980 , pTimes( pTimes_ )
11981 {
11982 }
11983
11984 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011986 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011987 }
11988
11989 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011991 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011992 return *this;
11993 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011994 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11995 {
11996 pNext = pNext_;
11997 return *this;
11998 }
11999
12000 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12001 {
12002 swapchainCount = swapchainCount_;
12003 return *this;
12004 }
12005
12006 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12007 {
12008 pTimes = pTimes_;
12009 return *this;
12010 }
12011
12012 operator const VkPresentTimesInfoGOOGLE&() const
12013 {
12014 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12015 }
12016
12017 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12018 {
12019 return ( sType == rhs.sType )
12020 && ( pNext == rhs.pNext )
12021 && ( swapchainCount == rhs.swapchainCount )
12022 && ( pTimes == rhs.pTimes );
12023 }
12024
12025 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12026 {
12027 return !operator==( rhs );
12028 }
12029
12030 private:
12031 StructureType sType;
12032
12033 public:
12034 const void* pNext;
12035 uint32_t swapchainCount;
12036 const PresentTimeGOOGLE* pTimes;
12037 };
12038 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12039
Mark Young0f183a82017-02-28 09:58:04 -070012040#ifdef VK_USE_PLATFORM_IOS_MVK
12041 struct IOSSurfaceCreateInfoMVK
12042 {
12043 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12044 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12045 , pNext( nullptr )
12046 , flags( flags_ )
12047 , pView( pView_ )
12048 {
12049 }
12050
12051 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012053 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012054 }
12055
12056 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012058 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012059 return *this;
12060 }
Mark Young0f183a82017-02-28 09:58:04 -070012061 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12062 {
12063 pNext = pNext_;
12064 return *this;
12065 }
12066
12067 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12068 {
12069 flags = flags_;
12070 return *this;
12071 }
12072
12073 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12074 {
12075 pView = pView_;
12076 return *this;
12077 }
12078
12079 operator const VkIOSSurfaceCreateInfoMVK&() const
12080 {
12081 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12082 }
12083
12084 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12085 {
12086 return ( sType == rhs.sType )
12087 && ( pNext == rhs.pNext )
12088 && ( flags == rhs.flags )
12089 && ( pView == rhs.pView );
12090 }
12091
12092 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12093 {
12094 return !operator==( rhs );
12095 }
12096
12097 private:
12098 StructureType sType;
12099
12100 public:
12101 const void* pNext;
12102 IOSSurfaceCreateFlagsMVK flags;
12103 const void* pView;
12104 };
12105 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12106#endif /*VK_USE_PLATFORM_IOS_MVK*/
12107
12108#ifdef VK_USE_PLATFORM_MACOS_MVK
12109 struct MacOSSurfaceCreateInfoMVK
12110 {
12111 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12112 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12113 , pNext( nullptr )
12114 , flags( flags_ )
12115 , pView( pView_ )
12116 {
12117 }
12118
12119 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012121 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012122 }
12123
12124 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012126 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012127 return *this;
12128 }
Mark Young0f183a82017-02-28 09:58:04 -070012129 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12130 {
12131 pNext = pNext_;
12132 return *this;
12133 }
12134
12135 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12136 {
12137 flags = flags_;
12138 return *this;
12139 }
12140
12141 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12142 {
12143 pView = pView_;
12144 return *this;
12145 }
12146
12147 operator const VkMacOSSurfaceCreateInfoMVK&() const
12148 {
12149 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12150 }
12151
12152 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12153 {
12154 return ( sType == rhs.sType )
12155 && ( pNext == rhs.pNext )
12156 && ( flags == rhs.flags )
12157 && ( pView == rhs.pView );
12158 }
12159
12160 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12161 {
12162 return !operator==( rhs );
12163 }
12164
12165 private:
12166 StructureType sType;
12167
12168 public:
12169 const void* pNext;
12170 MacOSSurfaceCreateFlagsMVK flags;
12171 const void* pView;
12172 };
12173 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12174#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12175
12176 struct PipelineViewportWScalingStateCreateInfoNV
12177 {
12178 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12179 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12180 , pNext( nullptr )
12181 , viewportWScalingEnable( viewportWScalingEnable_ )
12182 , viewportCount( viewportCount_ )
12183 , pViewportWScalings( pViewportWScalings_ )
12184 {
12185 }
12186
12187 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12188 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012189 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012190 }
12191
12192 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12193 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012194 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012195 return *this;
12196 }
Mark Young0f183a82017-02-28 09:58:04 -070012197 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12198 {
12199 pNext = pNext_;
12200 return *this;
12201 }
12202
12203 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12204 {
12205 viewportWScalingEnable = viewportWScalingEnable_;
12206 return *this;
12207 }
12208
12209 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12210 {
12211 viewportCount = viewportCount_;
12212 return *this;
12213 }
12214
12215 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12216 {
12217 pViewportWScalings = pViewportWScalings_;
12218 return *this;
12219 }
12220
12221 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12222 {
12223 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12224 }
12225
12226 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12227 {
12228 return ( sType == rhs.sType )
12229 && ( pNext == rhs.pNext )
12230 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12231 && ( viewportCount == rhs.viewportCount )
12232 && ( pViewportWScalings == rhs.pViewportWScalings );
12233 }
12234
12235 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12236 {
12237 return !operator==( rhs );
12238 }
12239
12240 private:
12241 StructureType sType;
12242
12243 public:
12244 const void* pNext;
12245 Bool32 viewportWScalingEnable;
12246 uint32_t viewportCount;
12247 const ViewportWScalingNV* pViewportWScalings;
12248 };
12249 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12250
12251 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12252 {
12253 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12254 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12255 , pNext( nullptr )
12256 , maxDiscardRectangles( maxDiscardRectangles_ )
12257 {
12258 }
12259
12260 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012262 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012263 }
12264
12265 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012267 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012268 return *this;
12269 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012270 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012271 {
12272 pNext = pNext_;
12273 return *this;
12274 }
12275
12276 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12277 {
12278 maxDiscardRectangles = maxDiscardRectangles_;
12279 return *this;
12280 }
12281
12282 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12283 {
12284 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12285 }
12286
12287 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12288 {
12289 return ( sType == rhs.sType )
12290 && ( pNext == rhs.pNext )
12291 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12292 }
12293
12294 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12295 {
12296 return !operator==( rhs );
12297 }
12298
12299 private:
12300 StructureType sType;
12301
12302 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012303 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012304 uint32_t maxDiscardRectangles;
12305 };
12306 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12307
12308 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12309 {
12310 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12311 {
12312 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12313 }
12314
12315 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12316 {
12317 return ( sType == rhs.sType )
12318 && ( pNext == rhs.pNext )
12319 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12320 }
12321
12322 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12323 {
12324 return !operator==( rhs );
12325 }
12326
12327 private:
12328 StructureType sType;
12329
12330 public:
12331 void* pNext;
12332 Bool32 perViewPositionAllComponents;
12333 };
12334 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12335
Mark Lobodzinski54385432017-05-15 10:27:52 -060012336 struct PhysicalDeviceSurfaceInfo2KHR
12337 {
12338 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12339 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12340 , pNext( nullptr )
12341 , surface( surface_ )
12342 {
12343 }
12344
12345 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12346 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012347 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012348 }
12349
12350 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12351 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012352 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012353 return *this;
12354 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012355 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12356 {
12357 pNext = pNext_;
12358 return *this;
12359 }
12360
12361 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12362 {
12363 surface = surface_;
12364 return *this;
12365 }
12366
12367 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12368 {
12369 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12370 }
12371
12372 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12373 {
12374 return ( sType == rhs.sType )
12375 && ( pNext == rhs.pNext )
12376 && ( surface == rhs.surface );
12377 }
12378
12379 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12380 {
12381 return !operator==( rhs );
12382 }
12383
12384 private:
12385 StructureType sType;
12386
12387 public:
12388 const void* pNext;
12389 SurfaceKHR surface;
12390 };
12391 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12392
Mark Youngabc2d6e2017-07-07 07:59:56 -060012393 struct PhysicalDevice16BitStorageFeaturesKHR
12394 {
12395 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12396 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12397 , pNext( nullptr )
12398 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12399 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12400 , storagePushConstant16( storagePushConstant16_ )
12401 , storageInputOutput16( storageInputOutput16_ )
12402 {
12403 }
12404
12405 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12406 {
12407 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12408 }
12409
12410 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12411 {
12412 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12413 return *this;
12414 }
12415 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12416 {
12417 pNext = pNext_;
12418 return *this;
12419 }
12420
12421 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12422 {
12423 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12424 return *this;
12425 }
12426
12427 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12428 {
12429 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12430 return *this;
12431 }
12432
12433 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12434 {
12435 storagePushConstant16 = storagePushConstant16_;
12436 return *this;
12437 }
12438
12439 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12440 {
12441 storageInputOutput16 = storageInputOutput16_;
12442 return *this;
12443 }
12444
12445 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12446 {
12447 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12448 }
12449
12450 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12451 {
12452 return ( sType == rhs.sType )
12453 && ( pNext == rhs.pNext )
12454 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12455 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12456 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12457 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12458 }
12459
12460 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12461 {
12462 return !operator==( rhs );
12463 }
12464
12465 private:
12466 StructureType sType;
12467
12468 public:
12469 void* pNext;
12470 Bool32 storageBuffer16BitAccess;
12471 Bool32 uniformAndStorageBuffer16BitAccess;
12472 Bool32 storagePushConstant16;
12473 Bool32 storageInputOutput16;
12474 };
12475 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12476
12477 struct BufferMemoryRequirementsInfo2KHR
12478 {
12479 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12480 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12481 , pNext( nullptr )
12482 , buffer( buffer_ )
12483 {
12484 }
12485
12486 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12487 {
12488 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12489 }
12490
12491 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12492 {
12493 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12494 return *this;
12495 }
12496 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12497 {
12498 pNext = pNext_;
12499 return *this;
12500 }
12501
12502 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12503 {
12504 buffer = buffer_;
12505 return *this;
12506 }
12507
12508 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12509 {
12510 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12511 }
12512
12513 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12514 {
12515 return ( sType == rhs.sType )
12516 && ( pNext == rhs.pNext )
12517 && ( buffer == rhs.buffer );
12518 }
12519
12520 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12521 {
12522 return !operator==( rhs );
12523 }
12524
12525 private:
12526 StructureType sType;
12527
12528 public:
12529 const void* pNext;
12530 Buffer buffer;
12531 };
12532 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12533
12534 struct ImageMemoryRequirementsInfo2KHR
12535 {
12536 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
12537 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
12538 , pNext( nullptr )
12539 , image( image_ )
12540 {
12541 }
12542
12543 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12544 {
12545 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12546 }
12547
12548 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12549 {
12550 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12551 return *this;
12552 }
12553 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12554 {
12555 pNext = pNext_;
12556 return *this;
12557 }
12558
12559 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12560 {
12561 image = image_;
12562 return *this;
12563 }
12564
12565 operator const VkImageMemoryRequirementsInfo2KHR&() const
12566 {
12567 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
12568 }
12569
12570 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12571 {
12572 return ( sType == rhs.sType )
12573 && ( pNext == rhs.pNext )
12574 && ( image == rhs.image );
12575 }
12576
12577 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12578 {
12579 return !operator==( rhs );
12580 }
12581
12582 private:
12583 StructureType sType;
12584
12585 public:
12586 const void* pNext;
12587 Image image;
12588 };
12589 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12590
12591 struct ImageSparseMemoryRequirementsInfo2KHR
12592 {
12593 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
12594 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
12595 , pNext( nullptr )
12596 , image( image_ )
12597 {
12598 }
12599
12600 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12601 {
12602 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12603 }
12604
12605 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12606 {
12607 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12608 return *this;
12609 }
12610 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12611 {
12612 pNext = pNext_;
12613 return *this;
12614 }
12615
12616 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
12617 {
12618 image = image_;
12619 return *this;
12620 }
12621
12622 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
12623 {
12624 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
12625 }
12626
12627 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12628 {
12629 return ( sType == rhs.sType )
12630 && ( pNext == rhs.pNext )
12631 && ( image == rhs.image );
12632 }
12633
12634 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12635 {
12636 return !operator==( rhs );
12637 }
12638
12639 private:
12640 StructureType sType;
12641
12642 public:
12643 const void* pNext;
12644 Image image;
12645 };
12646 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12647
12648 struct MemoryRequirements2KHR
12649 {
12650 operator const VkMemoryRequirements2KHR&() const
12651 {
12652 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
12653 }
12654
12655 bool operator==( MemoryRequirements2KHR const& rhs ) const
12656 {
12657 return ( sType == rhs.sType )
12658 && ( pNext == rhs.pNext )
12659 && ( memoryRequirements == rhs.memoryRequirements );
12660 }
12661
12662 bool operator!=( MemoryRequirements2KHR const& rhs ) const
12663 {
12664 return !operator==( rhs );
12665 }
12666
12667 private:
12668 StructureType sType;
12669
12670 public:
12671 void* pNext;
12672 MemoryRequirements memoryRequirements;
12673 };
12674 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
12675
12676 struct MemoryDedicatedRequirementsKHR
12677 {
12678 operator const VkMemoryDedicatedRequirementsKHR&() const
12679 {
12680 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
12681 }
12682
12683 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
12684 {
12685 return ( sType == rhs.sType )
12686 && ( pNext == rhs.pNext )
12687 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
12688 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
12689 }
12690
12691 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
12692 {
12693 return !operator==( rhs );
12694 }
12695
12696 private:
12697 StructureType sType;
12698
12699 public:
12700 void* pNext;
12701 Bool32 prefersDedicatedAllocation;
12702 Bool32 requiresDedicatedAllocation;
12703 };
12704 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
12705
12706 struct MemoryDedicatedAllocateInfoKHR
12707 {
12708 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
12709 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
12710 , pNext( nullptr )
12711 , image( image_ )
12712 , buffer( buffer_ )
12713 {
12714 }
12715
12716 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12717 {
12718 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12719 }
12720
12721 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12722 {
12723 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12724 return *this;
12725 }
12726 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
12727 {
12728 pNext = pNext_;
12729 return *this;
12730 }
12731
12732 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
12733 {
12734 image = image_;
12735 return *this;
12736 }
12737
12738 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
12739 {
12740 buffer = buffer_;
12741 return *this;
12742 }
12743
12744 operator const VkMemoryDedicatedAllocateInfoKHR&() const
12745 {
12746 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
12747 }
12748
12749 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12750 {
12751 return ( sType == rhs.sType )
12752 && ( pNext == rhs.pNext )
12753 && ( image == rhs.image )
12754 && ( buffer == rhs.buffer );
12755 }
12756
12757 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12758 {
12759 return !operator==( rhs );
12760 }
12761
12762 private:
12763 StructureType sType;
12764
12765 public:
12766 const void* pNext;
12767 Image image;
12768 Buffer buffer;
12769 };
12770 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
12771
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012772 struct TextureLODGatherFormatPropertiesAMD
12773 {
12774 operator const VkTextureLODGatherFormatPropertiesAMD&() const
12775 {
12776 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
12777 }
12778
12779 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12780 {
12781 return ( sType == rhs.sType )
12782 && ( pNext == rhs.pNext )
12783 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
12784 }
12785
12786 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12787 {
12788 return !operator==( rhs );
12789 }
12790
12791 private:
12792 StructureType sType;
12793
12794 public:
12795 void* pNext;
12796 Bool32 supportsTextureGatherLODBiasAMD;
12797 };
12798 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
12799
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060012800 struct PipelineCoverageToColorStateCreateInfoNV
12801 {
12802 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
12803 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
12804 , pNext( nullptr )
12805 , flags( flags_ )
12806 , coverageToColorEnable( coverageToColorEnable_ )
12807 , coverageToColorLocation( coverageToColorLocation_ )
12808 {
12809 }
12810
12811 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12812 {
12813 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12814 }
12815
12816 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12817 {
12818 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12819 return *this;
12820 }
12821 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
12822 {
12823 pNext = pNext_;
12824 return *this;
12825 }
12826
12827 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
12828 {
12829 flags = flags_;
12830 return *this;
12831 }
12832
12833 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
12834 {
12835 coverageToColorEnable = coverageToColorEnable_;
12836 return *this;
12837 }
12838
12839 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
12840 {
12841 coverageToColorLocation = coverageToColorLocation_;
12842 return *this;
12843 }
12844
12845 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
12846 {
12847 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
12848 }
12849
12850 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12851 {
12852 return ( sType == rhs.sType )
12853 && ( pNext == rhs.pNext )
12854 && ( flags == rhs.flags )
12855 && ( coverageToColorEnable == rhs.coverageToColorEnable )
12856 && ( coverageToColorLocation == rhs.coverageToColorLocation );
12857 }
12858
12859 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12860 {
12861 return !operator==( rhs );
12862 }
12863
12864 private:
12865 StructureType sType;
12866
12867 public:
12868 const void* pNext;
12869 PipelineCoverageToColorStateCreateFlagsNV flags;
12870 Bool32 coverageToColorEnable;
12871 uint32_t coverageToColorLocation;
12872 };
12873 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
12874
12875 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
12876 {
12877 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
12878 {
12879 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
12880 }
12881
12882 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12883 {
12884 return ( sType == rhs.sType )
12885 && ( pNext == rhs.pNext )
12886 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
12887 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
12888 }
12889
12890 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12891 {
12892 return !operator==( rhs );
12893 }
12894
12895 private:
12896 StructureType sType;
12897
12898 public:
12899 void* pNext;
12900 Bool32 filterMinmaxSingleComponentFormats;
12901 Bool32 filterMinmaxImageComponentMapping;
12902 };
12903 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
12904
12905 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
12906 {
12907 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
12908 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
12909 , pNext( nullptr )
12910 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
12911 {
12912 }
12913
12914 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12915 {
12916 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12917 }
12918
12919 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12920 {
12921 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12922 return *this;
12923 }
12924 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
12925 {
12926 pNext = pNext_;
12927 return *this;
12928 }
12929
12930 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
12931 {
12932 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
12933 return *this;
12934 }
12935
12936 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
12937 {
12938 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
12939 }
12940
12941 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12942 {
12943 return ( sType == rhs.sType )
12944 && ( pNext == rhs.pNext )
12945 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
12946 }
12947
12948 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12949 {
12950 return !operator==( rhs );
12951 }
12952
12953 private:
12954 StructureType sType;
12955
12956 public:
12957 void* pNext;
12958 Bool32 advancedBlendCoherentOperations;
12959 };
12960 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
12961
12962 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
12963 {
12964 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
12965 {
12966 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
12967 }
12968
12969 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12970 {
12971 return ( sType == rhs.sType )
12972 && ( pNext == rhs.pNext )
12973 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
12974 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
12975 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
12976 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
12977 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
12978 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
12979 }
12980
12981 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12982 {
12983 return !operator==( rhs );
12984 }
12985
12986 private:
12987 StructureType sType;
12988
12989 public:
12990 void* pNext;
12991 uint32_t advancedBlendMaxColorAttachments;
12992 Bool32 advancedBlendIndependentBlend;
12993 Bool32 advancedBlendNonPremultipliedSrcColor;
12994 Bool32 advancedBlendNonPremultipliedDstColor;
12995 Bool32 advancedBlendCorrelatedOverlap;
12996 Bool32 advancedBlendAllOperations;
12997 };
12998 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
12999
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013000 enum class SubpassContents
13001 {
13002 eInline = VK_SUBPASS_CONTENTS_INLINE,
13003 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13004 };
13005
13006 struct PresentInfoKHR
13007 {
13008 PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, uint32_t swapchainCount_ = 0, const SwapchainKHR* pSwapchains_ = nullptr, const uint32_t* pImageIndices_ = nullptr, Result* pResults_ = nullptr )
13009 : sType( StructureType::ePresentInfoKHR )
13010 , pNext( nullptr )
13011 , waitSemaphoreCount( waitSemaphoreCount_ )
13012 , pWaitSemaphores( pWaitSemaphores_ )
13013 , swapchainCount( swapchainCount_ )
13014 , pSwapchains( pSwapchains_ )
13015 , pImageIndices( pImageIndices_ )
13016 , pResults( pResults_ )
13017 {
13018 }
13019
13020 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013022 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013023 }
13024
13025 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13026 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013027 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013028 return *this;
13029 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013030 PresentInfoKHR& setPNext( const void* pNext_ )
13031 {
13032 pNext = pNext_;
13033 return *this;
13034 }
13035
13036 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13037 {
13038 waitSemaphoreCount = waitSemaphoreCount_;
13039 return *this;
13040 }
13041
13042 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13043 {
13044 pWaitSemaphores = pWaitSemaphores_;
13045 return *this;
13046 }
13047
13048 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13049 {
13050 swapchainCount = swapchainCount_;
13051 return *this;
13052 }
13053
13054 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13055 {
13056 pSwapchains = pSwapchains_;
13057 return *this;
13058 }
13059
13060 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13061 {
13062 pImageIndices = pImageIndices_;
13063 return *this;
13064 }
13065
13066 PresentInfoKHR& setPResults( Result* pResults_ )
13067 {
13068 pResults = pResults_;
13069 return *this;
13070 }
13071
13072 operator const VkPresentInfoKHR&() const
13073 {
13074 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13075 }
13076
13077 bool operator==( PresentInfoKHR const& rhs ) const
13078 {
13079 return ( sType == rhs.sType )
13080 && ( pNext == rhs.pNext )
13081 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13082 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13083 && ( swapchainCount == rhs.swapchainCount )
13084 && ( pSwapchains == rhs.pSwapchains )
13085 && ( pImageIndices == rhs.pImageIndices )
13086 && ( pResults == rhs.pResults );
13087 }
13088
13089 bool operator!=( PresentInfoKHR const& rhs ) const
13090 {
13091 return !operator==( rhs );
13092 }
13093
13094 private:
13095 StructureType sType;
13096
13097 public:
13098 const void* pNext;
13099 uint32_t waitSemaphoreCount;
13100 const Semaphore* pWaitSemaphores;
13101 uint32_t swapchainCount;
13102 const SwapchainKHR* pSwapchains;
13103 const uint32_t* pImageIndices;
13104 Result* pResults;
13105 };
13106 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13107
13108 enum class DynamicState
13109 {
13110 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13111 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13112 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13113 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13114 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13115 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13116 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13117 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013118 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13119 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
13120 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013121 };
13122
13123 struct PipelineDynamicStateCreateInfo
13124 {
13125 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13126 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13127 , pNext( nullptr )
13128 , flags( flags_ )
13129 , dynamicStateCount( dynamicStateCount_ )
13130 , pDynamicStates( pDynamicStates_ )
13131 {
13132 }
13133
13134 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013136 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013137 }
13138
13139 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13140 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013141 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013142 return *this;
13143 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013144 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13145 {
13146 pNext = pNext_;
13147 return *this;
13148 }
13149
13150 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13151 {
13152 flags = flags_;
13153 return *this;
13154 }
13155
13156 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13157 {
13158 dynamicStateCount = dynamicStateCount_;
13159 return *this;
13160 }
13161
13162 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
13163 {
13164 pDynamicStates = pDynamicStates_;
13165 return *this;
13166 }
13167
13168 operator const VkPipelineDynamicStateCreateInfo&() const
13169 {
13170 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
13171 }
13172
13173 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
13174 {
13175 return ( sType == rhs.sType )
13176 && ( pNext == rhs.pNext )
13177 && ( flags == rhs.flags )
13178 && ( dynamicStateCount == rhs.dynamicStateCount )
13179 && ( pDynamicStates == rhs.pDynamicStates );
13180 }
13181
13182 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
13183 {
13184 return !operator==( rhs );
13185 }
13186
13187 private:
13188 StructureType sType;
13189
13190 public:
13191 const void* pNext;
13192 PipelineDynamicStateCreateFlags flags;
13193 uint32_t dynamicStateCount;
13194 const DynamicState* pDynamicStates;
13195 };
13196 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
13197
Mark Young0f183a82017-02-28 09:58:04 -070013198 enum class DescriptorUpdateTemplateTypeKHR
13199 {
13200 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
13201 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
13202 };
13203
13204 struct DescriptorUpdateTemplateCreateInfoKHR
13205 {
13206 DescriptorUpdateTemplateCreateInfoKHR( DescriptorUpdateTemplateCreateFlagsKHR flags_ = DescriptorUpdateTemplateCreateFlagsKHR(), uint32_t descriptorUpdateEntryCount_ = 0, const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ = nullptr, DescriptorUpdateTemplateTypeKHR templateType_ = DescriptorUpdateTemplateTypeKHR::eDescriptorSet, DescriptorSetLayout descriptorSetLayout_ = DescriptorSetLayout(), PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, PipelineLayout pipelineLayout_ = PipelineLayout(), uint32_t set_ = 0 )
13207 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
13208 , pNext( nullptr )
13209 , flags( flags_ )
13210 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
13211 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
13212 , templateType( templateType_ )
13213 , descriptorSetLayout( descriptorSetLayout_ )
13214 , pipelineBindPoint( pipelineBindPoint_ )
13215 , pipelineLayout( pipelineLayout_ )
13216 , set( set_ )
13217 {
13218 }
13219
13220 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13221 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013222 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013223 }
13224
13225 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13226 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013227 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013228 return *this;
13229 }
Mark Young0f183a82017-02-28 09:58:04 -070013230 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
13231 {
13232 pNext = pNext_;
13233 return *this;
13234 }
13235
13236 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
13237 {
13238 flags = flags_;
13239 return *this;
13240 }
13241
13242 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
13243 {
13244 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
13245 return *this;
13246 }
13247
13248 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
13249 {
13250 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
13251 return *this;
13252 }
13253
13254 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
13255 {
13256 templateType = templateType_;
13257 return *this;
13258 }
13259
13260 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
13261 {
13262 descriptorSetLayout = descriptorSetLayout_;
13263 return *this;
13264 }
13265
13266 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
13267 {
13268 pipelineBindPoint = pipelineBindPoint_;
13269 return *this;
13270 }
13271
13272 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
13273 {
13274 pipelineLayout = pipelineLayout_;
13275 return *this;
13276 }
13277
13278 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
13279 {
13280 set = set_;
13281 return *this;
13282 }
13283
13284 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
13285 {
13286 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
13287 }
13288
13289 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13290 {
13291 return ( sType == rhs.sType )
13292 && ( pNext == rhs.pNext )
13293 && ( flags == rhs.flags )
13294 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
13295 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
13296 && ( templateType == rhs.templateType )
13297 && ( descriptorSetLayout == rhs.descriptorSetLayout )
13298 && ( pipelineBindPoint == rhs.pipelineBindPoint )
13299 && ( pipelineLayout == rhs.pipelineLayout )
13300 && ( set == rhs.set );
13301 }
13302
13303 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13304 {
13305 return !operator==( rhs );
13306 }
13307
13308 private:
13309 StructureType sType;
13310
13311 public:
13312 void* pNext;
13313 DescriptorUpdateTemplateCreateFlagsKHR flags;
13314 uint32_t descriptorUpdateEntryCount;
13315 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
13316 DescriptorUpdateTemplateTypeKHR templateType;
13317 DescriptorSetLayout descriptorSetLayout;
13318 PipelineBindPoint pipelineBindPoint;
13319 PipelineLayout pipelineLayout;
13320 uint32_t set;
13321 };
13322 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
13323
Mark Lobodzinski54385432017-05-15 10:27:52 -060013324 enum class ObjectType
13325 {
13326 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
13327 eInstance = VK_OBJECT_TYPE_INSTANCE,
13328 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
13329 eDevice = VK_OBJECT_TYPE_DEVICE,
13330 eQueue = VK_OBJECT_TYPE_QUEUE,
13331 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
13332 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
13333 eFence = VK_OBJECT_TYPE_FENCE,
13334 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
13335 eBuffer = VK_OBJECT_TYPE_BUFFER,
13336 eImage = VK_OBJECT_TYPE_IMAGE,
13337 eEvent = VK_OBJECT_TYPE_EVENT,
13338 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
13339 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
13340 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
13341 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
13342 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
13343 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
13344 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
13345 ePipeline = VK_OBJECT_TYPE_PIPELINE,
13346 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
13347 eSampler = VK_OBJECT_TYPE_SAMPLER,
13348 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
13349 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
13350 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
13351 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
13352 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
13353 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
13354 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
13355 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
13356 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
13357 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
13358 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
13359 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
13360 };
13361
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013362 enum class QueueFlagBits
13363 {
13364 eGraphics = VK_QUEUE_GRAPHICS_BIT,
13365 eCompute = VK_QUEUE_COMPUTE_BIT,
13366 eTransfer = VK_QUEUE_TRANSFER_BIT,
13367 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
13368 };
13369
13370 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
13371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013372 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013373 {
13374 return QueueFlags( bit0 ) | bit1;
13375 }
13376
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013377 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
13378 {
13379 return ~( QueueFlags( bits ) );
13380 }
13381
13382 template <> struct FlagTraits<QueueFlagBits>
13383 {
13384 enum
13385 {
13386 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
13387 };
13388 };
13389
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013390 struct QueueFamilyProperties
13391 {
13392 operator const VkQueueFamilyProperties&() const
13393 {
13394 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
13395 }
13396
13397 bool operator==( QueueFamilyProperties const& rhs ) const
13398 {
13399 return ( queueFlags == rhs.queueFlags )
13400 && ( queueCount == rhs.queueCount )
13401 && ( timestampValidBits == rhs.timestampValidBits )
13402 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
13403 }
13404
13405 bool operator!=( QueueFamilyProperties const& rhs ) const
13406 {
13407 return !operator==( rhs );
13408 }
13409
13410 QueueFlags queueFlags;
13411 uint32_t queueCount;
13412 uint32_t timestampValidBits;
13413 Extent3D minImageTransferGranularity;
13414 };
13415 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
13416
Mark Young39389872017-01-19 21:10:49 -070013417 struct QueueFamilyProperties2KHR
13418 {
13419 operator const VkQueueFamilyProperties2KHR&() const
13420 {
13421 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
13422 }
13423
13424 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
13425 {
13426 return ( sType == rhs.sType )
13427 && ( pNext == rhs.pNext )
13428 && ( queueFamilyProperties == rhs.queueFamilyProperties );
13429 }
13430
13431 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
13432 {
13433 return !operator==( rhs );
13434 }
13435
13436 private:
13437 StructureType sType;
13438
13439 public:
13440 void* pNext;
13441 QueueFamilyProperties queueFamilyProperties;
13442 };
13443 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
13444
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013445 enum class MemoryPropertyFlagBits
13446 {
13447 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
13448 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
13449 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
13450 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
13451 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
13452 };
13453
13454 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
13455
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013456 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013457 {
13458 return MemoryPropertyFlags( bit0 ) | bit1;
13459 }
13460
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013461 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
13462 {
13463 return ~( MemoryPropertyFlags( bits ) );
13464 }
13465
13466 template <> struct FlagTraits<MemoryPropertyFlagBits>
13467 {
13468 enum
13469 {
13470 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
13471 };
13472 };
13473
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013474 struct MemoryType
13475 {
13476 operator const VkMemoryType&() const
13477 {
13478 return *reinterpret_cast<const VkMemoryType*>(this);
13479 }
13480
13481 bool operator==( MemoryType const& rhs ) const
13482 {
13483 return ( propertyFlags == rhs.propertyFlags )
13484 && ( heapIndex == rhs.heapIndex );
13485 }
13486
13487 bool operator!=( MemoryType const& rhs ) const
13488 {
13489 return !operator==( rhs );
13490 }
13491
13492 MemoryPropertyFlags propertyFlags;
13493 uint32_t heapIndex;
13494 };
13495 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
13496
13497 enum class MemoryHeapFlagBits
13498 {
Mark Young0f183a82017-02-28 09:58:04 -070013499 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
13500 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013501 };
13502
13503 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
13504
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013505 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013506 {
13507 return MemoryHeapFlags( bit0 ) | bit1;
13508 }
13509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013510 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
13511 {
13512 return ~( MemoryHeapFlags( bits ) );
13513 }
13514
13515 template <> struct FlagTraits<MemoryHeapFlagBits>
13516 {
13517 enum
13518 {
Mark Young0f183a82017-02-28 09:58:04 -070013519 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013520 };
13521 };
13522
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013523 struct MemoryHeap
13524 {
13525 operator const VkMemoryHeap&() const
13526 {
13527 return *reinterpret_cast<const VkMemoryHeap*>(this);
13528 }
13529
13530 bool operator==( MemoryHeap const& rhs ) const
13531 {
13532 return ( size == rhs.size )
13533 && ( flags == rhs.flags );
13534 }
13535
13536 bool operator!=( MemoryHeap const& rhs ) const
13537 {
13538 return !operator==( rhs );
13539 }
13540
13541 DeviceSize size;
13542 MemoryHeapFlags flags;
13543 };
13544 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
13545
13546 struct PhysicalDeviceMemoryProperties
13547 {
13548 operator const VkPhysicalDeviceMemoryProperties&() const
13549 {
13550 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
13551 }
13552
13553 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
13554 {
13555 return ( memoryTypeCount == rhs.memoryTypeCount )
13556 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
13557 && ( memoryHeapCount == rhs.memoryHeapCount )
13558 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
13559 }
13560
13561 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
13562 {
13563 return !operator==( rhs );
13564 }
13565
13566 uint32_t memoryTypeCount;
13567 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
13568 uint32_t memoryHeapCount;
13569 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
13570 };
13571 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
13572
Mark Young39389872017-01-19 21:10:49 -070013573 struct PhysicalDeviceMemoryProperties2KHR
13574 {
13575 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
13576 {
13577 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
13578 }
13579
13580 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13581 {
13582 return ( sType == rhs.sType )
13583 && ( pNext == rhs.pNext )
13584 && ( memoryProperties == rhs.memoryProperties );
13585 }
13586
13587 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13588 {
13589 return !operator==( rhs );
13590 }
13591
13592 private:
13593 StructureType sType;
13594
13595 public:
13596 void* pNext;
13597 PhysicalDeviceMemoryProperties memoryProperties;
13598 };
13599 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
13600
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013601 enum class AccessFlagBits
13602 {
13603 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
13604 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
13605 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
13606 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
13607 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
13608 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
13609 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
13610 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
13611 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
13612 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
13613 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
13614 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
13615 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
13616 eHostRead = VK_ACCESS_HOST_READ_BIT,
13617 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
13618 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013619 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
13620 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013621 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
13622 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013623 };
13624
13625 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
13626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013627 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013628 {
13629 return AccessFlags( bit0 ) | bit1;
13630 }
13631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013632 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
13633 {
13634 return ~( AccessFlags( bits ) );
13635 }
13636
13637 template <> struct FlagTraits<AccessFlagBits>
13638 {
13639 enum
13640 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013641 allFlags = VkFlags(AccessFlagBits::eIndirectCommandRead) | VkFlags(AccessFlagBits::eIndexRead) | VkFlags(AccessFlagBits::eVertexAttributeRead) | VkFlags(AccessFlagBits::eUniformRead) | VkFlags(AccessFlagBits::eInputAttachmentRead) | VkFlags(AccessFlagBits::eShaderRead) | VkFlags(AccessFlagBits::eShaderWrite) | VkFlags(AccessFlagBits::eColorAttachmentRead) | VkFlags(AccessFlagBits::eColorAttachmentWrite) | VkFlags(AccessFlagBits::eDepthStencilAttachmentRead) | VkFlags(AccessFlagBits::eDepthStencilAttachmentWrite) | VkFlags(AccessFlagBits::eTransferRead) | VkFlags(AccessFlagBits::eTransferWrite) | VkFlags(AccessFlagBits::eHostRead) | VkFlags(AccessFlagBits::eHostWrite) | VkFlags(AccessFlagBits::eMemoryRead) | VkFlags(AccessFlagBits::eMemoryWrite) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013642 };
13643 };
13644
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013645 struct MemoryBarrier
13646 {
13647 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
13648 : sType( StructureType::eMemoryBarrier )
13649 , pNext( nullptr )
13650 , srcAccessMask( srcAccessMask_ )
13651 , dstAccessMask( dstAccessMask_ )
13652 {
13653 }
13654
13655 MemoryBarrier( VkMemoryBarrier const & rhs )
13656 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013657 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013658 }
13659
13660 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
13661 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013662 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013663 return *this;
13664 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013665 MemoryBarrier& setPNext( const void* pNext_ )
13666 {
13667 pNext = pNext_;
13668 return *this;
13669 }
13670
13671 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13672 {
13673 srcAccessMask = srcAccessMask_;
13674 return *this;
13675 }
13676
13677 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13678 {
13679 dstAccessMask = dstAccessMask_;
13680 return *this;
13681 }
13682
13683 operator const VkMemoryBarrier&() const
13684 {
13685 return *reinterpret_cast<const VkMemoryBarrier*>(this);
13686 }
13687
13688 bool operator==( MemoryBarrier const& rhs ) const
13689 {
13690 return ( sType == rhs.sType )
13691 && ( pNext == rhs.pNext )
13692 && ( srcAccessMask == rhs.srcAccessMask )
13693 && ( dstAccessMask == rhs.dstAccessMask );
13694 }
13695
13696 bool operator!=( MemoryBarrier const& rhs ) const
13697 {
13698 return !operator==( rhs );
13699 }
13700
13701 private:
13702 StructureType sType;
13703
13704 public:
13705 const void* pNext;
13706 AccessFlags srcAccessMask;
13707 AccessFlags dstAccessMask;
13708 };
13709 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
13710
13711 struct BufferMemoryBarrier
13712 {
13713 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
13714 : sType( StructureType::eBufferMemoryBarrier )
13715 , pNext( nullptr )
13716 , srcAccessMask( srcAccessMask_ )
13717 , dstAccessMask( dstAccessMask_ )
13718 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
13719 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
13720 , buffer( buffer_ )
13721 , offset( offset_ )
13722 , size( size_ )
13723 {
13724 }
13725
13726 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
13727 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013728 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013729 }
13730
13731 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
13732 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013733 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013734 return *this;
13735 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013736 BufferMemoryBarrier& setPNext( const void* pNext_ )
13737 {
13738 pNext = pNext_;
13739 return *this;
13740 }
13741
13742 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13743 {
13744 srcAccessMask = srcAccessMask_;
13745 return *this;
13746 }
13747
13748 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13749 {
13750 dstAccessMask = dstAccessMask_;
13751 return *this;
13752 }
13753
13754 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
13755 {
13756 srcQueueFamilyIndex = srcQueueFamilyIndex_;
13757 return *this;
13758 }
13759
13760 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
13761 {
13762 dstQueueFamilyIndex = dstQueueFamilyIndex_;
13763 return *this;
13764 }
13765
13766 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
13767 {
13768 buffer = buffer_;
13769 return *this;
13770 }
13771
13772 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
13773 {
13774 offset = offset_;
13775 return *this;
13776 }
13777
13778 BufferMemoryBarrier& setSize( DeviceSize size_ )
13779 {
13780 size = size_;
13781 return *this;
13782 }
13783
13784 operator const VkBufferMemoryBarrier&() const
13785 {
13786 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
13787 }
13788
13789 bool operator==( BufferMemoryBarrier const& rhs ) const
13790 {
13791 return ( sType == rhs.sType )
13792 && ( pNext == rhs.pNext )
13793 && ( srcAccessMask == rhs.srcAccessMask )
13794 && ( dstAccessMask == rhs.dstAccessMask )
13795 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
13796 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
13797 && ( buffer == rhs.buffer )
13798 && ( offset == rhs.offset )
13799 && ( size == rhs.size );
13800 }
13801
13802 bool operator!=( BufferMemoryBarrier const& rhs ) const
13803 {
13804 return !operator==( rhs );
13805 }
13806
13807 private:
13808 StructureType sType;
13809
13810 public:
13811 const void* pNext;
13812 AccessFlags srcAccessMask;
13813 AccessFlags dstAccessMask;
13814 uint32_t srcQueueFamilyIndex;
13815 uint32_t dstQueueFamilyIndex;
13816 Buffer buffer;
13817 DeviceSize offset;
13818 DeviceSize size;
13819 };
13820 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
13821
13822 enum class BufferUsageFlagBits
13823 {
13824 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
13825 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
13826 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
13827 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
13828 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
13829 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
13830 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
13831 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
13832 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
13833 };
13834
13835 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
13836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013837 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013838 {
13839 return BufferUsageFlags( bit0 ) | bit1;
13840 }
13841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013842 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
13843 {
13844 return ~( BufferUsageFlags( bits ) );
13845 }
13846
13847 template <> struct FlagTraits<BufferUsageFlagBits>
13848 {
13849 enum
13850 {
13851 allFlags = VkFlags(BufferUsageFlagBits::eTransferSrc) | VkFlags(BufferUsageFlagBits::eTransferDst) | VkFlags(BufferUsageFlagBits::eUniformTexelBuffer) | VkFlags(BufferUsageFlagBits::eStorageTexelBuffer) | VkFlags(BufferUsageFlagBits::eUniformBuffer) | VkFlags(BufferUsageFlagBits::eStorageBuffer) | VkFlags(BufferUsageFlagBits::eIndexBuffer) | VkFlags(BufferUsageFlagBits::eVertexBuffer) | VkFlags(BufferUsageFlagBits::eIndirectBuffer)
13852 };
13853 };
13854
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013855 enum class BufferCreateFlagBits
13856 {
13857 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
13858 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
13859 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
13860 };
13861
13862 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
13863
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013864 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013865 {
13866 return BufferCreateFlags( bit0 ) | bit1;
13867 }
13868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013869 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
13870 {
13871 return ~( BufferCreateFlags( bits ) );
13872 }
13873
13874 template <> struct FlagTraits<BufferCreateFlagBits>
13875 {
13876 enum
13877 {
13878 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
13879 };
13880 };
13881
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013882 struct BufferCreateInfo
13883 {
13884 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
13885 : sType( StructureType::eBufferCreateInfo )
13886 , pNext( nullptr )
13887 , flags( flags_ )
13888 , size( size_ )
13889 , usage( usage_ )
13890 , sharingMode( sharingMode_ )
13891 , queueFamilyIndexCount( queueFamilyIndexCount_ )
13892 , pQueueFamilyIndices( pQueueFamilyIndices_ )
13893 {
13894 }
13895
13896 BufferCreateInfo( VkBufferCreateInfo const & rhs )
13897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013898 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013899 }
13900
13901 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
13902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013903 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013904 return *this;
13905 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013906 BufferCreateInfo& setPNext( const void* pNext_ )
13907 {
13908 pNext = pNext_;
13909 return *this;
13910 }
13911
13912 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
13913 {
13914 flags = flags_;
13915 return *this;
13916 }
13917
13918 BufferCreateInfo& setSize( DeviceSize size_ )
13919 {
13920 size = size_;
13921 return *this;
13922 }
13923
13924 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
13925 {
13926 usage = usage_;
13927 return *this;
13928 }
13929
13930 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
13931 {
13932 sharingMode = sharingMode_;
13933 return *this;
13934 }
13935
13936 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
13937 {
13938 queueFamilyIndexCount = queueFamilyIndexCount_;
13939 return *this;
13940 }
13941
13942 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
13943 {
13944 pQueueFamilyIndices = pQueueFamilyIndices_;
13945 return *this;
13946 }
13947
13948 operator const VkBufferCreateInfo&() const
13949 {
13950 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13951 }
13952
13953 bool operator==( BufferCreateInfo const& rhs ) const
13954 {
13955 return ( sType == rhs.sType )
13956 && ( pNext == rhs.pNext )
13957 && ( flags == rhs.flags )
13958 && ( size == rhs.size )
13959 && ( usage == rhs.usage )
13960 && ( sharingMode == rhs.sharingMode )
13961 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13962 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13963 }
13964
13965 bool operator!=( BufferCreateInfo const& rhs ) const
13966 {
13967 return !operator==( rhs );
13968 }
13969
13970 private:
13971 StructureType sType;
13972
13973 public:
13974 const void* pNext;
13975 BufferCreateFlags flags;
13976 DeviceSize size;
13977 BufferUsageFlags usage;
13978 SharingMode sharingMode;
13979 uint32_t queueFamilyIndexCount;
13980 const uint32_t* pQueueFamilyIndices;
13981 };
13982 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13983
13984 enum class ShaderStageFlagBits
13985 {
13986 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13987 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13988 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13989 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13990 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13991 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13992 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13993 eAll = VK_SHADER_STAGE_ALL
13994 };
13995
13996 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13997
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013998 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013999 {
14000 return ShaderStageFlags( bit0 ) | bit1;
14001 }
14002
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014003 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14004 {
14005 return ~( ShaderStageFlags( bits ) );
14006 }
14007
14008 template <> struct FlagTraits<ShaderStageFlagBits>
14009 {
14010 enum
14011 {
14012 allFlags = VkFlags(ShaderStageFlagBits::eVertex) | VkFlags(ShaderStageFlagBits::eTessellationControl) | VkFlags(ShaderStageFlagBits::eTessellationEvaluation) | VkFlags(ShaderStageFlagBits::eGeometry) | VkFlags(ShaderStageFlagBits::eFragment) | VkFlags(ShaderStageFlagBits::eCompute) | VkFlags(ShaderStageFlagBits::eAllGraphics) | VkFlags(ShaderStageFlagBits::eAll)
14013 };
14014 };
14015
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014016 struct DescriptorSetLayoutBinding
14017 {
14018 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14019 : binding( binding_ )
14020 , descriptorType( descriptorType_ )
14021 , descriptorCount( descriptorCount_ )
14022 , stageFlags( stageFlags_ )
14023 , pImmutableSamplers( pImmutableSamplers_ )
14024 {
14025 }
14026
14027 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14028 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014029 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014030 }
14031
14032 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14033 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014034 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014035 return *this;
14036 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014037 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14038 {
14039 binding = binding_;
14040 return *this;
14041 }
14042
14043 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14044 {
14045 descriptorType = descriptorType_;
14046 return *this;
14047 }
14048
14049 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14050 {
14051 descriptorCount = descriptorCount_;
14052 return *this;
14053 }
14054
14055 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14056 {
14057 stageFlags = stageFlags_;
14058 return *this;
14059 }
14060
14061 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14062 {
14063 pImmutableSamplers = pImmutableSamplers_;
14064 return *this;
14065 }
14066
14067 operator const VkDescriptorSetLayoutBinding&() const
14068 {
14069 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14070 }
14071
14072 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14073 {
14074 return ( binding == rhs.binding )
14075 && ( descriptorType == rhs.descriptorType )
14076 && ( descriptorCount == rhs.descriptorCount )
14077 && ( stageFlags == rhs.stageFlags )
14078 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14079 }
14080
14081 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14082 {
14083 return !operator==( rhs );
14084 }
14085
14086 uint32_t binding;
14087 DescriptorType descriptorType;
14088 uint32_t descriptorCount;
14089 ShaderStageFlags stageFlags;
14090 const Sampler* pImmutableSamplers;
14091 };
14092 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14093
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014094 struct PipelineShaderStageCreateInfo
14095 {
14096 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14097 : sType( StructureType::ePipelineShaderStageCreateInfo )
14098 , pNext( nullptr )
14099 , flags( flags_ )
14100 , stage( stage_ )
14101 , module( module_ )
14102 , pName( pName_ )
14103 , pSpecializationInfo( pSpecializationInfo_ )
14104 {
14105 }
14106
14107 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14108 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014109 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014110 }
14111
14112 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14113 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014114 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014115 return *this;
14116 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014117 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14118 {
14119 pNext = pNext_;
14120 return *this;
14121 }
14122
14123 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14124 {
14125 flags = flags_;
14126 return *this;
14127 }
14128
14129 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14130 {
14131 stage = stage_;
14132 return *this;
14133 }
14134
14135 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14136 {
14137 module = module_;
14138 return *this;
14139 }
14140
14141 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14142 {
14143 pName = pName_;
14144 return *this;
14145 }
14146
14147 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14148 {
14149 pSpecializationInfo = pSpecializationInfo_;
14150 return *this;
14151 }
14152
14153 operator const VkPipelineShaderStageCreateInfo&() const
14154 {
14155 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14156 }
14157
14158 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14159 {
14160 return ( sType == rhs.sType )
14161 && ( pNext == rhs.pNext )
14162 && ( flags == rhs.flags )
14163 && ( stage == rhs.stage )
14164 && ( module == rhs.module )
14165 && ( pName == rhs.pName )
14166 && ( pSpecializationInfo == rhs.pSpecializationInfo );
14167 }
14168
14169 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
14170 {
14171 return !operator==( rhs );
14172 }
14173
14174 private:
14175 StructureType sType;
14176
14177 public:
14178 const void* pNext;
14179 PipelineShaderStageCreateFlags flags;
14180 ShaderStageFlagBits stage;
14181 ShaderModule module;
14182 const char* pName;
14183 const SpecializationInfo* pSpecializationInfo;
14184 };
14185 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
14186
14187 struct PushConstantRange
14188 {
14189 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
14190 : stageFlags( stageFlags_ )
14191 , offset( offset_ )
14192 , size( size_ )
14193 {
14194 }
14195
14196 PushConstantRange( VkPushConstantRange const & rhs )
14197 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014198 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014199 }
14200
14201 PushConstantRange& operator=( VkPushConstantRange const & rhs )
14202 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014203 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014204 return *this;
14205 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014206 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
14207 {
14208 stageFlags = stageFlags_;
14209 return *this;
14210 }
14211
14212 PushConstantRange& setOffset( uint32_t offset_ )
14213 {
14214 offset = offset_;
14215 return *this;
14216 }
14217
14218 PushConstantRange& setSize( uint32_t size_ )
14219 {
14220 size = size_;
14221 return *this;
14222 }
14223
14224 operator const VkPushConstantRange&() const
14225 {
14226 return *reinterpret_cast<const VkPushConstantRange*>(this);
14227 }
14228
14229 bool operator==( PushConstantRange const& rhs ) const
14230 {
14231 return ( stageFlags == rhs.stageFlags )
14232 && ( offset == rhs.offset )
14233 && ( size == rhs.size );
14234 }
14235
14236 bool operator!=( PushConstantRange const& rhs ) const
14237 {
14238 return !operator==( rhs );
14239 }
14240
14241 ShaderStageFlags stageFlags;
14242 uint32_t offset;
14243 uint32_t size;
14244 };
14245 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
14246
14247 struct PipelineLayoutCreateInfo
14248 {
14249 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
14250 : sType( StructureType::ePipelineLayoutCreateInfo )
14251 , pNext( nullptr )
14252 , flags( flags_ )
14253 , setLayoutCount( setLayoutCount_ )
14254 , pSetLayouts( pSetLayouts_ )
14255 , pushConstantRangeCount( pushConstantRangeCount_ )
14256 , pPushConstantRanges( pPushConstantRanges_ )
14257 {
14258 }
14259
14260 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
14261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014262 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014263 }
14264
14265 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
14266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014267 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014268 return *this;
14269 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014270 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
14271 {
14272 pNext = pNext_;
14273 return *this;
14274 }
14275
14276 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
14277 {
14278 flags = flags_;
14279 return *this;
14280 }
14281
14282 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
14283 {
14284 setLayoutCount = setLayoutCount_;
14285 return *this;
14286 }
14287
14288 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
14289 {
14290 pSetLayouts = pSetLayouts_;
14291 return *this;
14292 }
14293
14294 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
14295 {
14296 pushConstantRangeCount = pushConstantRangeCount_;
14297 return *this;
14298 }
14299
14300 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
14301 {
14302 pPushConstantRanges = pPushConstantRanges_;
14303 return *this;
14304 }
14305
14306 operator const VkPipelineLayoutCreateInfo&() const
14307 {
14308 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
14309 }
14310
14311 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
14312 {
14313 return ( sType == rhs.sType )
14314 && ( pNext == rhs.pNext )
14315 && ( flags == rhs.flags )
14316 && ( setLayoutCount == rhs.setLayoutCount )
14317 && ( pSetLayouts == rhs.pSetLayouts )
14318 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
14319 && ( pPushConstantRanges == rhs.pPushConstantRanges );
14320 }
14321
14322 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
14323 {
14324 return !operator==( rhs );
14325 }
14326
14327 private:
14328 StructureType sType;
14329
14330 public:
14331 const void* pNext;
14332 PipelineLayoutCreateFlags flags;
14333 uint32_t setLayoutCount;
14334 const DescriptorSetLayout* pSetLayouts;
14335 uint32_t pushConstantRangeCount;
14336 const PushConstantRange* pPushConstantRanges;
14337 };
14338 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
14339
14340 enum class ImageUsageFlagBits
14341 {
14342 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
14343 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
14344 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
14345 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
14346 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
14347 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
14348 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
14349 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
14350 };
14351
14352 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
14353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014354 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014355 {
14356 return ImageUsageFlags( bit0 ) | bit1;
14357 }
14358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014359 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
14360 {
14361 return ~( ImageUsageFlags( bits ) );
14362 }
14363
14364 template <> struct FlagTraits<ImageUsageFlagBits>
14365 {
14366 enum
14367 {
14368 allFlags = VkFlags(ImageUsageFlagBits::eTransferSrc) | VkFlags(ImageUsageFlagBits::eTransferDst) | VkFlags(ImageUsageFlagBits::eSampled) | VkFlags(ImageUsageFlagBits::eStorage) | VkFlags(ImageUsageFlagBits::eColorAttachment) | VkFlags(ImageUsageFlagBits::eDepthStencilAttachment) | VkFlags(ImageUsageFlagBits::eTransientAttachment) | VkFlags(ImageUsageFlagBits::eInputAttachment)
14369 };
14370 };
14371
Mark Lobodzinski54385432017-05-15 10:27:52 -060014372 struct SharedPresentSurfaceCapabilitiesKHR
14373 {
14374 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
14375 {
14376 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
14377 }
14378
14379 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14380 {
14381 return ( sType == rhs.sType )
14382 && ( pNext == rhs.pNext )
14383 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
14384 }
14385
14386 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14387 {
14388 return !operator==( rhs );
14389 }
14390
14391 private:
14392 StructureType sType;
14393
14394 public:
14395 void* pNext;
14396 ImageUsageFlags sharedPresentSupportedUsageFlags;
14397 };
14398 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
14399
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014400 enum class ImageCreateFlagBits
14401 {
14402 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
14403 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
14404 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
14405 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070014406 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014407 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070014408 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014409 };
14410
14411 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
14412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014413 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014414 {
14415 return ImageCreateFlags( bit0 ) | bit1;
14416 }
14417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014418 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
14419 {
14420 return ~( ImageCreateFlags( bits ) );
14421 }
14422
14423 template <> struct FlagTraits<ImageCreateFlagBits>
14424 {
14425 enum
14426 {
Mark Young0f183a82017-02-28 09:58:04 -070014427 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014428 };
14429 };
14430
Mark Young39389872017-01-19 21:10:49 -070014431 struct PhysicalDeviceImageFormatInfo2KHR
14432 {
14433 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
14434 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
14435 , pNext( nullptr )
14436 , format( format_ )
14437 , type( type_ )
14438 , tiling( tiling_ )
14439 , usage( usage_ )
14440 , flags( flags_ )
14441 {
14442 }
14443
14444 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14445 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014446 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014447 }
14448
14449 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14450 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014451 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014452 return *this;
14453 }
Mark Young39389872017-01-19 21:10:49 -070014454 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
14455 {
14456 pNext = pNext_;
14457 return *this;
14458 }
14459
14460 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
14461 {
14462 format = format_;
14463 return *this;
14464 }
14465
14466 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
14467 {
14468 type = type_;
14469 return *this;
14470 }
14471
14472 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
14473 {
14474 tiling = tiling_;
14475 return *this;
14476 }
14477
14478 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
14479 {
14480 usage = usage_;
14481 return *this;
14482 }
14483
14484 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
14485 {
14486 flags = flags_;
14487 return *this;
14488 }
14489
14490 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
14491 {
14492 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
14493 }
14494
14495 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14496 {
14497 return ( sType == rhs.sType )
14498 && ( pNext == rhs.pNext )
14499 && ( format == rhs.format )
14500 && ( type == rhs.type )
14501 && ( tiling == rhs.tiling )
14502 && ( usage == rhs.usage )
14503 && ( flags == rhs.flags );
14504 }
14505
14506 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14507 {
14508 return !operator==( rhs );
14509 }
14510
14511 private:
14512 StructureType sType;
14513
14514 public:
14515 const void* pNext;
14516 Format format;
14517 ImageType type;
14518 ImageTiling tiling;
14519 ImageUsageFlags usage;
14520 ImageCreateFlags flags;
14521 };
14522 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
14523
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014524 enum class PipelineCreateFlagBits
14525 {
14526 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
14527 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014528 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
14529 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
14530 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014531 };
14532
14533 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
14534
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014535 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014536 {
14537 return PipelineCreateFlags( bit0 ) | bit1;
14538 }
14539
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014540 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
14541 {
14542 return ~( PipelineCreateFlags( bits ) );
14543 }
14544
14545 template <> struct FlagTraits<PipelineCreateFlagBits>
14546 {
14547 enum
14548 {
Mark Young0f183a82017-02-28 09:58:04 -070014549 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014550 };
14551 };
14552
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014553 struct ComputePipelineCreateInfo
14554 {
14555 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
14556 : sType( StructureType::eComputePipelineCreateInfo )
14557 , pNext( nullptr )
14558 , flags( flags_ )
14559 , stage( stage_ )
14560 , layout( layout_ )
14561 , basePipelineHandle( basePipelineHandle_ )
14562 , basePipelineIndex( basePipelineIndex_ )
14563 {
14564 }
14565
14566 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
14567 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014568 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014569 }
14570
14571 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
14572 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014573 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014574 return *this;
14575 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014576 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
14577 {
14578 pNext = pNext_;
14579 return *this;
14580 }
14581
14582 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
14583 {
14584 flags = flags_;
14585 return *this;
14586 }
14587
14588 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
14589 {
14590 stage = stage_;
14591 return *this;
14592 }
14593
14594 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
14595 {
14596 layout = layout_;
14597 return *this;
14598 }
14599
14600 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
14601 {
14602 basePipelineHandle = basePipelineHandle_;
14603 return *this;
14604 }
14605
14606 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
14607 {
14608 basePipelineIndex = basePipelineIndex_;
14609 return *this;
14610 }
14611
14612 operator const VkComputePipelineCreateInfo&() const
14613 {
14614 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
14615 }
14616
14617 bool operator==( ComputePipelineCreateInfo const& rhs ) const
14618 {
14619 return ( sType == rhs.sType )
14620 && ( pNext == rhs.pNext )
14621 && ( flags == rhs.flags )
14622 && ( stage == rhs.stage )
14623 && ( layout == rhs.layout )
14624 && ( basePipelineHandle == rhs.basePipelineHandle )
14625 && ( basePipelineIndex == rhs.basePipelineIndex );
14626 }
14627
14628 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
14629 {
14630 return !operator==( rhs );
14631 }
14632
14633 private:
14634 StructureType sType;
14635
14636 public:
14637 const void* pNext;
14638 PipelineCreateFlags flags;
14639 PipelineShaderStageCreateInfo stage;
14640 PipelineLayout layout;
14641 Pipeline basePipelineHandle;
14642 int32_t basePipelineIndex;
14643 };
14644 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
14645
14646 enum class ColorComponentFlagBits
14647 {
14648 eR = VK_COLOR_COMPONENT_R_BIT,
14649 eG = VK_COLOR_COMPONENT_G_BIT,
14650 eB = VK_COLOR_COMPONENT_B_BIT,
14651 eA = VK_COLOR_COMPONENT_A_BIT
14652 };
14653
14654 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
14655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014656 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014657 {
14658 return ColorComponentFlags( bit0 ) | bit1;
14659 }
14660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014661 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
14662 {
14663 return ~( ColorComponentFlags( bits ) );
14664 }
14665
14666 template <> struct FlagTraits<ColorComponentFlagBits>
14667 {
14668 enum
14669 {
14670 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
14671 };
14672 };
14673
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014674 struct PipelineColorBlendAttachmentState
14675 {
14676 PipelineColorBlendAttachmentState( Bool32 blendEnable_ = 0, BlendFactor srcColorBlendFactor_ = BlendFactor::eZero, BlendFactor dstColorBlendFactor_ = BlendFactor::eZero, BlendOp colorBlendOp_ = BlendOp::eAdd, BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero, BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero, BlendOp alphaBlendOp_ = BlendOp::eAdd, ColorComponentFlags colorWriteMask_ = ColorComponentFlags() )
14677 : blendEnable( blendEnable_ )
14678 , srcColorBlendFactor( srcColorBlendFactor_ )
14679 , dstColorBlendFactor( dstColorBlendFactor_ )
14680 , colorBlendOp( colorBlendOp_ )
14681 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
14682 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
14683 , alphaBlendOp( alphaBlendOp_ )
14684 , colorWriteMask( colorWriteMask_ )
14685 {
14686 }
14687
14688 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
14689 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014690 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014691 }
14692
14693 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
14694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014695 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014696 return *this;
14697 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014698 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
14699 {
14700 blendEnable = blendEnable_;
14701 return *this;
14702 }
14703
14704 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
14705 {
14706 srcColorBlendFactor = srcColorBlendFactor_;
14707 return *this;
14708 }
14709
14710 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
14711 {
14712 dstColorBlendFactor = dstColorBlendFactor_;
14713 return *this;
14714 }
14715
14716 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
14717 {
14718 colorBlendOp = colorBlendOp_;
14719 return *this;
14720 }
14721
14722 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
14723 {
14724 srcAlphaBlendFactor = srcAlphaBlendFactor_;
14725 return *this;
14726 }
14727
14728 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
14729 {
14730 dstAlphaBlendFactor = dstAlphaBlendFactor_;
14731 return *this;
14732 }
14733
14734 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
14735 {
14736 alphaBlendOp = alphaBlendOp_;
14737 return *this;
14738 }
14739
14740 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
14741 {
14742 colorWriteMask = colorWriteMask_;
14743 return *this;
14744 }
14745
14746 operator const VkPipelineColorBlendAttachmentState&() const
14747 {
14748 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
14749 }
14750
14751 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
14752 {
14753 return ( blendEnable == rhs.blendEnable )
14754 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
14755 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
14756 && ( colorBlendOp == rhs.colorBlendOp )
14757 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
14758 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
14759 && ( alphaBlendOp == rhs.alphaBlendOp )
14760 && ( colorWriteMask == rhs.colorWriteMask );
14761 }
14762
14763 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
14764 {
14765 return !operator==( rhs );
14766 }
14767
14768 Bool32 blendEnable;
14769 BlendFactor srcColorBlendFactor;
14770 BlendFactor dstColorBlendFactor;
14771 BlendOp colorBlendOp;
14772 BlendFactor srcAlphaBlendFactor;
14773 BlendFactor dstAlphaBlendFactor;
14774 BlendOp alphaBlendOp;
14775 ColorComponentFlags colorWriteMask;
14776 };
14777 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
14778
14779 struct PipelineColorBlendStateCreateInfo
14780 {
14781 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_ = PipelineColorBlendStateCreateFlags(), Bool32 logicOpEnable_ = 0, LogicOp logicOp_ = LogicOp::eClear, uint32_t attachmentCount_ = 0, const PipelineColorBlendAttachmentState* pAttachments_ = nullptr, std::array<float,4> const& blendConstants_ = { { 0, 0, 0, 0 } } )
14782 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
14783 , pNext( nullptr )
14784 , flags( flags_ )
14785 , logicOpEnable( logicOpEnable_ )
14786 , logicOp( logicOp_ )
14787 , attachmentCount( attachmentCount_ )
14788 , pAttachments( pAttachments_ )
14789 {
14790 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14791 }
14792
14793 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
14794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014795 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014796 }
14797
14798 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
14799 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014800 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014801 return *this;
14802 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014803 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
14804 {
14805 pNext = pNext_;
14806 return *this;
14807 }
14808
14809 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
14810 {
14811 flags = flags_;
14812 return *this;
14813 }
14814
14815 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
14816 {
14817 logicOpEnable = logicOpEnable_;
14818 return *this;
14819 }
14820
14821 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
14822 {
14823 logicOp = logicOp_;
14824 return *this;
14825 }
14826
14827 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
14828 {
14829 attachmentCount = attachmentCount_;
14830 return *this;
14831 }
14832
14833 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
14834 {
14835 pAttachments = pAttachments_;
14836 return *this;
14837 }
14838
14839 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
14840 {
14841 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14842 return *this;
14843 }
14844
14845 operator const VkPipelineColorBlendStateCreateInfo&() const
14846 {
14847 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
14848 }
14849
14850 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
14851 {
14852 return ( sType == rhs.sType )
14853 && ( pNext == rhs.pNext )
14854 && ( flags == rhs.flags )
14855 && ( logicOpEnable == rhs.logicOpEnable )
14856 && ( logicOp == rhs.logicOp )
14857 && ( attachmentCount == rhs.attachmentCount )
14858 && ( pAttachments == rhs.pAttachments )
14859 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
14860 }
14861
14862 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
14863 {
14864 return !operator==( rhs );
14865 }
14866
14867 private:
14868 StructureType sType;
14869
14870 public:
14871 const void* pNext;
14872 PipelineColorBlendStateCreateFlags flags;
14873 Bool32 logicOpEnable;
14874 LogicOp logicOp;
14875 uint32_t attachmentCount;
14876 const PipelineColorBlendAttachmentState* pAttachments;
14877 float blendConstants[4];
14878 };
14879 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
14880
14881 enum class FenceCreateFlagBits
14882 {
14883 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
14884 };
14885
14886 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
14887
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014888 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014889 {
14890 return FenceCreateFlags( bit0 ) | bit1;
14891 }
14892
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014893 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
14894 {
14895 return ~( FenceCreateFlags( bits ) );
14896 }
14897
14898 template <> struct FlagTraits<FenceCreateFlagBits>
14899 {
14900 enum
14901 {
14902 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
14903 };
14904 };
14905
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014906 struct FenceCreateInfo
14907 {
14908 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
14909 : sType( StructureType::eFenceCreateInfo )
14910 , pNext( nullptr )
14911 , flags( flags_ )
14912 {
14913 }
14914
14915 FenceCreateInfo( VkFenceCreateInfo const & rhs )
14916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014917 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014918 }
14919
14920 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
14921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014922 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014923 return *this;
14924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014925 FenceCreateInfo& setPNext( const void* pNext_ )
14926 {
14927 pNext = pNext_;
14928 return *this;
14929 }
14930
14931 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
14932 {
14933 flags = flags_;
14934 return *this;
14935 }
14936
14937 operator const VkFenceCreateInfo&() const
14938 {
14939 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
14940 }
14941
14942 bool operator==( FenceCreateInfo const& rhs ) const
14943 {
14944 return ( sType == rhs.sType )
14945 && ( pNext == rhs.pNext )
14946 && ( flags == rhs.flags );
14947 }
14948
14949 bool operator!=( FenceCreateInfo const& rhs ) const
14950 {
14951 return !operator==( rhs );
14952 }
14953
14954 private:
14955 StructureType sType;
14956
14957 public:
14958 const void* pNext;
14959 FenceCreateFlags flags;
14960 };
14961 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
14962
14963 enum class FormatFeatureFlagBits
14964 {
14965 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14966 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14967 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14968 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14969 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14970 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14971 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14972 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14973 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14974 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14975 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14976 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14977 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014978 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14979 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014980 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
14981 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014982 };
14983
14984 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14985
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014986 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014987 {
14988 return FormatFeatureFlags( bit0 ) | bit1;
14989 }
14990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014991 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14992 {
14993 return ~( FormatFeatureFlags( bits ) );
14994 }
14995
14996 template <> struct FlagTraits<FormatFeatureFlagBits>
14997 {
14998 enum
14999 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015000 allFlags = VkFlags(FormatFeatureFlagBits::eSampledImage) | VkFlags(FormatFeatureFlagBits::eStorageImage) | VkFlags(FormatFeatureFlagBits::eStorageImageAtomic) | VkFlags(FormatFeatureFlagBits::eUniformTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBufferAtomic) | VkFlags(FormatFeatureFlagBits::eVertexBuffer) | VkFlags(FormatFeatureFlagBits::eColorAttachment) | VkFlags(FormatFeatureFlagBits::eColorAttachmentBlend) | VkFlags(FormatFeatureFlagBits::eDepthStencilAttachment) | VkFlags(FormatFeatureFlagBits::eBlitSrc) | VkFlags(FormatFeatureFlagBits::eBlitDst) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterLinear) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | VkFlags(FormatFeatureFlagBits::eTransferSrcKHR) | VkFlags(FormatFeatureFlagBits::eTransferDstKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015001 };
15002 };
15003
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015004 struct FormatProperties
15005 {
15006 operator const VkFormatProperties&() const
15007 {
15008 return *reinterpret_cast<const VkFormatProperties*>(this);
15009 }
15010
15011 bool operator==( FormatProperties const& rhs ) const
15012 {
15013 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15014 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15015 && ( bufferFeatures == rhs.bufferFeatures );
15016 }
15017
15018 bool operator!=( FormatProperties const& rhs ) const
15019 {
15020 return !operator==( rhs );
15021 }
15022
15023 FormatFeatureFlags linearTilingFeatures;
15024 FormatFeatureFlags optimalTilingFeatures;
15025 FormatFeatureFlags bufferFeatures;
15026 };
15027 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15028
Mark Young39389872017-01-19 21:10:49 -070015029 struct FormatProperties2KHR
15030 {
15031 operator const VkFormatProperties2KHR&() const
15032 {
15033 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15034 }
15035
15036 bool operator==( FormatProperties2KHR const& rhs ) const
15037 {
15038 return ( sType == rhs.sType )
15039 && ( pNext == rhs.pNext )
15040 && ( formatProperties == rhs.formatProperties );
15041 }
15042
15043 bool operator!=( FormatProperties2KHR const& rhs ) const
15044 {
15045 return !operator==( rhs );
15046 }
15047
15048 private:
15049 StructureType sType;
15050
15051 public:
15052 void* pNext;
15053 FormatProperties formatProperties;
15054 };
15055 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15056
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015057 enum class QueryControlFlagBits
15058 {
15059 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
15060 };
15061
15062 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
15063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015064 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015065 {
15066 return QueryControlFlags( bit0 ) | bit1;
15067 }
15068
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015069 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
15070 {
15071 return ~( QueryControlFlags( bits ) );
15072 }
15073
15074 template <> struct FlagTraits<QueryControlFlagBits>
15075 {
15076 enum
15077 {
15078 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
15079 };
15080 };
15081
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015082 enum class QueryResultFlagBits
15083 {
15084 e64 = VK_QUERY_RESULT_64_BIT,
15085 eWait = VK_QUERY_RESULT_WAIT_BIT,
15086 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
15087 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
15088 };
15089
15090 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
15091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015092 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015093 {
15094 return QueryResultFlags( bit0 ) | bit1;
15095 }
15096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015097 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
15098 {
15099 return ~( QueryResultFlags( bits ) );
15100 }
15101
15102 template <> struct FlagTraits<QueryResultFlagBits>
15103 {
15104 enum
15105 {
15106 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
15107 };
15108 };
15109
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015110 enum class CommandBufferUsageFlagBits
15111 {
15112 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
15113 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
15114 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
15115 };
15116
15117 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
15118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015119 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015120 {
15121 return CommandBufferUsageFlags( bit0 ) | bit1;
15122 }
15123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015124 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
15125 {
15126 return ~( CommandBufferUsageFlags( bits ) );
15127 }
15128
15129 template <> struct FlagTraits<CommandBufferUsageFlagBits>
15130 {
15131 enum
15132 {
15133 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
15134 };
15135 };
15136
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015137 enum class QueryPipelineStatisticFlagBits
15138 {
15139 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
15140 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
15141 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
15142 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
15143 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
15144 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
15145 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
15146 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
15147 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
15148 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
15149 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
15150 };
15151
15152 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
15153
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015154 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015155 {
15156 return QueryPipelineStatisticFlags( bit0 ) | bit1;
15157 }
15158
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015159 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
15160 {
15161 return ~( QueryPipelineStatisticFlags( bits ) );
15162 }
15163
15164 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
15165 {
15166 enum
15167 {
15168 allFlags = VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyVertices) | VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eVertexShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eClippingInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eClippingPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eComputeShaderInvocations)
15169 };
15170 };
15171
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015172 struct CommandBufferInheritanceInfo
15173 {
15174 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15175 : sType( StructureType::eCommandBufferInheritanceInfo )
15176 , pNext( nullptr )
15177 , renderPass( renderPass_ )
15178 , subpass( subpass_ )
15179 , framebuffer( framebuffer_ )
15180 , occlusionQueryEnable( occlusionQueryEnable_ )
15181 , queryFlags( queryFlags_ )
15182 , pipelineStatistics( pipelineStatistics_ )
15183 {
15184 }
15185
15186 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
15187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015188 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015189 }
15190
15191 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
15192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015193 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015194 return *this;
15195 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015196 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
15197 {
15198 pNext = pNext_;
15199 return *this;
15200 }
15201
15202 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
15203 {
15204 renderPass = renderPass_;
15205 return *this;
15206 }
15207
15208 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
15209 {
15210 subpass = subpass_;
15211 return *this;
15212 }
15213
15214 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
15215 {
15216 framebuffer = framebuffer_;
15217 return *this;
15218 }
15219
15220 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
15221 {
15222 occlusionQueryEnable = occlusionQueryEnable_;
15223 return *this;
15224 }
15225
15226 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
15227 {
15228 queryFlags = queryFlags_;
15229 return *this;
15230 }
15231
15232 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15233 {
15234 pipelineStatistics = pipelineStatistics_;
15235 return *this;
15236 }
15237
15238 operator const VkCommandBufferInheritanceInfo&() const
15239 {
15240 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
15241 }
15242
15243 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
15244 {
15245 return ( sType == rhs.sType )
15246 && ( pNext == rhs.pNext )
15247 && ( renderPass == rhs.renderPass )
15248 && ( subpass == rhs.subpass )
15249 && ( framebuffer == rhs.framebuffer )
15250 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
15251 && ( queryFlags == rhs.queryFlags )
15252 && ( pipelineStatistics == rhs.pipelineStatistics );
15253 }
15254
15255 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
15256 {
15257 return !operator==( rhs );
15258 }
15259
15260 private:
15261 StructureType sType;
15262
15263 public:
15264 const void* pNext;
15265 RenderPass renderPass;
15266 uint32_t subpass;
15267 Framebuffer framebuffer;
15268 Bool32 occlusionQueryEnable;
15269 QueryControlFlags queryFlags;
15270 QueryPipelineStatisticFlags pipelineStatistics;
15271 };
15272 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
15273
15274 struct CommandBufferBeginInfo
15275 {
15276 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
15277 : sType( StructureType::eCommandBufferBeginInfo )
15278 , pNext( nullptr )
15279 , flags( flags_ )
15280 , pInheritanceInfo( pInheritanceInfo_ )
15281 {
15282 }
15283
15284 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
15285 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015286 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015287 }
15288
15289 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
15290 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015291 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015292 return *this;
15293 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015294 CommandBufferBeginInfo& setPNext( const void* pNext_ )
15295 {
15296 pNext = pNext_;
15297 return *this;
15298 }
15299
15300 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
15301 {
15302 flags = flags_;
15303 return *this;
15304 }
15305
15306 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
15307 {
15308 pInheritanceInfo = pInheritanceInfo_;
15309 return *this;
15310 }
15311
15312 operator const VkCommandBufferBeginInfo&() const
15313 {
15314 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
15315 }
15316
15317 bool operator==( CommandBufferBeginInfo const& rhs ) const
15318 {
15319 return ( sType == rhs.sType )
15320 && ( pNext == rhs.pNext )
15321 && ( flags == rhs.flags )
15322 && ( pInheritanceInfo == rhs.pInheritanceInfo );
15323 }
15324
15325 bool operator!=( CommandBufferBeginInfo const& rhs ) const
15326 {
15327 return !operator==( rhs );
15328 }
15329
15330 private:
15331 StructureType sType;
15332
15333 public:
15334 const void* pNext;
15335 CommandBufferUsageFlags flags;
15336 const CommandBufferInheritanceInfo* pInheritanceInfo;
15337 };
15338 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
15339
15340 struct QueryPoolCreateInfo
15341 {
15342 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15343 : sType( StructureType::eQueryPoolCreateInfo )
15344 , pNext( nullptr )
15345 , flags( flags_ )
15346 , queryType( queryType_ )
15347 , queryCount( queryCount_ )
15348 , pipelineStatistics( pipelineStatistics_ )
15349 {
15350 }
15351
15352 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
15353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015354 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015355 }
15356
15357 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
15358 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015359 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015360 return *this;
15361 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015362 QueryPoolCreateInfo& setPNext( const void* pNext_ )
15363 {
15364 pNext = pNext_;
15365 return *this;
15366 }
15367
15368 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
15369 {
15370 flags = flags_;
15371 return *this;
15372 }
15373
15374 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
15375 {
15376 queryType = queryType_;
15377 return *this;
15378 }
15379
15380 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
15381 {
15382 queryCount = queryCount_;
15383 return *this;
15384 }
15385
15386 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15387 {
15388 pipelineStatistics = pipelineStatistics_;
15389 return *this;
15390 }
15391
15392 operator const VkQueryPoolCreateInfo&() const
15393 {
15394 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
15395 }
15396
15397 bool operator==( QueryPoolCreateInfo const& rhs ) const
15398 {
15399 return ( sType == rhs.sType )
15400 && ( pNext == rhs.pNext )
15401 && ( flags == rhs.flags )
15402 && ( queryType == rhs.queryType )
15403 && ( queryCount == rhs.queryCount )
15404 && ( pipelineStatistics == rhs.pipelineStatistics );
15405 }
15406
15407 bool operator!=( QueryPoolCreateInfo const& rhs ) const
15408 {
15409 return !operator==( rhs );
15410 }
15411
15412 private:
15413 StructureType sType;
15414
15415 public:
15416 const void* pNext;
15417 QueryPoolCreateFlags flags;
15418 QueryType queryType;
15419 uint32_t queryCount;
15420 QueryPipelineStatisticFlags pipelineStatistics;
15421 };
15422 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
15423
15424 enum class ImageAspectFlagBits
15425 {
15426 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
15427 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
15428 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
15429 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
15430 };
15431
15432 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
15433
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015434 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015435 {
15436 return ImageAspectFlags( bit0 ) | bit1;
15437 }
15438
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015439 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
15440 {
15441 return ~( ImageAspectFlags( bits ) );
15442 }
15443
15444 template <> struct FlagTraits<ImageAspectFlagBits>
15445 {
15446 enum
15447 {
15448 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
15449 };
15450 };
15451
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015452 struct ImageSubresource
15453 {
15454 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
15455 : aspectMask( aspectMask_ )
15456 , mipLevel( mipLevel_ )
15457 , arrayLayer( arrayLayer_ )
15458 {
15459 }
15460
15461 ImageSubresource( VkImageSubresource const & rhs )
15462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015463 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015464 }
15465
15466 ImageSubresource& operator=( VkImageSubresource const & rhs )
15467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015468 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015469 return *this;
15470 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015471 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
15472 {
15473 aspectMask = aspectMask_;
15474 return *this;
15475 }
15476
15477 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
15478 {
15479 mipLevel = mipLevel_;
15480 return *this;
15481 }
15482
15483 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
15484 {
15485 arrayLayer = arrayLayer_;
15486 return *this;
15487 }
15488
15489 operator const VkImageSubresource&() const
15490 {
15491 return *reinterpret_cast<const VkImageSubresource*>(this);
15492 }
15493
15494 bool operator==( ImageSubresource const& rhs ) const
15495 {
15496 return ( aspectMask == rhs.aspectMask )
15497 && ( mipLevel == rhs.mipLevel )
15498 && ( arrayLayer == rhs.arrayLayer );
15499 }
15500
15501 bool operator!=( ImageSubresource const& rhs ) const
15502 {
15503 return !operator==( rhs );
15504 }
15505
15506 ImageAspectFlags aspectMask;
15507 uint32_t mipLevel;
15508 uint32_t arrayLayer;
15509 };
15510 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
15511
15512 struct ImageSubresourceLayers
15513 {
15514 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15515 : aspectMask( aspectMask_ )
15516 , mipLevel( mipLevel_ )
15517 , baseArrayLayer( baseArrayLayer_ )
15518 , layerCount( layerCount_ )
15519 {
15520 }
15521
15522 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
15523 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015524 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015525 }
15526
15527 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
15528 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015529 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015530 return *this;
15531 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015532 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
15533 {
15534 aspectMask = aspectMask_;
15535 return *this;
15536 }
15537
15538 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
15539 {
15540 mipLevel = mipLevel_;
15541 return *this;
15542 }
15543
15544 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15545 {
15546 baseArrayLayer = baseArrayLayer_;
15547 return *this;
15548 }
15549
15550 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
15551 {
15552 layerCount = layerCount_;
15553 return *this;
15554 }
15555
15556 operator const VkImageSubresourceLayers&() const
15557 {
15558 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
15559 }
15560
15561 bool operator==( ImageSubresourceLayers const& rhs ) const
15562 {
15563 return ( aspectMask == rhs.aspectMask )
15564 && ( mipLevel == rhs.mipLevel )
15565 && ( baseArrayLayer == rhs.baseArrayLayer )
15566 && ( layerCount == rhs.layerCount );
15567 }
15568
15569 bool operator!=( ImageSubresourceLayers const& rhs ) const
15570 {
15571 return !operator==( rhs );
15572 }
15573
15574 ImageAspectFlags aspectMask;
15575 uint32_t mipLevel;
15576 uint32_t baseArrayLayer;
15577 uint32_t layerCount;
15578 };
15579 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
15580
15581 struct ImageSubresourceRange
15582 {
15583 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15584 : aspectMask( aspectMask_ )
15585 , baseMipLevel( baseMipLevel_ )
15586 , levelCount( levelCount_ )
15587 , baseArrayLayer( baseArrayLayer_ )
15588 , layerCount( layerCount_ )
15589 {
15590 }
15591
15592 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
15593 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015594 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015595 }
15596
15597 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
15598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015599 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015600 return *this;
15601 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015602 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
15603 {
15604 aspectMask = aspectMask_;
15605 return *this;
15606 }
15607
15608 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
15609 {
15610 baseMipLevel = baseMipLevel_;
15611 return *this;
15612 }
15613
15614 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
15615 {
15616 levelCount = levelCount_;
15617 return *this;
15618 }
15619
15620 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15621 {
15622 baseArrayLayer = baseArrayLayer_;
15623 return *this;
15624 }
15625
15626 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
15627 {
15628 layerCount = layerCount_;
15629 return *this;
15630 }
15631
15632 operator const VkImageSubresourceRange&() const
15633 {
15634 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
15635 }
15636
15637 bool operator==( ImageSubresourceRange const& rhs ) const
15638 {
15639 return ( aspectMask == rhs.aspectMask )
15640 && ( baseMipLevel == rhs.baseMipLevel )
15641 && ( levelCount == rhs.levelCount )
15642 && ( baseArrayLayer == rhs.baseArrayLayer )
15643 && ( layerCount == rhs.layerCount );
15644 }
15645
15646 bool operator!=( ImageSubresourceRange const& rhs ) const
15647 {
15648 return !operator==( rhs );
15649 }
15650
15651 ImageAspectFlags aspectMask;
15652 uint32_t baseMipLevel;
15653 uint32_t levelCount;
15654 uint32_t baseArrayLayer;
15655 uint32_t layerCount;
15656 };
15657 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
15658
15659 struct ImageMemoryBarrier
15660 {
15661 ImageMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), ImageLayout oldLayout_ = ImageLayout::eUndefined, ImageLayout newLayout_ = ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Image image_ = Image(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
15662 : sType( StructureType::eImageMemoryBarrier )
15663 , pNext( nullptr )
15664 , srcAccessMask( srcAccessMask_ )
15665 , dstAccessMask( dstAccessMask_ )
15666 , oldLayout( oldLayout_ )
15667 , newLayout( newLayout_ )
15668 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
15669 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
15670 , image( image_ )
15671 , subresourceRange( subresourceRange_ )
15672 {
15673 }
15674
15675 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
15676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015677 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015678 }
15679
15680 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
15681 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015682 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015683 return *this;
15684 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015685 ImageMemoryBarrier& setPNext( const void* pNext_ )
15686 {
15687 pNext = pNext_;
15688 return *this;
15689 }
15690
15691 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
15692 {
15693 srcAccessMask = srcAccessMask_;
15694 return *this;
15695 }
15696
15697 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
15698 {
15699 dstAccessMask = dstAccessMask_;
15700 return *this;
15701 }
15702
15703 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
15704 {
15705 oldLayout = oldLayout_;
15706 return *this;
15707 }
15708
15709 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
15710 {
15711 newLayout = newLayout_;
15712 return *this;
15713 }
15714
15715 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
15716 {
15717 srcQueueFamilyIndex = srcQueueFamilyIndex_;
15718 return *this;
15719 }
15720
15721 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
15722 {
15723 dstQueueFamilyIndex = dstQueueFamilyIndex_;
15724 return *this;
15725 }
15726
15727 ImageMemoryBarrier& setImage( Image image_ )
15728 {
15729 image = image_;
15730 return *this;
15731 }
15732
15733 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15734 {
15735 subresourceRange = subresourceRange_;
15736 return *this;
15737 }
15738
15739 operator const VkImageMemoryBarrier&() const
15740 {
15741 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
15742 }
15743
15744 bool operator==( ImageMemoryBarrier const& rhs ) const
15745 {
15746 return ( sType == rhs.sType )
15747 && ( pNext == rhs.pNext )
15748 && ( srcAccessMask == rhs.srcAccessMask )
15749 && ( dstAccessMask == rhs.dstAccessMask )
15750 && ( oldLayout == rhs.oldLayout )
15751 && ( newLayout == rhs.newLayout )
15752 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
15753 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
15754 && ( image == rhs.image )
15755 && ( subresourceRange == rhs.subresourceRange );
15756 }
15757
15758 bool operator!=( ImageMemoryBarrier const& rhs ) const
15759 {
15760 return !operator==( rhs );
15761 }
15762
15763 private:
15764 StructureType sType;
15765
15766 public:
15767 const void* pNext;
15768 AccessFlags srcAccessMask;
15769 AccessFlags dstAccessMask;
15770 ImageLayout oldLayout;
15771 ImageLayout newLayout;
15772 uint32_t srcQueueFamilyIndex;
15773 uint32_t dstQueueFamilyIndex;
15774 Image image;
15775 ImageSubresourceRange subresourceRange;
15776 };
15777 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
15778
15779 struct ImageViewCreateInfo
15780 {
15781 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
15782 : sType( StructureType::eImageViewCreateInfo )
15783 , pNext( nullptr )
15784 , flags( flags_ )
15785 , image( image_ )
15786 , viewType( viewType_ )
15787 , format( format_ )
15788 , components( components_ )
15789 , subresourceRange( subresourceRange_ )
15790 {
15791 }
15792
15793 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
15794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015795 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015796 }
15797
15798 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
15799 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015800 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015801 return *this;
15802 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015803 ImageViewCreateInfo& setPNext( const void* pNext_ )
15804 {
15805 pNext = pNext_;
15806 return *this;
15807 }
15808
15809 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
15810 {
15811 flags = flags_;
15812 return *this;
15813 }
15814
15815 ImageViewCreateInfo& setImage( Image image_ )
15816 {
15817 image = image_;
15818 return *this;
15819 }
15820
15821 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
15822 {
15823 viewType = viewType_;
15824 return *this;
15825 }
15826
15827 ImageViewCreateInfo& setFormat( Format format_ )
15828 {
15829 format = format_;
15830 return *this;
15831 }
15832
15833 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
15834 {
15835 components = components_;
15836 return *this;
15837 }
15838
15839 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15840 {
15841 subresourceRange = subresourceRange_;
15842 return *this;
15843 }
15844
15845 operator const VkImageViewCreateInfo&() const
15846 {
15847 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
15848 }
15849
15850 bool operator==( ImageViewCreateInfo const& rhs ) const
15851 {
15852 return ( sType == rhs.sType )
15853 && ( pNext == rhs.pNext )
15854 && ( flags == rhs.flags )
15855 && ( image == rhs.image )
15856 && ( viewType == rhs.viewType )
15857 && ( format == rhs.format )
15858 && ( components == rhs.components )
15859 && ( subresourceRange == rhs.subresourceRange );
15860 }
15861
15862 bool operator!=( ImageViewCreateInfo const& rhs ) const
15863 {
15864 return !operator==( rhs );
15865 }
15866
15867 private:
15868 StructureType sType;
15869
15870 public:
15871 const void* pNext;
15872 ImageViewCreateFlags flags;
15873 Image image;
15874 ImageViewType viewType;
15875 Format format;
15876 ComponentMapping components;
15877 ImageSubresourceRange subresourceRange;
15878 };
15879 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
15880
15881 struct ImageCopy
15882 {
15883 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15884 : srcSubresource( srcSubresource_ )
15885 , srcOffset( srcOffset_ )
15886 , dstSubresource( dstSubresource_ )
15887 , dstOffset( dstOffset_ )
15888 , extent( extent_ )
15889 {
15890 }
15891
15892 ImageCopy( VkImageCopy const & rhs )
15893 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015894 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015895 }
15896
15897 ImageCopy& operator=( VkImageCopy const & rhs )
15898 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015899 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015900 return *this;
15901 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015902 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15903 {
15904 srcSubresource = srcSubresource_;
15905 return *this;
15906 }
15907
15908 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
15909 {
15910 srcOffset = srcOffset_;
15911 return *this;
15912 }
15913
15914 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15915 {
15916 dstSubresource = dstSubresource_;
15917 return *this;
15918 }
15919
15920 ImageCopy& setDstOffset( Offset3D dstOffset_ )
15921 {
15922 dstOffset = dstOffset_;
15923 return *this;
15924 }
15925
15926 ImageCopy& setExtent( Extent3D extent_ )
15927 {
15928 extent = extent_;
15929 return *this;
15930 }
15931
15932 operator const VkImageCopy&() const
15933 {
15934 return *reinterpret_cast<const VkImageCopy*>(this);
15935 }
15936
15937 bool operator==( ImageCopy const& rhs ) const
15938 {
15939 return ( srcSubresource == rhs.srcSubresource )
15940 && ( srcOffset == rhs.srcOffset )
15941 && ( dstSubresource == rhs.dstSubresource )
15942 && ( dstOffset == rhs.dstOffset )
15943 && ( extent == rhs.extent );
15944 }
15945
15946 bool operator!=( ImageCopy const& rhs ) const
15947 {
15948 return !operator==( rhs );
15949 }
15950
15951 ImageSubresourceLayers srcSubresource;
15952 Offset3D srcOffset;
15953 ImageSubresourceLayers dstSubresource;
15954 Offset3D dstOffset;
15955 Extent3D extent;
15956 };
15957 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15958
15959 struct ImageBlit
15960 {
15961 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15962 : srcSubresource( srcSubresource_ )
15963 , dstSubresource( dstSubresource_ )
15964 {
15965 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15966 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15967 }
15968
15969 ImageBlit( VkImageBlit const & rhs )
15970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015971 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015972 }
15973
15974 ImageBlit& operator=( VkImageBlit const & rhs )
15975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015976 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015977 return *this;
15978 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015979 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15980 {
15981 srcSubresource = srcSubresource_;
15982 return *this;
15983 }
15984
15985 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15986 {
15987 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15988 return *this;
15989 }
15990
15991 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15992 {
15993 dstSubresource = dstSubresource_;
15994 return *this;
15995 }
15996
15997 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15998 {
15999 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16000 return *this;
16001 }
16002
16003 operator const VkImageBlit&() const
16004 {
16005 return *reinterpret_cast<const VkImageBlit*>(this);
16006 }
16007
16008 bool operator==( ImageBlit const& rhs ) const
16009 {
16010 return ( srcSubresource == rhs.srcSubresource )
16011 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16012 && ( dstSubresource == rhs.dstSubresource )
16013 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16014 }
16015
16016 bool operator!=( ImageBlit const& rhs ) const
16017 {
16018 return !operator==( rhs );
16019 }
16020
16021 ImageSubresourceLayers srcSubresource;
16022 Offset3D srcOffsets[2];
16023 ImageSubresourceLayers dstSubresource;
16024 Offset3D dstOffsets[2];
16025 };
16026 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16027
16028 struct BufferImageCopy
16029 {
16030 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16031 : bufferOffset( bufferOffset_ )
16032 , bufferRowLength( bufferRowLength_ )
16033 , bufferImageHeight( bufferImageHeight_ )
16034 , imageSubresource( imageSubresource_ )
16035 , imageOffset( imageOffset_ )
16036 , imageExtent( imageExtent_ )
16037 {
16038 }
16039
16040 BufferImageCopy( VkBufferImageCopy const & rhs )
16041 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016042 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016043 }
16044
16045 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16046 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016047 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016048 return *this;
16049 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016050 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16051 {
16052 bufferOffset = bufferOffset_;
16053 return *this;
16054 }
16055
16056 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
16057 {
16058 bufferRowLength = bufferRowLength_;
16059 return *this;
16060 }
16061
16062 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
16063 {
16064 bufferImageHeight = bufferImageHeight_;
16065 return *this;
16066 }
16067
16068 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
16069 {
16070 imageSubresource = imageSubresource_;
16071 return *this;
16072 }
16073
16074 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
16075 {
16076 imageOffset = imageOffset_;
16077 return *this;
16078 }
16079
16080 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
16081 {
16082 imageExtent = imageExtent_;
16083 return *this;
16084 }
16085
16086 operator const VkBufferImageCopy&() const
16087 {
16088 return *reinterpret_cast<const VkBufferImageCopy*>(this);
16089 }
16090
16091 bool operator==( BufferImageCopy const& rhs ) const
16092 {
16093 return ( bufferOffset == rhs.bufferOffset )
16094 && ( bufferRowLength == rhs.bufferRowLength )
16095 && ( bufferImageHeight == rhs.bufferImageHeight )
16096 && ( imageSubresource == rhs.imageSubresource )
16097 && ( imageOffset == rhs.imageOffset )
16098 && ( imageExtent == rhs.imageExtent );
16099 }
16100
16101 bool operator!=( BufferImageCopy const& rhs ) const
16102 {
16103 return !operator==( rhs );
16104 }
16105
16106 DeviceSize bufferOffset;
16107 uint32_t bufferRowLength;
16108 uint32_t bufferImageHeight;
16109 ImageSubresourceLayers imageSubresource;
16110 Offset3D imageOffset;
16111 Extent3D imageExtent;
16112 };
16113 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
16114
16115 struct ImageResolve
16116 {
16117 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16118 : srcSubresource( srcSubresource_ )
16119 , srcOffset( srcOffset_ )
16120 , dstSubresource( dstSubresource_ )
16121 , dstOffset( dstOffset_ )
16122 , extent( extent_ )
16123 {
16124 }
16125
16126 ImageResolve( VkImageResolve const & rhs )
16127 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016128 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016129 }
16130
16131 ImageResolve& operator=( VkImageResolve const & rhs )
16132 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016133 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016134 return *this;
16135 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016136 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16137 {
16138 srcSubresource = srcSubresource_;
16139 return *this;
16140 }
16141
16142 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
16143 {
16144 srcOffset = srcOffset_;
16145 return *this;
16146 }
16147
16148 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16149 {
16150 dstSubresource = dstSubresource_;
16151 return *this;
16152 }
16153
16154 ImageResolve& setDstOffset( Offset3D dstOffset_ )
16155 {
16156 dstOffset = dstOffset_;
16157 return *this;
16158 }
16159
16160 ImageResolve& setExtent( Extent3D extent_ )
16161 {
16162 extent = extent_;
16163 return *this;
16164 }
16165
16166 operator const VkImageResolve&() const
16167 {
16168 return *reinterpret_cast<const VkImageResolve*>(this);
16169 }
16170
16171 bool operator==( ImageResolve const& rhs ) const
16172 {
16173 return ( srcSubresource == rhs.srcSubresource )
16174 && ( srcOffset == rhs.srcOffset )
16175 && ( dstSubresource == rhs.dstSubresource )
16176 && ( dstOffset == rhs.dstOffset )
16177 && ( extent == rhs.extent );
16178 }
16179
16180 bool operator!=( ImageResolve const& rhs ) const
16181 {
16182 return !operator==( rhs );
16183 }
16184
16185 ImageSubresourceLayers srcSubresource;
16186 Offset3D srcOffset;
16187 ImageSubresourceLayers dstSubresource;
16188 Offset3D dstOffset;
16189 Extent3D extent;
16190 };
16191 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
16192
16193 struct ClearAttachment
16194 {
16195 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
16196 : aspectMask( aspectMask_ )
16197 , colorAttachment( colorAttachment_ )
16198 , clearValue( clearValue_ )
16199 {
16200 }
16201
16202 ClearAttachment( VkClearAttachment const & rhs )
16203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016204 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016205 }
16206
16207 ClearAttachment& operator=( VkClearAttachment const & rhs )
16208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016209 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016210 return *this;
16211 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016212 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
16213 {
16214 aspectMask = aspectMask_;
16215 return *this;
16216 }
16217
16218 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
16219 {
16220 colorAttachment = colorAttachment_;
16221 return *this;
16222 }
16223
16224 ClearAttachment& setClearValue( ClearValue clearValue_ )
16225 {
16226 clearValue = clearValue_;
16227 return *this;
16228 }
16229
16230 operator const VkClearAttachment&() const
16231 {
16232 return *reinterpret_cast<const VkClearAttachment*>(this);
16233 }
16234
16235 ImageAspectFlags aspectMask;
16236 uint32_t colorAttachment;
16237 ClearValue clearValue;
16238 };
16239 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
16240
16241 enum class SparseImageFormatFlagBits
16242 {
16243 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
16244 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
16245 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
16246 };
16247
16248 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
16249
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016250 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016251 {
16252 return SparseImageFormatFlags( bit0 ) | bit1;
16253 }
16254
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016255 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
16256 {
16257 return ~( SparseImageFormatFlags( bits ) );
16258 }
16259
16260 template <> struct FlagTraits<SparseImageFormatFlagBits>
16261 {
16262 enum
16263 {
16264 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
16265 };
16266 };
16267
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016268 struct SparseImageFormatProperties
16269 {
16270 operator const VkSparseImageFormatProperties&() const
16271 {
16272 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
16273 }
16274
16275 bool operator==( SparseImageFormatProperties const& rhs ) const
16276 {
16277 return ( aspectMask == rhs.aspectMask )
16278 && ( imageGranularity == rhs.imageGranularity )
16279 && ( flags == rhs.flags );
16280 }
16281
16282 bool operator!=( SparseImageFormatProperties const& rhs ) const
16283 {
16284 return !operator==( rhs );
16285 }
16286
16287 ImageAspectFlags aspectMask;
16288 Extent3D imageGranularity;
16289 SparseImageFormatFlags flags;
16290 };
16291 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
16292
16293 struct SparseImageMemoryRequirements
16294 {
16295 operator const VkSparseImageMemoryRequirements&() const
16296 {
16297 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
16298 }
16299
16300 bool operator==( SparseImageMemoryRequirements const& rhs ) const
16301 {
16302 return ( formatProperties == rhs.formatProperties )
16303 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
16304 && ( imageMipTailSize == rhs.imageMipTailSize )
16305 && ( imageMipTailOffset == rhs.imageMipTailOffset )
16306 && ( imageMipTailStride == rhs.imageMipTailStride );
16307 }
16308
16309 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
16310 {
16311 return !operator==( rhs );
16312 }
16313
16314 SparseImageFormatProperties formatProperties;
16315 uint32_t imageMipTailFirstLod;
16316 DeviceSize imageMipTailSize;
16317 DeviceSize imageMipTailOffset;
16318 DeviceSize imageMipTailStride;
16319 };
16320 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
16321
Mark Young39389872017-01-19 21:10:49 -070016322 struct SparseImageFormatProperties2KHR
16323 {
16324 operator const VkSparseImageFormatProperties2KHR&() const
16325 {
16326 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
16327 }
16328
16329 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
16330 {
16331 return ( sType == rhs.sType )
16332 && ( pNext == rhs.pNext )
16333 && ( properties == rhs.properties );
16334 }
16335
16336 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
16337 {
16338 return !operator==( rhs );
16339 }
16340
16341 private:
16342 StructureType sType;
16343
16344 public:
16345 void* pNext;
16346 SparseImageFormatProperties properties;
16347 };
16348 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16349
Mark Youngabc2d6e2017-07-07 07:59:56 -060016350 struct SparseImageMemoryRequirements2KHR
16351 {
16352 operator const VkSparseImageMemoryRequirements2KHR&() const
16353 {
16354 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
16355 }
16356
16357 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
16358 {
16359 return ( sType == rhs.sType )
16360 && ( pNext == rhs.pNext )
16361 && ( memoryRequirements == rhs.memoryRequirements );
16362 }
16363
16364 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
16365 {
16366 return !operator==( rhs );
16367 }
16368
16369 private:
16370 StructureType sType;
16371
16372 public:
16373 void* pNext;
16374 SparseImageMemoryRequirements memoryRequirements;
16375 };
16376 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
16377
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016378 enum class SparseMemoryBindFlagBits
16379 {
16380 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
16381 };
16382
16383 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
16384
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016385 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016386 {
16387 return SparseMemoryBindFlags( bit0 ) | bit1;
16388 }
16389
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016390 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
16391 {
16392 return ~( SparseMemoryBindFlags( bits ) );
16393 }
16394
16395 template <> struct FlagTraits<SparseMemoryBindFlagBits>
16396 {
16397 enum
16398 {
16399 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
16400 };
16401 };
16402
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016403 struct SparseMemoryBind
16404 {
16405 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16406 : resourceOffset( resourceOffset_ )
16407 , size( size_ )
16408 , memory( memory_ )
16409 , memoryOffset( memoryOffset_ )
16410 , flags( flags_ )
16411 {
16412 }
16413
16414 SparseMemoryBind( VkSparseMemoryBind const & rhs )
16415 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016416 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016417 }
16418
16419 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
16420 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016421 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016422 return *this;
16423 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016424 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
16425 {
16426 resourceOffset = resourceOffset_;
16427 return *this;
16428 }
16429
16430 SparseMemoryBind& setSize( DeviceSize size_ )
16431 {
16432 size = size_;
16433 return *this;
16434 }
16435
16436 SparseMemoryBind& setMemory( DeviceMemory memory_ )
16437 {
16438 memory = memory_;
16439 return *this;
16440 }
16441
16442 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16443 {
16444 memoryOffset = memoryOffset_;
16445 return *this;
16446 }
16447
16448 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16449 {
16450 flags = flags_;
16451 return *this;
16452 }
16453
16454 operator const VkSparseMemoryBind&() const
16455 {
16456 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
16457 }
16458
16459 bool operator==( SparseMemoryBind const& rhs ) const
16460 {
16461 return ( resourceOffset == rhs.resourceOffset )
16462 && ( size == rhs.size )
16463 && ( memory == rhs.memory )
16464 && ( memoryOffset == rhs.memoryOffset )
16465 && ( flags == rhs.flags );
16466 }
16467
16468 bool operator!=( SparseMemoryBind const& rhs ) const
16469 {
16470 return !operator==( rhs );
16471 }
16472
16473 DeviceSize resourceOffset;
16474 DeviceSize size;
16475 DeviceMemory memory;
16476 DeviceSize memoryOffset;
16477 SparseMemoryBindFlags flags;
16478 };
16479 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
16480
16481 struct SparseImageMemoryBind
16482 {
16483 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16484 : subresource( subresource_ )
16485 , offset( offset_ )
16486 , extent( extent_ )
16487 , memory( memory_ )
16488 , memoryOffset( memoryOffset_ )
16489 , flags( flags_ )
16490 {
16491 }
16492
16493 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
16494 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016495 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016496 }
16497
16498 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
16499 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016500 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016501 return *this;
16502 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016503 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
16504 {
16505 subresource = subresource_;
16506 return *this;
16507 }
16508
16509 SparseImageMemoryBind& setOffset( Offset3D offset_ )
16510 {
16511 offset = offset_;
16512 return *this;
16513 }
16514
16515 SparseImageMemoryBind& setExtent( Extent3D extent_ )
16516 {
16517 extent = extent_;
16518 return *this;
16519 }
16520
16521 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
16522 {
16523 memory = memory_;
16524 return *this;
16525 }
16526
16527 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16528 {
16529 memoryOffset = memoryOffset_;
16530 return *this;
16531 }
16532
16533 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16534 {
16535 flags = flags_;
16536 return *this;
16537 }
16538
16539 operator const VkSparseImageMemoryBind&() const
16540 {
16541 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
16542 }
16543
16544 bool operator==( SparseImageMemoryBind const& rhs ) const
16545 {
16546 return ( subresource == rhs.subresource )
16547 && ( offset == rhs.offset )
16548 && ( extent == rhs.extent )
16549 && ( memory == rhs.memory )
16550 && ( memoryOffset == rhs.memoryOffset )
16551 && ( flags == rhs.flags );
16552 }
16553
16554 bool operator!=( SparseImageMemoryBind const& rhs ) const
16555 {
16556 return !operator==( rhs );
16557 }
16558
16559 ImageSubresource subresource;
16560 Offset3D offset;
16561 Extent3D extent;
16562 DeviceMemory memory;
16563 DeviceSize memoryOffset;
16564 SparseMemoryBindFlags flags;
16565 };
16566 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
16567
16568 struct SparseBufferMemoryBindInfo
16569 {
16570 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16571 : buffer( buffer_ )
16572 , bindCount( bindCount_ )
16573 , pBinds( pBinds_ )
16574 {
16575 }
16576
16577 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
16578 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016579 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016580 }
16581
16582 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
16583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016584 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016585 return *this;
16586 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016587 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
16588 {
16589 buffer = buffer_;
16590 return *this;
16591 }
16592
16593 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16594 {
16595 bindCount = bindCount_;
16596 return *this;
16597 }
16598
16599 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16600 {
16601 pBinds = pBinds_;
16602 return *this;
16603 }
16604
16605 operator const VkSparseBufferMemoryBindInfo&() const
16606 {
16607 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
16608 }
16609
16610 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
16611 {
16612 return ( buffer == rhs.buffer )
16613 && ( bindCount == rhs.bindCount )
16614 && ( pBinds == rhs.pBinds );
16615 }
16616
16617 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
16618 {
16619 return !operator==( rhs );
16620 }
16621
16622 Buffer buffer;
16623 uint32_t bindCount;
16624 const SparseMemoryBind* pBinds;
16625 };
16626 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
16627
16628 struct SparseImageOpaqueMemoryBindInfo
16629 {
16630 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16631 : image( image_ )
16632 , bindCount( bindCount_ )
16633 , pBinds( pBinds_ )
16634 {
16635 }
16636
16637 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016639 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016640 }
16641
16642 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016644 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016645 return *this;
16646 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016647 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
16648 {
16649 image = image_;
16650 return *this;
16651 }
16652
16653 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16654 {
16655 bindCount = bindCount_;
16656 return *this;
16657 }
16658
16659 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16660 {
16661 pBinds = pBinds_;
16662 return *this;
16663 }
16664
16665 operator const VkSparseImageOpaqueMemoryBindInfo&() const
16666 {
16667 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
16668 }
16669
16670 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16671 {
16672 return ( image == rhs.image )
16673 && ( bindCount == rhs.bindCount )
16674 && ( pBinds == rhs.pBinds );
16675 }
16676
16677 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16678 {
16679 return !operator==( rhs );
16680 }
16681
16682 Image image;
16683 uint32_t bindCount;
16684 const SparseMemoryBind* pBinds;
16685 };
16686 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
16687
16688 struct SparseImageMemoryBindInfo
16689 {
16690 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
16691 : image( image_ )
16692 , bindCount( bindCount_ )
16693 , pBinds( pBinds_ )
16694 {
16695 }
16696
16697 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
16698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016699 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016700 }
16701
16702 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
16703 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016704 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016705 return *this;
16706 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016707 SparseImageMemoryBindInfo& setImage( Image image_ )
16708 {
16709 image = image_;
16710 return *this;
16711 }
16712
16713 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16714 {
16715 bindCount = bindCount_;
16716 return *this;
16717 }
16718
16719 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
16720 {
16721 pBinds = pBinds_;
16722 return *this;
16723 }
16724
16725 operator const VkSparseImageMemoryBindInfo&() const
16726 {
16727 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
16728 }
16729
16730 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
16731 {
16732 return ( image == rhs.image )
16733 && ( bindCount == rhs.bindCount )
16734 && ( pBinds == rhs.pBinds );
16735 }
16736
16737 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
16738 {
16739 return !operator==( rhs );
16740 }
16741
16742 Image image;
16743 uint32_t bindCount;
16744 const SparseImageMemoryBind* pBinds;
16745 };
16746 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
16747
16748 struct BindSparseInfo
16749 {
16750 BindSparseInfo( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, uint32_t bufferBindCount_ = 0, const SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr, uint32_t imageOpaqueBindCount_ = 0, const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr, uint32_t imageBindCount_ = 0, const SparseImageMemoryBindInfo* pImageBinds_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const Semaphore* pSignalSemaphores_ = nullptr )
16751 : sType( StructureType::eBindSparseInfo )
16752 , pNext( nullptr )
16753 , waitSemaphoreCount( waitSemaphoreCount_ )
16754 , pWaitSemaphores( pWaitSemaphores_ )
16755 , bufferBindCount( bufferBindCount_ )
16756 , pBufferBinds( pBufferBinds_ )
16757 , imageOpaqueBindCount( imageOpaqueBindCount_ )
16758 , pImageOpaqueBinds( pImageOpaqueBinds_ )
16759 , imageBindCount( imageBindCount_ )
16760 , pImageBinds( pImageBinds_ )
16761 , signalSemaphoreCount( signalSemaphoreCount_ )
16762 , pSignalSemaphores( pSignalSemaphores_ )
16763 {
16764 }
16765
16766 BindSparseInfo( VkBindSparseInfo const & rhs )
16767 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016768 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016769 }
16770
16771 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
16772 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016773 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016774 return *this;
16775 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016776 BindSparseInfo& setPNext( const void* pNext_ )
16777 {
16778 pNext = pNext_;
16779 return *this;
16780 }
16781
16782 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
16783 {
16784 waitSemaphoreCount = waitSemaphoreCount_;
16785 return *this;
16786 }
16787
16788 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
16789 {
16790 pWaitSemaphores = pWaitSemaphores_;
16791 return *this;
16792 }
16793
16794 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
16795 {
16796 bufferBindCount = bufferBindCount_;
16797 return *this;
16798 }
16799
16800 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
16801 {
16802 pBufferBinds = pBufferBinds_;
16803 return *this;
16804 }
16805
16806 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
16807 {
16808 imageOpaqueBindCount = imageOpaqueBindCount_;
16809 return *this;
16810 }
16811
16812 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
16813 {
16814 pImageOpaqueBinds = pImageOpaqueBinds_;
16815 return *this;
16816 }
16817
16818 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
16819 {
16820 imageBindCount = imageBindCount_;
16821 return *this;
16822 }
16823
16824 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
16825 {
16826 pImageBinds = pImageBinds_;
16827 return *this;
16828 }
16829
16830 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
16831 {
16832 signalSemaphoreCount = signalSemaphoreCount_;
16833 return *this;
16834 }
16835
16836 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
16837 {
16838 pSignalSemaphores = pSignalSemaphores_;
16839 return *this;
16840 }
16841
16842 operator const VkBindSparseInfo&() const
16843 {
16844 return *reinterpret_cast<const VkBindSparseInfo*>(this);
16845 }
16846
16847 bool operator==( BindSparseInfo const& rhs ) const
16848 {
16849 return ( sType == rhs.sType )
16850 && ( pNext == rhs.pNext )
16851 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
16852 && ( pWaitSemaphores == rhs.pWaitSemaphores )
16853 && ( bufferBindCount == rhs.bufferBindCount )
16854 && ( pBufferBinds == rhs.pBufferBinds )
16855 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
16856 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
16857 && ( imageBindCount == rhs.imageBindCount )
16858 && ( pImageBinds == rhs.pImageBinds )
16859 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
16860 && ( pSignalSemaphores == rhs.pSignalSemaphores );
16861 }
16862
16863 bool operator!=( BindSparseInfo const& rhs ) const
16864 {
16865 return !operator==( rhs );
16866 }
16867
16868 private:
16869 StructureType sType;
16870
16871 public:
16872 const void* pNext;
16873 uint32_t waitSemaphoreCount;
16874 const Semaphore* pWaitSemaphores;
16875 uint32_t bufferBindCount;
16876 const SparseBufferMemoryBindInfo* pBufferBinds;
16877 uint32_t imageOpaqueBindCount;
16878 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
16879 uint32_t imageBindCount;
16880 const SparseImageMemoryBindInfo* pImageBinds;
16881 uint32_t signalSemaphoreCount;
16882 const Semaphore* pSignalSemaphores;
16883 };
16884 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
16885
16886 enum class PipelineStageFlagBits
16887 {
16888 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
16889 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
16890 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
16891 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
16892 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
16893 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
16894 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
16895 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
16896 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
16897 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
16898 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
16899 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
16900 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
16901 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
16902 eHost = VK_PIPELINE_STAGE_HOST_BIT,
16903 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016904 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
16905 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016906 };
16907
16908 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
16909
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016910 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016911 {
16912 return PipelineStageFlags( bit0 ) | bit1;
16913 }
16914
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016915 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
16916 {
16917 return ~( PipelineStageFlags( bits ) );
16918 }
16919
16920 template <> struct FlagTraits<PipelineStageFlagBits>
16921 {
16922 enum
16923 {
16924 allFlags = VkFlags(PipelineStageFlagBits::eTopOfPipe) | VkFlags(PipelineStageFlagBits::eDrawIndirect) | VkFlags(PipelineStageFlagBits::eVertexInput) | VkFlags(PipelineStageFlagBits::eVertexShader) | VkFlags(PipelineStageFlagBits::eTessellationControlShader) | VkFlags(PipelineStageFlagBits::eTessellationEvaluationShader) | VkFlags(PipelineStageFlagBits::eGeometryShader) | VkFlags(PipelineStageFlagBits::eFragmentShader) | VkFlags(PipelineStageFlagBits::eEarlyFragmentTests) | VkFlags(PipelineStageFlagBits::eLateFragmentTests) | VkFlags(PipelineStageFlagBits::eColorAttachmentOutput) | VkFlags(PipelineStageFlagBits::eComputeShader) | VkFlags(PipelineStageFlagBits::eTransfer) | VkFlags(PipelineStageFlagBits::eBottomOfPipe) | VkFlags(PipelineStageFlagBits::eHost) | VkFlags(PipelineStageFlagBits::eAllGraphics) | VkFlags(PipelineStageFlagBits::eAllCommands) | VkFlags(PipelineStageFlagBits::eCommandProcessNVX)
16925 };
16926 };
16927
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016928 enum class CommandPoolCreateFlagBits
16929 {
16930 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
16931 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
16932 };
16933
16934 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
16935
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016936 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016937 {
16938 return CommandPoolCreateFlags( bit0 ) | bit1;
16939 }
16940
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016941 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
16942 {
16943 return ~( CommandPoolCreateFlags( bits ) );
16944 }
16945
16946 template <> struct FlagTraits<CommandPoolCreateFlagBits>
16947 {
16948 enum
16949 {
16950 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
16951 };
16952 };
16953
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016954 struct CommandPoolCreateInfo
16955 {
16956 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
16957 : sType( StructureType::eCommandPoolCreateInfo )
16958 , pNext( nullptr )
16959 , flags( flags_ )
16960 , queueFamilyIndex( queueFamilyIndex_ )
16961 {
16962 }
16963
16964 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
16965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016966 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016967 }
16968
16969 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
16970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016971 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016972 return *this;
16973 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016974 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16975 {
16976 pNext = pNext_;
16977 return *this;
16978 }
16979
16980 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16981 {
16982 flags = flags_;
16983 return *this;
16984 }
16985
16986 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16987 {
16988 queueFamilyIndex = queueFamilyIndex_;
16989 return *this;
16990 }
16991
16992 operator const VkCommandPoolCreateInfo&() const
16993 {
16994 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16995 }
16996
16997 bool operator==( CommandPoolCreateInfo const& rhs ) const
16998 {
16999 return ( sType == rhs.sType )
17000 && ( pNext == rhs.pNext )
17001 && ( flags == rhs.flags )
17002 && ( queueFamilyIndex == rhs.queueFamilyIndex );
17003 }
17004
17005 bool operator!=( CommandPoolCreateInfo const& rhs ) const
17006 {
17007 return !operator==( rhs );
17008 }
17009
17010 private:
17011 StructureType sType;
17012
17013 public:
17014 const void* pNext;
17015 CommandPoolCreateFlags flags;
17016 uint32_t queueFamilyIndex;
17017 };
17018 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
17019
17020 enum class CommandPoolResetFlagBits
17021 {
17022 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
17023 };
17024
17025 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
17026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017027 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017028 {
17029 return CommandPoolResetFlags( bit0 ) | bit1;
17030 }
17031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017032 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
17033 {
17034 return ~( CommandPoolResetFlags( bits ) );
17035 }
17036
17037 template <> struct FlagTraits<CommandPoolResetFlagBits>
17038 {
17039 enum
17040 {
17041 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
17042 };
17043 };
17044
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017045 enum class CommandBufferResetFlagBits
17046 {
17047 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
17048 };
17049
17050 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
17051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017052 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017053 {
17054 return CommandBufferResetFlags( bit0 ) | bit1;
17055 }
17056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017057 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
17058 {
17059 return ~( CommandBufferResetFlags( bits ) );
17060 }
17061
17062 template <> struct FlagTraits<CommandBufferResetFlagBits>
17063 {
17064 enum
17065 {
17066 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
17067 };
17068 };
17069
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017070 enum class SampleCountFlagBits
17071 {
17072 e1 = VK_SAMPLE_COUNT_1_BIT,
17073 e2 = VK_SAMPLE_COUNT_2_BIT,
17074 e4 = VK_SAMPLE_COUNT_4_BIT,
17075 e8 = VK_SAMPLE_COUNT_8_BIT,
17076 e16 = VK_SAMPLE_COUNT_16_BIT,
17077 e32 = VK_SAMPLE_COUNT_32_BIT,
17078 e64 = VK_SAMPLE_COUNT_64_BIT
17079 };
17080
17081 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
17082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017083 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017084 {
17085 return SampleCountFlags( bit0 ) | bit1;
17086 }
17087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017088 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
17089 {
17090 return ~( SampleCountFlags( bits ) );
17091 }
17092
17093 template <> struct FlagTraits<SampleCountFlagBits>
17094 {
17095 enum
17096 {
17097 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
17098 };
17099 };
17100
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017101 struct ImageFormatProperties
17102 {
17103 operator const VkImageFormatProperties&() const
17104 {
17105 return *reinterpret_cast<const VkImageFormatProperties*>(this);
17106 }
17107
17108 bool operator==( ImageFormatProperties const& rhs ) const
17109 {
17110 return ( maxExtent == rhs.maxExtent )
17111 && ( maxMipLevels == rhs.maxMipLevels )
17112 && ( maxArrayLayers == rhs.maxArrayLayers )
17113 && ( sampleCounts == rhs.sampleCounts )
17114 && ( maxResourceSize == rhs.maxResourceSize );
17115 }
17116
17117 bool operator!=( ImageFormatProperties const& rhs ) const
17118 {
17119 return !operator==( rhs );
17120 }
17121
17122 Extent3D maxExtent;
17123 uint32_t maxMipLevels;
17124 uint32_t maxArrayLayers;
17125 SampleCountFlags sampleCounts;
17126 DeviceSize maxResourceSize;
17127 };
17128 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
17129
17130 struct ImageCreateInfo
17131 {
17132 ImageCreateInfo( ImageCreateFlags flags_ = ImageCreateFlags(), ImageType imageType_ = ImageType::e1D, Format format_ = Format::eUndefined, Extent3D extent_ = Extent3D(), uint32_t mipLevels_ = 0, uint32_t arrayLayers_ = 0, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr, ImageLayout initialLayout_ = ImageLayout::eUndefined )
17133 : sType( StructureType::eImageCreateInfo )
17134 , pNext( nullptr )
17135 , flags( flags_ )
17136 , imageType( imageType_ )
17137 , format( format_ )
17138 , extent( extent_ )
17139 , mipLevels( mipLevels_ )
17140 , arrayLayers( arrayLayers_ )
17141 , samples( samples_ )
17142 , tiling( tiling_ )
17143 , usage( usage_ )
17144 , sharingMode( sharingMode_ )
17145 , queueFamilyIndexCount( queueFamilyIndexCount_ )
17146 , pQueueFamilyIndices( pQueueFamilyIndices_ )
17147 , initialLayout( initialLayout_ )
17148 {
17149 }
17150
17151 ImageCreateInfo( VkImageCreateInfo const & rhs )
17152 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017153 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017154 }
17155
17156 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
17157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017158 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017159 return *this;
17160 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017161 ImageCreateInfo& setPNext( const void* pNext_ )
17162 {
17163 pNext = pNext_;
17164 return *this;
17165 }
17166
17167 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
17168 {
17169 flags = flags_;
17170 return *this;
17171 }
17172
17173 ImageCreateInfo& setImageType( ImageType imageType_ )
17174 {
17175 imageType = imageType_;
17176 return *this;
17177 }
17178
17179 ImageCreateInfo& setFormat( Format format_ )
17180 {
17181 format = format_;
17182 return *this;
17183 }
17184
17185 ImageCreateInfo& setExtent( Extent3D extent_ )
17186 {
17187 extent = extent_;
17188 return *this;
17189 }
17190
17191 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
17192 {
17193 mipLevels = mipLevels_;
17194 return *this;
17195 }
17196
17197 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
17198 {
17199 arrayLayers = arrayLayers_;
17200 return *this;
17201 }
17202
17203 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
17204 {
17205 samples = samples_;
17206 return *this;
17207 }
17208
17209 ImageCreateInfo& setTiling( ImageTiling tiling_ )
17210 {
17211 tiling = tiling_;
17212 return *this;
17213 }
17214
17215 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
17216 {
17217 usage = usage_;
17218 return *this;
17219 }
17220
17221 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
17222 {
17223 sharingMode = sharingMode_;
17224 return *this;
17225 }
17226
17227 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
17228 {
17229 queueFamilyIndexCount = queueFamilyIndexCount_;
17230 return *this;
17231 }
17232
17233 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
17234 {
17235 pQueueFamilyIndices = pQueueFamilyIndices_;
17236 return *this;
17237 }
17238
17239 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
17240 {
17241 initialLayout = initialLayout_;
17242 return *this;
17243 }
17244
17245 operator const VkImageCreateInfo&() const
17246 {
17247 return *reinterpret_cast<const VkImageCreateInfo*>(this);
17248 }
17249
17250 bool operator==( ImageCreateInfo const& rhs ) const
17251 {
17252 return ( sType == rhs.sType )
17253 && ( pNext == rhs.pNext )
17254 && ( flags == rhs.flags )
17255 && ( imageType == rhs.imageType )
17256 && ( format == rhs.format )
17257 && ( extent == rhs.extent )
17258 && ( mipLevels == rhs.mipLevels )
17259 && ( arrayLayers == rhs.arrayLayers )
17260 && ( samples == rhs.samples )
17261 && ( tiling == rhs.tiling )
17262 && ( usage == rhs.usage )
17263 && ( sharingMode == rhs.sharingMode )
17264 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
17265 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
17266 && ( initialLayout == rhs.initialLayout );
17267 }
17268
17269 bool operator!=( ImageCreateInfo const& rhs ) const
17270 {
17271 return !operator==( rhs );
17272 }
17273
17274 private:
17275 StructureType sType;
17276
17277 public:
17278 const void* pNext;
17279 ImageCreateFlags flags;
17280 ImageType imageType;
17281 Format format;
17282 Extent3D extent;
17283 uint32_t mipLevels;
17284 uint32_t arrayLayers;
17285 SampleCountFlagBits samples;
17286 ImageTiling tiling;
17287 ImageUsageFlags usage;
17288 SharingMode sharingMode;
17289 uint32_t queueFamilyIndexCount;
17290 const uint32_t* pQueueFamilyIndices;
17291 ImageLayout initialLayout;
17292 };
17293 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
17294
17295 struct PipelineMultisampleStateCreateInfo
17296 {
17297 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
17298 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
17299 , pNext( nullptr )
17300 , flags( flags_ )
17301 , rasterizationSamples( rasterizationSamples_ )
17302 , sampleShadingEnable( sampleShadingEnable_ )
17303 , minSampleShading( minSampleShading_ )
17304 , pSampleMask( pSampleMask_ )
17305 , alphaToCoverageEnable( alphaToCoverageEnable_ )
17306 , alphaToOneEnable( alphaToOneEnable_ )
17307 {
17308 }
17309
17310 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
17311 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017312 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017313 }
17314
17315 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
17316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017317 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017318 return *this;
17319 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017320 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
17321 {
17322 pNext = pNext_;
17323 return *this;
17324 }
17325
17326 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
17327 {
17328 flags = flags_;
17329 return *this;
17330 }
17331
17332 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
17333 {
17334 rasterizationSamples = rasterizationSamples_;
17335 return *this;
17336 }
17337
17338 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
17339 {
17340 sampleShadingEnable = sampleShadingEnable_;
17341 return *this;
17342 }
17343
17344 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
17345 {
17346 minSampleShading = minSampleShading_;
17347 return *this;
17348 }
17349
17350 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
17351 {
17352 pSampleMask = pSampleMask_;
17353 return *this;
17354 }
17355
17356 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
17357 {
17358 alphaToCoverageEnable = alphaToCoverageEnable_;
17359 return *this;
17360 }
17361
17362 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
17363 {
17364 alphaToOneEnable = alphaToOneEnable_;
17365 return *this;
17366 }
17367
17368 operator const VkPipelineMultisampleStateCreateInfo&() const
17369 {
17370 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
17371 }
17372
17373 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
17374 {
17375 return ( sType == rhs.sType )
17376 && ( pNext == rhs.pNext )
17377 && ( flags == rhs.flags )
17378 && ( rasterizationSamples == rhs.rasterizationSamples )
17379 && ( sampleShadingEnable == rhs.sampleShadingEnable )
17380 && ( minSampleShading == rhs.minSampleShading )
17381 && ( pSampleMask == rhs.pSampleMask )
17382 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
17383 && ( alphaToOneEnable == rhs.alphaToOneEnable );
17384 }
17385
17386 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
17387 {
17388 return !operator==( rhs );
17389 }
17390
17391 private:
17392 StructureType sType;
17393
17394 public:
17395 const void* pNext;
17396 PipelineMultisampleStateCreateFlags flags;
17397 SampleCountFlagBits rasterizationSamples;
17398 Bool32 sampleShadingEnable;
17399 float minSampleShading;
17400 const SampleMask* pSampleMask;
17401 Bool32 alphaToCoverageEnable;
17402 Bool32 alphaToOneEnable;
17403 };
17404 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
17405
17406 struct GraphicsPipelineCreateInfo
17407 {
17408 GraphicsPipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), uint32_t stageCount_ = 0, const PipelineShaderStageCreateInfo* pStages_ = nullptr, const PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr, const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr, const PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr, const PipelineViewportStateCreateInfo* pViewportState_ = nullptr, const PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr, const PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr, const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr, const PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr, const PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr, PipelineLayout layout_ = PipelineLayout(), RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
17409 : sType( StructureType::eGraphicsPipelineCreateInfo )
17410 , pNext( nullptr )
17411 , flags( flags_ )
17412 , stageCount( stageCount_ )
17413 , pStages( pStages_ )
17414 , pVertexInputState( pVertexInputState_ )
17415 , pInputAssemblyState( pInputAssemblyState_ )
17416 , pTessellationState( pTessellationState_ )
17417 , pViewportState( pViewportState_ )
17418 , pRasterizationState( pRasterizationState_ )
17419 , pMultisampleState( pMultisampleState_ )
17420 , pDepthStencilState( pDepthStencilState_ )
17421 , pColorBlendState( pColorBlendState_ )
17422 , pDynamicState( pDynamicState_ )
17423 , layout( layout_ )
17424 , renderPass( renderPass_ )
17425 , subpass( subpass_ )
17426 , basePipelineHandle( basePipelineHandle_ )
17427 , basePipelineIndex( basePipelineIndex_ )
17428 {
17429 }
17430
17431 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
17432 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017433 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017434 }
17435
17436 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
17437 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017438 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017439 return *this;
17440 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017441 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
17442 {
17443 pNext = pNext_;
17444 return *this;
17445 }
17446
17447 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
17448 {
17449 flags = flags_;
17450 return *this;
17451 }
17452
17453 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
17454 {
17455 stageCount = stageCount_;
17456 return *this;
17457 }
17458
17459 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
17460 {
17461 pStages = pStages_;
17462 return *this;
17463 }
17464
17465 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
17466 {
17467 pVertexInputState = pVertexInputState_;
17468 return *this;
17469 }
17470
17471 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
17472 {
17473 pInputAssemblyState = pInputAssemblyState_;
17474 return *this;
17475 }
17476
17477 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
17478 {
17479 pTessellationState = pTessellationState_;
17480 return *this;
17481 }
17482
17483 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
17484 {
17485 pViewportState = pViewportState_;
17486 return *this;
17487 }
17488
17489 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
17490 {
17491 pRasterizationState = pRasterizationState_;
17492 return *this;
17493 }
17494
17495 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
17496 {
17497 pMultisampleState = pMultisampleState_;
17498 return *this;
17499 }
17500
17501 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
17502 {
17503 pDepthStencilState = pDepthStencilState_;
17504 return *this;
17505 }
17506
17507 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
17508 {
17509 pColorBlendState = pColorBlendState_;
17510 return *this;
17511 }
17512
17513 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
17514 {
17515 pDynamicState = pDynamicState_;
17516 return *this;
17517 }
17518
17519 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
17520 {
17521 layout = layout_;
17522 return *this;
17523 }
17524
17525 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
17526 {
17527 renderPass = renderPass_;
17528 return *this;
17529 }
17530
17531 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
17532 {
17533 subpass = subpass_;
17534 return *this;
17535 }
17536
17537 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
17538 {
17539 basePipelineHandle = basePipelineHandle_;
17540 return *this;
17541 }
17542
17543 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
17544 {
17545 basePipelineIndex = basePipelineIndex_;
17546 return *this;
17547 }
17548
17549 operator const VkGraphicsPipelineCreateInfo&() const
17550 {
17551 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
17552 }
17553
17554 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
17555 {
17556 return ( sType == rhs.sType )
17557 && ( pNext == rhs.pNext )
17558 && ( flags == rhs.flags )
17559 && ( stageCount == rhs.stageCount )
17560 && ( pStages == rhs.pStages )
17561 && ( pVertexInputState == rhs.pVertexInputState )
17562 && ( pInputAssemblyState == rhs.pInputAssemblyState )
17563 && ( pTessellationState == rhs.pTessellationState )
17564 && ( pViewportState == rhs.pViewportState )
17565 && ( pRasterizationState == rhs.pRasterizationState )
17566 && ( pMultisampleState == rhs.pMultisampleState )
17567 && ( pDepthStencilState == rhs.pDepthStencilState )
17568 && ( pColorBlendState == rhs.pColorBlendState )
17569 && ( pDynamicState == rhs.pDynamicState )
17570 && ( layout == rhs.layout )
17571 && ( renderPass == rhs.renderPass )
17572 && ( subpass == rhs.subpass )
17573 && ( basePipelineHandle == rhs.basePipelineHandle )
17574 && ( basePipelineIndex == rhs.basePipelineIndex );
17575 }
17576
17577 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
17578 {
17579 return !operator==( rhs );
17580 }
17581
17582 private:
17583 StructureType sType;
17584
17585 public:
17586 const void* pNext;
17587 PipelineCreateFlags flags;
17588 uint32_t stageCount;
17589 const PipelineShaderStageCreateInfo* pStages;
17590 const PipelineVertexInputStateCreateInfo* pVertexInputState;
17591 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
17592 const PipelineTessellationStateCreateInfo* pTessellationState;
17593 const PipelineViewportStateCreateInfo* pViewportState;
17594 const PipelineRasterizationStateCreateInfo* pRasterizationState;
17595 const PipelineMultisampleStateCreateInfo* pMultisampleState;
17596 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
17597 const PipelineColorBlendStateCreateInfo* pColorBlendState;
17598 const PipelineDynamicStateCreateInfo* pDynamicState;
17599 PipelineLayout layout;
17600 RenderPass renderPass;
17601 uint32_t subpass;
17602 Pipeline basePipelineHandle;
17603 int32_t basePipelineIndex;
17604 };
17605 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
17606
17607 struct PhysicalDeviceLimits
17608 {
17609 operator const VkPhysicalDeviceLimits&() const
17610 {
17611 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
17612 }
17613
17614 bool operator==( PhysicalDeviceLimits const& rhs ) const
17615 {
17616 return ( maxImageDimension1D == rhs.maxImageDimension1D )
17617 && ( maxImageDimension2D == rhs.maxImageDimension2D )
17618 && ( maxImageDimension3D == rhs.maxImageDimension3D )
17619 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
17620 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17621 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
17622 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
17623 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
17624 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
17625 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
17626 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
17627 && ( bufferImageGranularity == rhs.bufferImageGranularity )
17628 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
17629 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
17630 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
17631 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
17632 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
17633 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
17634 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
17635 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
17636 && ( maxPerStageResources == rhs.maxPerStageResources )
17637 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
17638 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
17639 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
17640 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
17641 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
17642 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
17643 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
17644 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
17645 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
17646 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
17647 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
17648 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
17649 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
17650 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
17651 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
17652 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
17653 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
17654 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
17655 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
17656 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
17657 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
17658 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
17659 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
17660 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
17661 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
17662 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
17663 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
17664 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
17665 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
17666 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
17667 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
17668 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
17669 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
17670 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
17671 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
17672 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
17673 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
17674 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
17675 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
17676 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
17677 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
17678 && ( maxViewports == rhs.maxViewports )
17679 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
17680 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
17681 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
17682 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
17683 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
17684 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
17685 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
17686 && ( minTexelOffset == rhs.minTexelOffset )
17687 && ( maxTexelOffset == rhs.maxTexelOffset )
17688 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
17689 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
17690 && ( minInterpolationOffset == rhs.minInterpolationOffset )
17691 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
17692 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
17693 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
17694 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
17695 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
17696 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
17697 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
17698 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
17699 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
17700 && ( maxColorAttachments == rhs.maxColorAttachments )
17701 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
17702 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
17703 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
17704 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
17705 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
17706 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
17707 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
17708 && ( timestampPeriod == rhs.timestampPeriod )
17709 && ( maxClipDistances == rhs.maxClipDistances )
17710 && ( maxCullDistances == rhs.maxCullDistances )
17711 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
17712 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
17713 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
17714 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
17715 && ( pointSizeGranularity == rhs.pointSizeGranularity )
17716 && ( lineWidthGranularity == rhs.lineWidthGranularity )
17717 && ( strictLines == rhs.strictLines )
17718 && ( standardSampleLocations == rhs.standardSampleLocations )
17719 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
17720 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
17721 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
17722 }
17723
17724 bool operator!=( PhysicalDeviceLimits const& rhs ) const
17725 {
17726 return !operator==( rhs );
17727 }
17728
17729 uint32_t maxImageDimension1D;
17730 uint32_t maxImageDimension2D;
17731 uint32_t maxImageDimension3D;
17732 uint32_t maxImageDimensionCube;
17733 uint32_t maxImageArrayLayers;
17734 uint32_t maxTexelBufferElements;
17735 uint32_t maxUniformBufferRange;
17736 uint32_t maxStorageBufferRange;
17737 uint32_t maxPushConstantsSize;
17738 uint32_t maxMemoryAllocationCount;
17739 uint32_t maxSamplerAllocationCount;
17740 DeviceSize bufferImageGranularity;
17741 DeviceSize sparseAddressSpaceSize;
17742 uint32_t maxBoundDescriptorSets;
17743 uint32_t maxPerStageDescriptorSamplers;
17744 uint32_t maxPerStageDescriptorUniformBuffers;
17745 uint32_t maxPerStageDescriptorStorageBuffers;
17746 uint32_t maxPerStageDescriptorSampledImages;
17747 uint32_t maxPerStageDescriptorStorageImages;
17748 uint32_t maxPerStageDescriptorInputAttachments;
17749 uint32_t maxPerStageResources;
17750 uint32_t maxDescriptorSetSamplers;
17751 uint32_t maxDescriptorSetUniformBuffers;
17752 uint32_t maxDescriptorSetUniformBuffersDynamic;
17753 uint32_t maxDescriptorSetStorageBuffers;
17754 uint32_t maxDescriptorSetStorageBuffersDynamic;
17755 uint32_t maxDescriptorSetSampledImages;
17756 uint32_t maxDescriptorSetStorageImages;
17757 uint32_t maxDescriptorSetInputAttachments;
17758 uint32_t maxVertexInputAttributes;
17759 uint32_t maxVertexInputBindings;
17760 uint32_t maxVertexInputAttributeOffset;
17761 uint32_t maxVertexInputBindingStride;
17762 uint32_t maxVertexOutputComponents;
17763 uint32_t maxTessellationGenerationLevel;
17764 uint32_t maxTessellationPatchSize;
17765 uint32_t maxTessellationControlPerVertexInputComponents;
17766 uint32_t maxTessellationControlPerVertexOutputComponents;
17767 uint32_t maxTessellationControlPerPatchOutputComponents;
17768 uint32_t maxTessellationControlTotalOutputComponents;
17769 uint32_t maxTessellationEvaluationInputComponents;
17770 uint32_t maxTessellationEvaluationOutputComponents;
17771 uint32_t maxGeometryShaderInvocations;
17772 uint32_t maxGeometryInputComponents;
17773 uint32_t maxGeometryOutputComponents;
17774 uint32_t maxGeometryOutputVertices;
17775 uint32_t maxGeometryTotalOutputComponents;
17776 uint32_t maxFragmentInputComponents;
17777 uint32_t maxFragmentOutputAttachments;
17778 uint32_t maxFragmentDualSrcAttachments;
17779 uint32_t maxFragmentCombinedOutputResources;
17780 uint32_t maxComputeSharedMemorySize;
17781 uint32_t maxComputeWorkGroupCount[3];
17782 uint32_t maxComputeWorkGroupInvocations;
17783 uint32_t maxComputeWorkGroupSize[3];
17784 uint32_t subPixelPrecisionBits;
17785 uint32_t subTexelPrecisionBits;
17786 uint32_t mipmapPrecisionBits;
17787 uint32_t maxDrawIndexedIndexValue;
17788 uint32_t maxDrawIndirectCount;
17789 float maxSamplerLodBias;
17790 float maxSamplerAnisotropy;
17791 uint32_t maxViewports;
17792 uint32_t maxViewportDimensions[2];
17793 float viewportBoundsRange[2];
17794 uint32_t viewportSubPixelBits;
17795 size_t minMemoryMapAlignment;
17796 DeviceSize minTexelBufferOffsetAlignment;
17797 DeviceSize minUniformBufferOffsetAlignment;
17798 DeviceSize minStorageBufferOffsetAlignment;
17799 int32_t minTexelOffset;
17800 uint32_t maxTexelOffset;
17801 int32_t minTexelGatherOffset;
17802 uint32_t maxTexelGatherOffset;
17803 float minInterpolationOffset;
17804 float maxInterpolationOffset;
17805 uint32_t subPixelInterpolationOffsetBits;
17806 uint32_t maxFramebufferWidth;
17807 uint32_t maxFramebufferHeight;
17808 uint32_t maxFramebufferLayers;
17809 SampleCountFlags framebufferColorSampleCounts;
17810 SampleCountFlags framebufferDepthSampleCounts;
17811 SampleCountFlags framebufferStencilSampleCounts;
17812 SampleCountFlags framebufferNoAttachmentsSampleCounts;
17813 uint32_t maxColorAttachments;
17814 SampleCountFlags sampledImageColorSampleCounts;
17815 SampleCountFlags sampledImageIntegerSampleCounts;
17816 SampleCountFlags sampledImageDepthSampleCounts;
17817 SampleCountFlags sampledImageStencilSampleCounts;
17818 SampleCountFlags storageImageSampleCounts;
17819 uint32_t maxSampleMaskWords;
17820 Bool32 timestampComputeAndGraphics;
17821 float timestampPeriod;
17822 uint32_t maxClipDistances;
17823 uint32_t maxCullDistances;
17824 uint32_t maxCombinedClipAndCullDistances;
17825 uint32_t discreteQueuePriorities;
17826 float pointSizeRange[2];
17827 float lineWidthRange[2];
17828 float pointSizeGranularity;
17829 float lineWidthGranularity;
17830 Bool32 strictLines;
17831 Bool32 standardSampleLocations;
17832 DeviceSize optimalBufferCopyOffsetAlignment;
17833 DeviceSize optimalBufferCopyRowPitchAlignment;
17834 DeviceSize nonCoherentAtomSize;
17835 };
17836 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
17837
17838 struct PhysicalDeviceProperties
17839 {
17840 operator const VkPhysicalDeviceProperties&() const
17841 {
17842 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
17843 }
17844
17845 bool operator==( PhysicalDeviceProperties const& rhs ) const
17846 {
17847 return ( apiVersion == rhs.apiVersion )
17848 && ( driverVersion == rhs.driverVersion )
17849 && ( vendorID == rhs.vendorID )
17850 && ( deviceID == rhs.deviceID )
17851 && ( deviceType == rhs.deviceType )
17852 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
17853 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
17854 && ( limits == rhs.limits )
17855 && ( sparseProperties == rhs.sparseProperties );
17856 }
17857
17858 bool operator!=( PhysicalDeviceProperties const& rhs ) const
17859 {
17860 return !operator==( rhs );
17861 }
17862
17863 uint32_t apiVersion;
17864 uint32_t driverVersion;
17865 uint32_t vendorID;
17866 uint32_t deviceID;
17867 PhysicalDeviceType deviceType;
17868 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
17869 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
17870 PhysicalDeviceLimits limits;
17871 PhysicalDeviceSparseProperties sparseProperties;
17872 };
17873 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
17874
Mark Young39389872017-01-19 21:10:49 -070017875 struct PhysicalDeviceProperties2KHR
17876 {
17877 operator const VkPhysicalDeviceProperties2KHR&() const
17878 {
17879 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
17880 }
17881
17882 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
17883 {
17884 return ( sType == rhs.sType )
17885 && ( pNext == rhs.pNext )
17886 && ( properties == rhs.properties );
17887 }
17888
17889 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
17890 {
17891 return !operator==( rhs );
17892 }
17893
17894 private:
17895 StructureType sType;
17896
17897 public:
17898 void* pNext;
17899 PhysicalDeviceProperties properties;
17900 };
17901 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
17902
17903 struct ImageFormatProperties2KHR
17904 {
17905 operator const VkImageFormatProperties2KHR&() const
17906 {
17907 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
17908 }
17909
17910 bool operator==( ImageFormatProperties2KHR const& rhs ) const
17911 {
17912 return ( sType == rhs.sType )
17913 && ( pNext == rhs.pNext )
17914 && ( imageFormatProperties == rhs.imageFormatProperties );
17915 }
17916
17917 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
17918 {
17919 return !operator==( rhs );
17920 }
17921
17922 private:
17923 StructureType sType;
17924
17925 public:
17926 void* pNext;
17927 ImageFormatProperties imageFormatProperties;
17928 };
17929 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17930
17931 struct PhysicalDeviceSparseImageFormatInfo2KHR
17932 {
17933 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
17934 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
17935 , pNext( nullptr )
17936 , format( format_ )
17937 , type( type_ )
17938 , samples( samples_ )
17939 , usage( usage_ )
17940 , tiling( tiling_ )
17941 {
17942 }
17943
17944 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17945 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017946 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017947 }
17948
17949 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17950 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017951 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017952 return *this;
17953 }
Mark Young39389872017-01-19 21:10:49 -070017954 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
17955 {
17956 pNext = pNext_;
17957 return *this;
17958 }
17959
17960 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
17961 {
17962 format = format_;
17963 return *this;
17964 }
17965
17966 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
17967 {
17968 type = type_;
17969 return *this;
17970 }
17971
17972 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17973 {
17974 samples = samples_;
17975 return *this;
17976 }
17977
17978 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17979 {
17980 usage = usage_;
17981 return *this;
17982 }
17983
17984 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17985 {
17986 tiling = tiling_;
17987 return *this;
17988 }
17989
17990 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17991 {
17992 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17993 }
17994
17995 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17996 {
17997 return ( sType == rhs.sType )
17998 && ( pNext == rhs.pNext )
17999 && ( format == rhs.format )
18000 && ( type == rhs.type )
18001 && ( samples == rhs.samples )
18002 && ( usage == rhs.usage )
18003 && ( tiling == rhs.tiling );
18004 }
18005
18006 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
18007 {
18008 return !operator==( rhs );
18009 }
18010
18011 private:
18012 StructureType sType;
18013
18014 public:
18015 const void* pNext;
18016 Format format;
18017 ImageType type;
18018 SampleCountFlagBits samples;
18019 ImageUsageFlags usage;
18020 ImageTiling tiling;
18021 };
18022 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
18023
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018024 enum class AttachmentDescriptionFlagBits
18025 {
18026 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
18027 };
18028
18029 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
18030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018031 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018032 {
18033 return AttachmentDescriptionFlags( bit0 ) | bit1;
18034 }
18035
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018036 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
18037 {
18038 return ~( AttachmentDescriptionFlags( bits ) );
18039 }
18040
18041 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
18042 {
18043 enum
18044 {
18045 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
18046 };
18047 };
18048
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018049 struct AttachmentDescription
18050 {
18051 AttachmentDescription( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(), Format format_ = Format::eUndefined, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad, AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore, AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad, AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore, ImageLayout initialLayout_ = ImageLayout::eUndefined, ImageLayout finalLayout_ = ImageLayout::eUndefined )
18052 : flags( flags_ )
18053 , format( format_ )
18054 , samples( samples_ )
18055 , loadOp( loadOp_ )
18056 , storeOp( storeOp_ )
18057 , stencilLoadOp( stencilLoadOp_ )
18058 , stencilStoreOp( stencilStoreOp_ )
18059 , initialLayout( initialLayout_ )
18060 , finalLayout( finalLayout_ )
18061 {
18062 }
18063
18064 AttachmentDescription( VkAttachmentDescription const & rhs )
18065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018066 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018067 }
18068
18069 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
18070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018071 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018072 return *this;
18073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018074 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
18075 {
18076 flags = flags_;
18077 return *this;
18078 }
18079
18080 AttachmentDescription& setFormat( Format format_ )
18081 {
18082 format = format_;
18083 return *this;
18084 }
18085
18086 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
18087 {
18088 samples = samples_;
18089 return *this;
18090 }
18091
18092 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
18093 {
18094 loadOp = loadOp_;
18095 return *this;
18096 }
18097
18098 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
18099 {
18100 storeOp = storeOp_;
18101 return *this;
18102 }
18103
18104 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
18105 {
18106 stencilLoadOp = stencilLoadOp_;
18107 return *this;
18108 }
18109
18110 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
18111 {
18112 stencilStoreOp = stencilStoreOp_;
18113 return *this;
18114 }
18115
18116 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
18117 {
18118 initialLayout = initialLayout_;
18119 return *this;
18120 }
18121
18122 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
18123 {
18124 finalLayout = finalLayout_;
18125 return *this;
18126 }
18127
18128 operator const VkAttachmentDescription&() const
18129 {
18130 return *reinterpret_cast<const VkAttachmentDescription*>(this);
18131 }
18132
18133 bool operator==( AttachmentDescription const& rhs ) const
18134 {
18135 return ( flags == rhs.flags )
18136 && ( format == rhs.format )
18137 && ( samples == rhs.samples )
18138 && ( loadOp == rhs.loadOp )
18139 && ( storeOp == rhs.storeOp )
18140 && ( stencilLoadOp == rhs.stencilLoadOp )
18141 && ( stencilStoreOp == rhs.stencilStoreOp )
18142 && ( initialLayout == rhs.initialLayout )
18143 && ( finalLayout == rhs.finalLayout );
18144 }
18145
18146 bool operator!=( AttachmentDescription const& rhs ) const
18147 {
18148 return !operator==( rhs );
18149 }
18150
18151 AttachmentDescriptionFlags flags;
18152 Format format;
18153 SampleCountFlagBits samples;
18154 AttachmentLoadOp loadOp;
18155 AttachmentStoreOp storeOp;
18156 AttachmentLoadOp stencilLoadOp;
18157 AttachmentStoreOp stencilStoreOp;
18158 ImageLayout initialLayout;
18159 ImageLayout finalLayout;
18160 };
18161 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
18162
18163 enum class StencilFaceFlagBits
18164 {
18165 eFront = VK_STENCIL_FACE_FRONT_BIT,
18166 eBack = VK_STENCIL_FACE_BACK_BIT,
18167 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
18168 };
18169
18170 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
18171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018172 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018173 {
18174 return StencilFaceFlags( bit0 ) | bit1;
18175 }
18176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018177 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
18178 {
18179 return ~( StencilFaceFlags( bits ) );
18180 }
18181
18182 template <> struct FlagTraits<StencilFaceFlagBits>
18183 {
18184 enum
18185 {
18186 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
18187 };
18188 };
18189
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018190 enum class DescriptorPoolCreateFlagBits
18191 {
18192 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
18193 };
18194
18195 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
18196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018197 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018198 {
18199 return DescriptorPoolCreateFlags( bit0 ) | bit1;
18200 }
18201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018202 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
18203 {
18204 return ~( DescriptorPoolCreateFlags( bits ) );
18205 }
18206
18207 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
18208 {
18209 enum
18210 {
18211 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
18212 };
18213 };
18214
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018215 struct DescriptorPoolCreateInfo
18216 {
18217 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
18218 : sType( StructureType::eDescriptorPoolCreateInfo )
18219 , pNext( nullptr )
18220 , flags( flags_ )
18221 , maxSets( maxSets_ )
18222 , poolSizeCount( poolSizeCount_ )
18223 , pPoolSizes( pPoolSizes_ )
18224 {
18225 }
18226
18227 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
18228 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018229 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018230 }
18231
18232 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
18233 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018234 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018235 return *this;
18236 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018237 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
18238 {
18239 pNext = pNext_;
18240 return *this;
18241 }
18242
18243 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
18244 {
18245 flags = flags_;
18246 return *this;
18247 }
18248
18249 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
18250 {
18251 maxSets = maxSets_;
18252 return *this;
18253 }
18254
18255 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
18256 {
18257 poolSizeCount = poolSizeCount_;
18258 return *this;
18259 }
18260
18261 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
18262 {
18263 pPoolSizes = pPoolSizes_;
18264 return *this;
18265 }
18266
18267 operator const VkDescriptorPoolCreateInfo&() const
18268 {
18269 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
18270 }
18271
18272 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
18273 {
18274 return ( sType == rhs.sType )
18275 && ( pNext == rhs.pNext )
18276 && ( flags == rhs.flags )
18277 && ( maxSets == rhs.maxSets )
18278 && ( poolSizeCount == rhs.poolSizeCount )
18279 && ( pPoolSizes == rhs.pPoolSizes );
18280 }
18281
18282 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
18283 {
18284 return !operator==( rhs );
18285 }
18286
18287 private:
18288 StructureType sType;
18289
18290 public:
18291 const void* pNext;
18292 DescriptorPoolCreateFlags flags;
18293 uint32_t maxSets;
18294 uint32_t poolSizeCount;
18295 const DescriptorPoolSize* pPoolSizes;
18296 };
18297 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
18298
18299 enum class DependencyFlagBits
18300 {
Mark Young0f183a82017-02-28 09:58:04 -070018301 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
18302 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
18303 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018304 };
18305
18306 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
18307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018308 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018309 {
18310 return DependencyFlags( bit0 ) | bit1;
18311 }
18312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018313 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
18314 {
18315 return ~( DependencyFlags( bits ) );
18316 }
18317
18318 template <> struct FlagTraits<DependencyFlagBits>
18319 {
18320 enum
18321 {
Mark Young0f183a82017-02-28 09:58:04 -070018322 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018323 };
18324 };
18325
18326 struct SubpassDependency
18327 {
18328 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
18329 : srcSubpass( srcSubpass_ )
18330 , dstSubpass( dstSubpass_ )
18331 , srcStageMask( srcStageMask_ )
18332 , dstStageMask( dstStageMask_ )
18333 , srcAccessMask( srcAccessMask_ )
18334 , dstAccessMask( dstAccessMask_ )
18335 , dependencyFlags( dependencyFlags_ )
18336 {
18337 }
18338
18339 SubpassDependency( VkSubpassDependency const & rhs )
18340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018341 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018342 }
18343
18344 SubpassDependency& operator=( VkSubpassDependency const & rhs )
18345 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018346 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018347 return *this;
18348 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018349 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
18350 {
18351 srcSubpass = srcSubpass_;
18352 return *this;
18353 }
18354
18355 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
18356 {
18357 dstSubpass = dstSubpass_;
18358 return *this;
18359 }
18360
18361 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
18362 {
18363 srcStageMask = srcStageMask_;
18364 return *this;
18365 }
18366
18367 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
18368 {
18369 dstStageMask = dstStageMask_;
18370 return *this;
18371 }
18372
18373 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
18374 {
18375 srcAccessMask = srcAccessMask_;
18376 return *this;
18377 }
18378
18379 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
18380 {
18381 dstAccessMask = dstAccessMask_;
18382 return *this;
18383 }
18384
18385 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
18386 {
18387 dependencyFlags = dependencyFlags_;
18388 return *this;
18389 }
18390
18391 operator const VkSubpassDependency&() const
18392 {
18393 return *reinterpret_cast<const VkSubpassDependency*>(this);
18394 }
18395
18396 bool operator==( SubpassDependency const& rhs ) const
18397 {
18398 return ( srcSubpass == rhs.srcSubpass )
18399 && ( dstSubpass == rhs.dstSubpass )
18400 && ( srcStageMask == rhs.srcStageMask )
18401 && ( dstStageMask == rhs.dstStageMask )
18402 && ( srcAccessMask == rhs.srcAccessMask )
18403 && ( dstAccessMask == rhs.dstAccessMask )
18404 && ( dependencyFlags == rhs.dependencyFlags );
18405 }
18406
18407 bool operator!=( SubpassDependency const& rhs ) const
18408 {
18409 return !operator==( rhs );
18410 }
18411
18412 uint32_t srcSubpass;
18413 uint32_t dstSubpass;
18414 PipelineStageFlags srcStageMask;
18415 PipelineStageFlags dstStageMask;
18416 AccessFlags srcAccessMask;
18417 AccessFlags dstAccessMask;
18418 DependencyFlags dependencyFlags;
18419 };
18420 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
18421
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018422 enum class PresentModeKHR
18423 {
18424 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
18425 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
18426 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018427 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
18428 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
18429 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018430 };
18431
18432 enum class ColorSpaceKHR
18433 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060018434 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
18435 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
18436 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
18437 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
18438 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
18439 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
18440 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
18441 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
18442 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
18443 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
18444 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
18445 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
18446 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
18447 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018448 };
18449
18450 struct SurfaceFormatKHR
18451 {
18452 operator const VkSurfaceFormatKHR&() const
18453 {
18454 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
18455 }
18456
18457 bool operator==( SurfaceFormatKHR const& rhs ) const
18458 {
18459 return ( format == rhs.format )
18460 && ( colorSpace == rhs.colorSpace );
18461 }
18462
18463 bool operator!=( SurfaceFormatKHR const& rhs ) const
18464 {
18465 return !operator==( rhs );
18466 }
18467
18468 Format format;
18469 ColorSpaceKHR colorSpace;
18470 };
18471 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
18472
Mark Lobodzinski54385432017-05-15 10:27:52 -060018473 struct SurfaceFormat2KHR
18474 {
18475 operator const VkSurfaceFormat2KHR&() const
18476 {
18477 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
18478 }
18479
18480 bool operator==( SurfaceFormat2KHR const& rhs ) const
18481 {
18482 return ( sType == rhs.sType )
18483 && ( pNext == rhs.pNext )
18484 && ( surfaceFormat == rhs.surfaceFormat );
18485 }
18486
18487 bool operator!=( SurfaceFormat2KHR const& rhs ) const
18488 {
18489 return !operator==( rhs );
18490 }
18491
18492 private:
18493 StructureType sType;
18494
18495 public:
18496 void* pNext;
18497 SurfaceFormatKHR surfaceFormat;
18498 };
18499 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
18500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018501 enum class DisplayPlaneAlphaFlagBitsKHR
18502 {
18503 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
18504 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
18505 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
18506 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
18507 };
18508
18509 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
18510
18511 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
18512 {
18513 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
18514 }
18515
18516 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
18517 {
18518 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
18519 }
18520
18521 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
18522 {
18523 enum
18524 {
18525 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
18526 };
18527 };
18528
18529 struct DisplayPlaneCapabilitiesKHR
18530 {
18531 operator const VkDisplayPlaneCapabilitiesKHR&() const
18532 {
18533 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
18534 }
18535
18536 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
18537 {
18538 return ( supportedAlpha == rhs.supportedAlpha )
18539 && ( minSrcPosition == rhs.minSrcPosition )
18540 && ( maxSrcPosition == rhs.maxSrcPosition )
18541 && ( minSrcExtent == rhs.minSrcExtent )
18542 && ( maxSrcExtent == rhs.maxSrcExtent )
18543 && ( minDstPosition == rhs.minDstPosition )
18544 && ( maxDstPosition == rhs.maxDstPosition )
18545 && ( minDstExtent == rhs.minDstExtent )
18546 && ( maxDstExtent == rhs.maxDstExtent );
18547 }
18548
18549 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
18550 {
18551 return !operator==( rhs );
18552 }
18553
18554 DisplayPlaneAlphaFlagsKHR supportedAlpha;
18555 Offset2D minSrcPosition;
18556 Offset2D maxSrcPosition;
18557 Extent2D minSrcExtent;
18558 Extent2D maxSrcExtent;
18559 Offset2D minDstPosition;
18560 Offset2D maxDstPosition;
18561 Extent2D minDstExtent;
18562 Extent2D maxDstExtent;
18563 };
18564 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
18565
18566 enum class CompositeAlphaFlagBitsKHR
18567 {
18568 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
18569 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
18570 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
18571 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
18572 };
18573
18574 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
18575
18576 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
18577 {
18578 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
18579 }
18580
18581 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
18582 {
18583 return ~( CompositeAlphaFlagsKHR( bits ) );
18584 }
18585
18586 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
18587 {
18588 enum
18589 {
18590 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
18591 };
18592 };
18593
18594 enum class SurfaceTransformFlagBitsKHR
18595 {
18596 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
18597 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
18598 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
18599 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
18600 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
18601 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
18602 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
18603 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
18604 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
18605 };
18606
18607 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
18608
18609 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
18610 {
18611 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
18612 }
18613
18614 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
18615 {
18616 return ~( SurfaceTransformFlagsKHR( bits ) );
18617 }
18618
18619 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
18620 {
18621 enum
18622 {
18623 allFlags = VkFlags(SurfaceTransformFlagBitsKHR::eIdentity) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirror) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eInherit)
18624 };
18625 };
18626
18627 struct DisplayPropertiesKHR
18628 {
18629 operator const VkDisplayPropertiesKHR&() const
18630 {
18631 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
18632 }
18633
18634 bool operator==( DisplayPropertiesKHR const& rhs ) const
18635 {
18636 return ( display == rhs.display )
18637 && ( displayName == rhs.displayName )
18638 && ( physicalDimensions == rhs.physicalDimensions )
18639 && ( physicalResolution == rhs.physicalResolution )
18640 && ( supportedTransforms == rhs.supportedTransforms )
18641 && ( planeReorderPossible == rhs.planeReorderPossible )
18642 && ( persistentContent == rhs.persistentContent );
18643 }
18644
18645 bool operator!=( DisplayPropertiesKHR const& rhs ) const
18646 {
18647 return !operator==( rhs );
18648 }
18649
18650 DisplayKHR display;
18651 const char* displayName;
18652 Extent2D physicalDimensions;
18653 Extent2D physicalResolution;
18654 SurfaceTransformFlagsKHR supportedTransforms;
18655 Bool32 planeReorderPossible;
18656 Bool32 persistentContent;
18657 };
18658 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
18659
18660 struct DisplaySurfaceCreateInfoKHR
18661 {
18662 DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateFlagsKHR flags_ = DisplaySurfaceCreateFlagsKHR(), DisplayModeKHR displayMode_ = DisplayModeKHR(), uint32_t planeIndex_ = 0, uint32_t planeStackIndex_ = 0, SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, float globalAlpha_ = 0, DisplayPlaneAlphaFlagBitsKHR alphaMode_ = DisplayPlaneAlphaFlagBitsKHR::eOpaque, Extent2D imageExtent_ = Extent2D() )
18663 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
18664 , pNext( nullptr )
18665 , flags( flags_ )
18666 , displayMode( displayMode_ )
18667 , planeIndex( planeIndex_ )
18668 , planeStackIndex( planeStackIndex_ )
18669 , transform( transform_ )
18670 , globalAlpha( globalAlpha_ )
18671 , alphaMode( alphaMode_ )
18672 , imageExtent( imageExtent_ )
18673 {
18674 }
18675
18676 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
18677 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018678 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018679 }
18680
18681 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
18682 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018683 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018684 return *this;
18685 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018686 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
18687 {
18688 pNext = pNext_;
18689 return *this;
18690 }
18691
18692 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
18693 {
18694 flags = flags_;
18695 return *this;
18696 }
18697
18698 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
18699 {
18700 displayMode = displayMode_;
18701 return *this;
18702 }
18703
18704 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
18705 {
18706 planeIndex = planeIndex_;
18707 return *this;
18708 }
18709
18710 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
18711 {
18712 planeStackIndex = planeStackIndex_;
18713 return *this;
18714 }
18715
18716 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
18717 {
18718 transform = transform_;
18719 return *this;
18720 }
18721
18722 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
18723 {
18724 globalAlpha = globalAlpha_;
18725 return *this;
18726 }
18727
18728 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
18729 {
18730 alphaMode = alphaMode_;
18731 return *this;
18732 }
18733
18734 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
18735 {
18736 imageExtent = imageExtent_;
18737 return *this;
18738 }
18739
18740 operator const VkDisplaySurfaceCreateInfoKHR&() const
18741 {
18742 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
18743 }
18744
18745 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
18746 {
18747 return ( sType == rhs.sType )
18748 && ( pNext == rhs.pNext )
18749 && ( flags == rhs.flags )
18750 && ( displayMode == rhs.displayMode )
18751 && ( planeIndex == rhs.planeIndex )
18752 && ( planeStackIndex == rhs.planeStackIndex )
18753 && ( transform == rhs.transform )
18754 && ( globalAlpha == rhs.globalAlpha )
18755 && ( alphaMode == rhs.alphaMode )
18756 && ( imageExtent == rhs.imageExtent );
18757 }
18758
18759 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
18760 {
18761 return !operator==( rhs );
18762 }
18763
18764 private:
18765 StructureType sType;
18766
18767 public:
18768 const void* pNext;
18769 DisplaySurfaceCreateFlagsKHR flags;
18770 DisplayModeKHR displayMode;
18771 uint32_t planeIndex;
18772 uint32_t planeStackIndex;
18773 SurfaceTransformFlagBitsKHR transform;
18774 float globalAlpha;
18775 DisplayPlaneAlphaFlagBitsKHR alphaMode;
18776 Extent2D imageExtent;
18777 };
18778 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
18779
18780 struct SurfaceCapabilitiesKHR
18781 {
18782 operator const VkSurfaceCapabilitiesKHR&() const
18783 {
18784 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
18785 }
18786
18787 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
18788 {
18789 return ( minImageCount == rhs.minImageCount )
18790 && ( maxImageCount == rhs.maxImageCount )
18791 && ( currentExtent == rhs.currentExtent )
18792 && ( minImageExtent == rhs.minImageExtent )
18793 && ( maxImageExtent == rhs.maxImageExtent )
18794 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18795 && ( supportedTransforms == rhs.supportedTransforms )
18796 && ( currentTransform == rhs.currentTransform )
18797 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
18798 && ( supportedUsageFlags == rhs.supportedUsageFlags );
18799 }
18800
18801 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
18802 {
18803 return !operator==( rhs );
18804 }
18805
18806 uint32_t minImageCount;
18807 uint32_t maxImageCount;
18808 Extent2D currentExtent;
18809 Extent2D minImageExtent;
18810 Extent2D maxImageExtent;
18811 uint32_t maxImageArrayLayers;
18812 SurfaceTransformFlagsKHR supportedTransforms;
18813 SurfaceTransformFlagBitsKHR currentTransform;
18814 CompositeAlphaFlagsKHR supportedCompositeAlpha;
18815 ImageUsageFlags supportedUsageFlags;
18816 };
18817 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
18818
Mark Lobodzinski54385432017-05-15 10:27:52 -060018819 struct SurfaceCapabilities2KHR
18820 {
18821 operator const VkSurfaceCapabilities2KHR&() const
18822 {
18823 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
18824 }
18825
18826 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
18827 {
18828 return ( sType == rhs.sType )
18829 && ( pNext == rhs.pNext )
18830 && ( surfaceCapabilities == rhs.surfaceCapabilities );
18831 }
18832
18833 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
18834 {
18835 return !operator==( rhs );
18836 }
18837
18838 private:
18839 StructureType sType;
18840
18841 public:
18842 void* pNext;
18843 SurfaceCapabilitiesKHR surfaceCapabilities;
18844 };
18845 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
18846
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018847 enum class DebugReportFlagBitsEXT
18848 {
18849 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
18850 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
18851 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
18852 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
18853 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
18854 };
18855
18856 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
18857
18858 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
18859 {
18860 return DebugReportFlagsEXT( bit0 ) | bit1;
18861 }
18862
18863 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
18864 {
18865 return ~( DebugReportFlagsEXT( bits ) );
18866 }
18867
18868 template <> struct FlagTraits<DebugReportFlagBitsEXT>
18869 {
18870 enum
18871 {
18872 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
18873 };
18874 };
18875
18876 struct DebugReportCallbackCreateInfoEXT
18877 {
18878 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
18879 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
18880 , pNext( nullptr )
18881 , flags( flags_ )
18882 , pfnCallback( pfnCallback_ )
18883 , pUserData( pUserData_ )
18884 {
18885 }
18886
18887 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
18888 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018889 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018890 }
18891
18892 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
18893 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018894 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018895 return *this;
18896 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018897 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
18898 {
18899 pNext = pNext_;
18900 return *this;
18901 }
18902
18903 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
18904 {
18905 flags = flags_;
18906 return *this;
18907 }
18908
18909 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
18910 {
18911 pfnCallback = pfnCallback_;
18912 return *this;
18913 }
18914
18915 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
18916 {
18917 pUserData = pUserData_;
18918 return *this;
18919 }
18920
18921 operator const VkDebugReportCallbackCreateInfoEXT&() const
18922 {
18923 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
18924 }
18925
18926 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
18927 {
18928 return ( sType == rhs.sType )
18929 && ( pNext == rhs.pNext )
18930 && ( flags == rhs.flags )
18931 && ( pfnCallback == rhs.pfnCallback )
18932 && ( pUserData == rhs.pUserData );
18933 }
18934
18935 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
18936 {
18937 return !operator==( rhs );
18938 }
18939
18940 private:
18941 StructureType sType;
18942
18943 public:
18944 const void* pNext;
18945 DebugReportFlagsEXT flags;
18946 PFN_vkDebugReportCallbackEXT pfnCallback;
18947 void* pUserData;
18948 };
18949 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
18950
18951 enum class DebugReportObjectTypeEXT
18952 {
18953 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
18954 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
18955 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
18956 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
18957 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
18958 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
18959 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
18960 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
18961 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
18962 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
18963 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
18964 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
18965 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
18966 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
18967 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
18968 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
18969 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
18970 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
18971 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
18972 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
18973 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
18974 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
18975 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
18976 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
18977 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
18978 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
18979 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
18980 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018981 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018982 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
18983 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
18984 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060018985 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018986 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018987 };
18988
18989 struct DebugMarkerObjectNameInfoEXT
18990 {
18991 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
18992 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
18993 , pNext( nullptr )
18994 , objectType( objectType_ )
18995 , object( object_ )
18996 , pObjectName( pObjectName_ )
18997 {
18998 }
18999
19000 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
19001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019002 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019003 }
19004
19005 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
19006 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019007 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019008 return *this;
19009 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019010 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
19011 {
19012 pNext = pNext_;
19013 return *this;
19014 }
19015
19016 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19017 {
19018 objectType = objectType_;
19019 return *this;
19020 }
19021
19022 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
19023 {
19024 object = object_;
19025 return *this;
19026 }
19027
19028 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
19029 {
19030 pObjectName = pObjectName_;
19031 return *this;
19032 }
19033
19034 operator const VkDebugMarkerObjectNameInfoEXT&() const
19035 {
19036 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
19037 }
19038
19039 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
19040 {
19041 return ( sType == rhs.sType )
19042 && ( pNext == rhs.pNext )
19043 && ( objectType == rhs.objectType )
19044 && ( object == rhs.object )
19045 && ( pObjectName == rhs.pObjectName );
19046 }
19047
19048 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
19049 {
19050 return !operator==( rhs );
19051 }
19052
19053 private:
19054 StructureType sType;
19055
19056 public:
19057 const void* pNext;
19058 DebugReportObjectTypeEXT objectType;
19059 uint64_t object;
19060 const char* pObjectName;
19061 };
19062 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
19063
19064 struct DebugMarkerObjectTagInfoEXT
19065 {
19066 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
19067 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
19068 , pNext( nullptr )
19069 , objectType( objectType_ )
19070 , object( object_ )
19071 , tagName( tagName_ )
19072 , tagSize( tagSize_ )
19073 , pTag( pTag_ )
19074 {
19075 }
19076
19077 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
19078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019079 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019080 }
19081
19082 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
19083 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019084 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019085 return *this;
19086 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019087 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
19088 {
19089 pNext = pNext_;
19090 return *this;
19091 }
19092
19093 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19094 {
19095 objectType = objectType_;
19096 return *this;
19097 }
19098
19099 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
19100 {
19101 object = object_;
19102 return *this;
19103 }
19104
19105 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
19106 {
19107 tagName = tagName_;
19108 return *this;
19109 }
19110
19111 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
19112 {
19113 tagSize = tagSize_;
19114 return *this;
19115 }
19116
19117 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
19118 {
19119 pTag = pTag_;
19120 return *this;
19121 }
19122
19123 operator const VkDebugMarkerObjectTagInfoEXT&() const
19124 {
19125 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
19126 }
19127
19128 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
19129 {
19130 return ( sType == rhs.sType )
19131 && ( pNext == rhs.pNext )
19132 && ( objectType == rhs.objectType )
19133 && ( object == rhs.object )
19134 && ( tagName == rhs.tagName )
19135 && ( tagSize == rhs.tagSize )
19136 && ( pTag == rhs.pTag );
19137 }
19138
19139 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
19140 {
19141 return !operator==( rhs );
19142 }
19143
19144 private:
19145 StructureType sType;
19146
19147 public:
19148 const void* pNext;
19149 DebugReportObjectTypeEXT objectType;
19150 uint64_t object;
19151 uint64_t tagName;
19152 size_t tagSize;
19153 const void* pTag;
19154 };
19155 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
19156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019157 enum class RasterizationOrderAMD
19158 {
19159 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
19160 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
19161 };
19162
19163 struct PipelineRasterizationStateRasterizationOrderAMD
19164 {
19165 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
19166 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
19167 , pNext( nullptr )
19168 , rasterizationOrder( rasterizationOrder_ )
19169 {
19170 }
19171
19172 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19173 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019174 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019175 }
19176
19177 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19178 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019179 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019180 return *this;
19181 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019182 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
19183 {
19184 pNext = pNext_;
19185 return *this;
19186 }
19187
19188 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
19189 {
19190 rasterizationOrder = rasterizationOrder_;
19191 return *this;
19192 }
19193
19194 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
19195 {
19196 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
19197 }
19198
19199 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19200 {
19201 return ( sType == rhs.sType )
19202 && ( pNext == rhs.pNext )
19203 && ( rasterizationOrder == rhs.rasterizationOrder );
19204 }
19205
19206 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19207 {
19208 return !operator==( rhs );
19209 }
19210
19211 private:
19212 StructureType sType;
19213
19214 public:
19215 const void* pNext;
19216 RasterizationOrderAMD rasterizationOrder;
19217 };
19218 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
19219
19220 enum class ExternalMemoryHandleTypeFlagBitsNV
19221 {
19222 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
19223 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
19224 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
19225 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
19226 };
19227
19228 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
19229
19230 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
19231 {
19232 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
19233 }
19234
19235 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
19236 {
19237 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
19238 }
19239
19240 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
19241 {
19242 enum
19243 {
19244 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
19245 };
19246 };
19247
19248 struct ExternalMemoryImageCreateInfoNV
19249 {
19250 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
19251 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
19252 , pNext( nullptr )
19253 , handleTypes( handleTypes_ )
19254 {
19255 }
19256
19257 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
19258 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019259 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019260 }
19261
19262 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
19263 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019264 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019265 return *this;
19266 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019267 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
19268 {
19269 pNext = pNext_;
19270 return *this;
19271 }
19272
19273 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
19274 {
19275 handleTypes = handleTypes_;
19276 return *this;
19277 }
19278
19279 operator const VkExternalMemoryImageCreateInfoNV&() const
19280 {
19281 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
19282 }
19283
19284 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
19285 {
19286 return ( sType == rhs.sType )
19287 && ( pNext == rhs.pNext )
19288 && ( handleTypes == rhs.handleTypes );
19289 }
19290
19291 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
19292 {
19293 return !operator==( rhs );
19294 }
19295
19296 private:
19297 StructureType sType;
19298
19299 public:
19300 const void* pNext;
19301 ExternalMemoryHandleTypeFlagsNV handleTypes;
19302 };
19303 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
19304
19305 struct ExportMemoryAllocateInfoNV
19306 {
19307 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
19308 : sType( StructureType::eExportMemoryAllocateInfoNV )
19309 , pNext( nullptr )
19310 , handleTypes( handleTypes_ )
19311 {
19312 }
19313
19314 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
19315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019316 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019317 }
19318
19319 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
19320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019321 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019322 return *this;
19323 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019324 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
19325 {
19326 pNext = pNext_;
19327 return *this;
19328 }
19329
19330 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
19331 {
19332 handleTypes = handleTypes_;
19333 return *this;
19334 }
19335
19336 operator const VkExportMemoryAllocateInfoNV&() const
19337 {
19338 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
19339 }
19340
19341 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
19342 {
19343 return ( sType == rhs.sType )
19344 && ( pNext == rhs.pNext )
19345 && ( handleTypes == rhs.handleTypes );
19346 }
19347
19348 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
19349 {
19350 return !operator==( rhs );
19351 }
19352
19353 private:
19354 StructureType sType;
19355
19356 public:
19357 const void* pNext;
19358 ExternalMemoryHandleTypeFlagsNV handleTypes;
19359 };
19360 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
19361
19362#ifdef VK_USE_PLATFORM_WIN32_KHR
19363 struct ImportMemoryWin32HandleInfoNV
19364 {
19365 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
19366 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
19367 , pNext( nullptr )
19368 , handleType( handleType_ )
19369 , handle( handle_ )
19370 {
19371 }
19372
19373 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
19374 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019375 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019376 }
19377
19378 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
19379 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019380 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019381 return *this;
19382 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019383 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
19384 {
19385 pNext = pNext_;
19386 return *this;
19387 }
19388
19389 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
19390 {
19391 handleType = handleType_;
19392 return *this;
19393 }
19394
19395 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
19396 {
19397 handle = handle_;
19398 return *this;
19399 }
19400
19401 operator const VkImportMemoryWin32HandleInfoNV&() const
19402 {
19403 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
19404 }
19405
19406 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
19407 {
19408 return ( sType == rhs.sType )
19409 && ( pNext == rhs.pNext )
19410 && ( handleType == rhs.handleType )
19411 && ( handle == rhs.handle );
19412 }
19413
19414 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
19415 {
19416 return !operator==( rhs );
19417 }
19418
19419 private:
19420 StructureType sType;
19421
19422 public:
19423 const void* pNext;
19424 ExternalMemoryHandleTypeFlagsNV handleType;
19425 HANDLE handle;
19426 };
19427 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
19428#endif /*VK_USE_PLATFORM_WIN32_KHR*/
19429
19430 enum class ExternalMemoryFeatureFlagBitsNV
19431 {
19432 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
19433 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
19434 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
19435 };
19436
19437 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
19438
19439 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
19440 {
19441 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
19442 }
19443
19444 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
19445 {
19446 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
19447 }
19448
19449 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
19450 {
19451 enum
19452 {
19453 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
19454 };
19455 };
19456
19457 struct ExternalImageFormatPropertiesNV
19458 {
19459 operator const VkExternalImageFormatPropertiesNV&() const
19460 {
19461 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
19462 }
19463
19464 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
19465 {
19466 return ( imageFormatProperties == rhs.imageFormatProperties )
19467 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19468 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19469 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19470 }
19471
19472 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
19473 {
19474 return !operator==( rhs );
19475 }
19476
19477 ImageFormatProperties imageFormatProperties;
19478 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
19479 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
19480 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
19481 };
19482 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
19483
19484 enum class ValidationCheckEXT
19485 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019486 eAll = VK_VALIDATION_CHECK_ALL_EXT,
19487 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019488 };
19489
19490 struct ValidationFlagsEXT
19491 {
19492 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
19493 : sType( StructureType::eValidationFlagsEXT )
19494 , pNext( nullptr )
19495 , disabledValidationCheckCount( disabledValidationCheckCount_ )
19496 , pDisabledValidationChecks( pDisabledValidationChecks_ )
19497 {
19498 }
19499
19500 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
19501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019502 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019503 }
19504
19505 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
19506 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019507 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019508 return *this;
19509 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019510 ValidationFlagsEXT& setPNext( const void* pNext_ )
19511 {
19512 pNext = pNext_;
19513 return *this;
19514 }
19515
19516 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
19517 {
19518 disabledValidationCheckCount = disabledValidationCheckCount_;
19519 return *this;
19520 }
19521
19522 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
19523 {
19524 pDisabledValidationChecks = pDisabledValidationChecks_;
19525 return *this;
19526 }
19527
19528 operator const VkValidationFlagsEXT&() const
19529 {
19530 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
19531 }
19532
19533 bool operator==( ValidationFlagsEXT const& rhs ) const
19534 {
19535 return ( sType == rhs.sType )
19536 && ( pNext == rhs.pNext )
19537 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
19538 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
19539 }
19540
19541 bool operator!=( ValidationFlagsEXT const& rhs ) const
19542 {
19543 return !operator==( rhs );
19544 }
19545
19546 private:
19547 StructureType sType;
19548
19549 public:
19550 const void* pNext;
19551 uint32_t disabledValidationCheckCount;
19552 ValidationCheckEXT* pDisabledValidationChecks;
19553 };
19554 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
19555
19556 enum class IndirectCommandsLayoutUsageFlagBitsNVX
19557 {
19558 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
19559 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
19560 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
19561 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
19562 };
19563
19564 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
19565
19566 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
19567 {
19568 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
19569 }
19570
19571 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
19572 {
19573 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
19574 }
19575
19576 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
19577 {
19578 enum
19579 {
19580 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
19581 };
19582 };
19583
19584 enum class ObjectEntryUsageFlagBitsNVX
19585 {
19586 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
19587 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
19588 };
19589
19590 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
19591
19592 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
19593 {
19594 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
19595 }
19596
19597 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
19598 {
19599 return ~( ObjectEntryUsageFlagsNVX( bits ) );
19600 }
19601
19602 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
19603 {
19604 enum
19605 {
19606 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
19607 };
19608 };
19609
19610 enum class IndirectCommandsTokenTypeNVX
19611 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019612 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
19613 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
19614 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
19615 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
19616 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
19617 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
19618 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
19619 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019620 };
19621
19622 struct IndirectCommandsTokenNVX
19623 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019624 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019625 : tokenType( tokenType_ )
19626 , buffer( buffer_ )
19627 , offset( offset_ )
19628 {
19629 }
19630
19631 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
19632 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019633 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019634 }
19635
19636 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
19637 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019638 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019639 return *this;
19640 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019641 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19642 {
19643 tokenType = tokenType_;
19644 return *this;
19645 }
19646
19647 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
19648 {
19649 buffer = buffer_;
19650 return *this;
19651 }
19652
19653 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
19654 {
19655 offset = offset_;
19656 return *this;
19657 }
19658
19659 operator const VkIndirectCommandsTokenNVX&() const
19660 {
19661 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
19662 }
19663
19664 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
19665 {
19666 return ( tokenType == rhs.tokenType )
19667 && ( buffer == rhs.buffer )
19668 && ( offset == rhs.offset );
19669 }
19670
19671 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
19672 {
19673 return !operator==( rhs );
19674 }
19675
19676 IndirectCommandsTokenTypeNVX tokenType;
19677 Buffer buffer;
19678 DeviceSize offset;
19679 };
19680 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
19681
19682 struct IndirectCommandsLayoutTokenNVX
19683 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019684 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019685 : tokenType( tokenType_ )
19686 , bindingUnit( bindingUnit_ )
19687 , dynamicCount( dynamicCount_ )
19688 , divisor( divisor_ )
19689 {
19690 }
19691
19692 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
19693 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019694 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019695 }
19696
19697 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
19698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019699 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019700 return *this;
19701 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019702 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19703 {
19704 tokenType = tokenType_;
19705 return *this;
19706 }
19707
19708 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
19709 {
19710 bindingUnit = bindingUnit_;
19711 return *this;
19712 }
19713
19714 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
19715 {
19716 dynamicCount = dynamicCount_;
19717 return *this;
19718 }
19719
19720 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
19721 {
19722 divisor = divisor_;
19723 return *this;
19724 }
19725
19726 operator const VkIndirectCommandsLayoutTokenNVX&() const
19727 {
19728 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
19729 }
19730
19731 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
19732 {
19733 return ( tokenType == rhs.tokenType )
19734 && ( bindingUnit == rhs.bindingUnit )
19735 && ( dynamicCount == rhs.dynamicCount )
19736 && ( divisor == rhs.divisor );
19737 }
19738
19739 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
19740 {
19741 return !operator==( rhs );
19742 }
19743
19744 IndirectCommandsTokenTypeNVX tokenType;
19745 uint32_t bindingUnit;
19746 uint32_t dynamicCount;
19747 uint32_t divisor;
19748 };
19749 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
19750
19751 struct IndirectCommandsLayoutCreateInfoNVX
19752 {
19753 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
19754 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
19755 , pNext( nullptr )
19756 , pipelineBindPoint( pipelineBindPoint_ )
19757 , flags( flags_ )
19758 , tokenCount( tokenCount_ )
19759 , pTokens( pTokens_ )
19760 {
19761 }
19762
19763 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19764 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019765 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019766 }
19767
19768 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19769 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019770 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019771 return *this;
19772 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019773 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
19774 {
19775 pNext = pNext_;
19776 return *this;
19777 }
19778
19779 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
19780 {
19781 pipelineBindPoint = pipelineBindPoint_;
19782 return *this;
19783 }
19784
19785 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
19786 {
19787 flags = flags_;
19788 return *this;
19789 }
19790
19791 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
19792 {
19793 tokenCount = tokenCount_;
19794 return *this;
19795 }
19796
19797 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
19798 {
19799 pTokens = pTokens_;
19800 return *this;
19801 }
19802
19803 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
19804 {
19805 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
19806 }
19807
19808 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19809 {
19810 return ( sType == rhs.sType )
19811 && ( pNext == rhs.pNext )
19812 && ( pipelineBindPoint == rhs.pipelineBindPoint )
19813 && ( flags == rhs.flags )
19814 && ( tokenCount == rhs.tokenCount )
19815 && ( pTokens == rhs.pTokens );
19816 }
19817
19818 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19819 {
19820 return !operator==( rhs );
19821 }
19822
19823 private:
19824 StructureType sType;
19825
19826 public:
19827 const void* pNext;
19828 PipelineBindPoint pipelineBindPoint;
19829 IndirectCommandsLayoutUsageFlagsNVX flags;
19830 uint32_t tokenCount;
19831 const IndirectCommandsLayoutTokenNVX* pTokens;
19832 };
19833 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
19834
19835 enum class ObjectEntryTypeNVX
19836 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019837 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
19838 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
19839 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
19840 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
19841 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019842 };
19843
19844 struct ObjectTableCreateInfoNVX
19845 {
19846 ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0, const ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr, const uint32_t* pObjectEntryCounts_ = nullptr, const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr, uint32_t maxUniformBuffersPerDescriptor_ = 0, uint32_t maxStorageBuffersPerDescriptor_ = 0, uint32_t maxStorageImagesPerDescriptor_ = 0, uint32_t maxSampledImagesPerDescriptor_ = 0, uint32_t maxPipelineLayouts_ = 0 )
19847 : sType( StructureType::eObjectTableCreateInfoNVX )
19848 , pNext( nullptr )
19849 , objectCount( objectCount_ )
19850 , pObjectEntryTypes( pObjectEntryTypes_ )
19851 , pObjectEntryCounts( pObjectEntryCounts_ )
19852 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
19853 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
19854 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
19855 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
19856 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
19857 , maxPipelineLayouts( maxPipelineLayouts_ )
19858 {
19859 }
19860
19861 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
19862 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019863 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019864 }
19865
19866 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
19867 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019868 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019869 return *this;
19870 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019871 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
19872 {
19873 pNext = pNext_;
19874 return *this;
19875 }
19876
19877 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
19878 {
19879 objectCount = objectCount_;
19880 return *this;
19881 }
19882
19883 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
19884 {
19885 pObjectEntryTypes = pObjectEntryTypes_;
19886 return *this;
19887 }
19888
19889 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
19890 {
19891 pObjectEntryCounts = pObjectEntryCounts_;
19892 return *this;
19893 }
19894
19895 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
19896 {
19897 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
19898 return *this;
19899 }
19900
19901 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
19902 {
19903 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
19904 return *this;
19905 }
19906
19907 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
19908 {
19909 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
19910 return *this;
19911 }
19912
19913 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
19914 {
19915 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
19916 return *this;
19917 }
19918
19919 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
19920 {
19921 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
19922 return *this;
19923 }
19924
19925 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
19926 {
19927 maxPipelineLayouts = maxPipelineLayouts_;
19928 return *this;
19929 }
19930
19931 operator const VkObjectTableCreateInfoNVX&() const
19932 {
19933 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
19934 }
19935
19936 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
19937 {
19938 return ( sType == rhs.sType )
19939 && ( pNext == rhs.pNext )
19940 && ( objectCount == rhs.objectCount )
19941 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
19942 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
19943 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
19944 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
19945 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
19946 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
19947 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
19948 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
19949 }
19950
19951 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
19952 {
19953 return !operator==( rhs );
19954 }
19955
19956 private:
19957 StructureType sType;
19958
19959 public:
19960 const void* pNext;
19961 uint32_t objectCount;
19962 const ObjectEntryTypeNVX* pObjectEntryTypes;
19963 const uint32_t* pObjectEntryCounts;
19964 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
19965 uint32_t maxUniformBuffersPerDescriptor;
19966 uint32_t maxStorageBuffersPerDescriptor;
19967 uint32_t maxStorageImagesPerDescriptor;
19968 uint32_t maxSampledImagesPerDescriptor;
19969 uint32_t maxPipelineLayouts;
19970 };
19971 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
19972
19973 struct ObjectTableEntryNVX
19974 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019975 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019976 : type( type_ )
19977 , flags( flags_ )
19978 {
19979 }
19980
19981 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
19982 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019983 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019984 }
19985
19986 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
19987 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019988 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019989 return *this;
19990 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019991 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
19992 {
19993 type = type_;
19994 return *this;
19995 }
19996
19997 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19998 {
19999 flags = flags_;
20000 return *this;
20001 }
20002
20003 operator const VkObjectTableEntryNVX&() const
20004 {
20005 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
20006 }
20007
20008 bool operator==( ObjectTableEntryNVX const& rhs ) const
20009 {
20010 return ( type == rhs.type )
20011 && ( flags == rhs.flags );
20012 }
20013
20014 bool operator!=( ObjectTableEntryNVX const& rhs ) const
20015 {
20016 return !operator==( rhs );
20017 }
20018
20019 ObjectEntryTypeNVX type;
20020 ObjectEntryUsageFlagsNVX flags;
20021 };
20022 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
20023
20024 struct ObjectTablePipelineEntryNVX
20025 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020026 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020027 : type( type_ )
20028 , flags( flags_ )
20029 , pipeline( pipeline_ )
20030 {
20031 }
20032
20033 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
20034 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020035 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020036 }
20037
20038 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
20039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020040 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020041 return *this;
20042 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020043 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
20044 {
20045 type = type_;
20046 return *this;
20047 }
20048
20049 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20050 {
20051 flags = flags_;
20052 return *this;
20053 }
20054
20055 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
20056 {
20057 pipeline = pipeline_;
20058 return *this;
20059 }
20060
20061 operator const VkObjectTablePipelineEntryNVX&() const
20062 {
20063 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
20064 }
20065
20066 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
20067 {
20068 return ( type == rhs.type )
20069 && ( flags == rhs.flags )
20070 && ( pipeline == rhs.pipeline );
20071 }
20072
20073 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
20074 {
20075 return !operator==( rhs );
20076 }
20077
20078 ObjectEntryTypeNVX type;
20079 ObjectEntryUsageFlagsNVX flags;
20080 Pipeline pipeline;
20081 };
20082 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
20083
20084 struct ObjectTableDescriptorSetEntryNVX
20085 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020086 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020087 : type( type_ )
20088 , flags( flags_ )
20089 , pipelineLayout( pipelineLayout_ )
20090 , descriptorSet( descriptorSet_ )
20091 {
20092 }
20093
20094 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
20095 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020096 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020097 }
20098
20099 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
20100 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020101 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020102 return *this;
20103 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020104 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
20105 {
20106 type = type_;
20107 return *this;
20108 }
20109
20110 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20111 {
20112 flags = flags_;
20113 return *this;
20114 }
20115
20116 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
20117 {
20118 pipelineLayout = pipelineLayout_;
20119 return *this;
20120 }
20121
20122 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
20123 {
20124 descriptorSet = descriptorSet_;
20125 return *this;
20126 }
20127
20128 operator const VkObjectTableDescriptorSetEntryNVX&() const
20129 {
20130 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
20131 }
20132
20133 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20134 {
20135 return ( type == rhs.type )
20136 && ( flags == rhs.flags )
20137 && ( pipelineLayout == rhs.pipelineLayout )
20138 && ( descriptorSet == rhs.descriptorSet );
20139 }
20140
20141 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20142 {
20143 return !operator==( rhs );
20144 }
20145
20146 ObjectEntryTypeNVX type;
20147 ObjectEntryUsageFlagsNVX flags;
20148 PipelineLayout pipelineLayout;
20149 DescriptorSet descriptorSet;
20150 };
20151 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
20152
20153 struct ObjectTableVertexBufferEntryNVX
20154 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020155 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020156 : type( type_ )
20157 , flags( flags_ )
20158 , buffer( buffer_ )
20159 {
20160 }
20161
20162 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
20163 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020164 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020165 }
20166
20167 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
20168 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020169 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020170 return *this;
20171 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020172 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20173 {
20174 type = type_;
20175 return *this;
20176 }
20177
20178 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20179 {
20180 flags = flags_;
20181 return *this;
20182 }
20183
20184 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
20185 {
20186 buffer = buffer_;
20187 return *this;
20188 }
20189
20190 operator const VkObjectTableVertexBufferEntryNVX&() const
20191 {
20192 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
20193 }
20194
20195 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
20196 {
20197 return ( type == rhs.type )
20198 && ( flags == rhs.flags )
20199 && ( buffer == rhs.buffer );
20200 }
20201
20202 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
20203 {
20204 return !operator==( rhs );
20205 }
20206
20207 ObjectEntryTypeNVX type;
20208 ObjectEntryUsageFlagsNVX flags;
20209 Buffer buffer;
20210 };
20211 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
20212
20213 struct ObjectTableIndexBufferEntryNVX
20214 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020215 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020216 : type( type_ )
20217 , flags( flags_ )
20218 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070020219 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020220 {
20221 }
20222
20223 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
20224 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020225 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020226 }
20227
20228 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
20229 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020230 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020231 return *this;
20232 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020233 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20234 {
20235 type = type_;
20236 return *this;
20237 }
20238
20239 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20240 {
20241 flags = flags_;
20242 return *this;
20243 }
20244
20245 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
20246 {
20247 buffer = buffer_;
20248 return *this;
20249 }
20250
Mark Young39389872017-01-19 21:10:49 -070020251 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
20252 {
20253 indexType = indexType_;
20254 return *this;
20255 }
20256
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020257 operator const VkObjectTableIndexBufferEntryNVX&() const
20258 {
20259 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
20260 }
20261
20262 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
20263 {
20264 return ( type == rhs.type )
20265 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070020266 && ( buffer == rhs.buffer )
20267 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020268 }
20269
20270 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
20271 {
20272 return !operator==( rhs );
20273 }
20274
20275 ObjectEntryTypeNVX type;
20276 ObjectEntryUsageFlagsNVX flags;
20277 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070020278 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020279 };
20280 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
20281
20282 struct ObjectTablePushConstantEntryNVX
20283 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020284 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020285 : type( type_ )
20286 , flags( flags_ )
20287 , pipelineLayout( pipelineLayout_ )
20288 , stageFlags( stageFlags_ )
20289 {
20290 }
20291
20292 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
20293 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020294 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020295 }
20296
20297 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
20298 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020299 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020300 return *this;
20301 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020302 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
20303 {
20304 type = type_;
20305 return *this;
20306 }
20307
20308 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20309 {
20310 flags = flags_;
20311 return *this;
20312 }
20313
20314 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
20315 {
20316 pipelineLayout = pipelineLayout_;
20317 return *this;
20318 }
20319
20320 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
20321 {
20322 stageFlags = stageFlags_;
20323 return *this;
20324 }
20325
20326 operator const VkObjectTablePushConstantEntryNVX&() const
20327 {
20328 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
20329 }
20330
20331 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
20332 {
20333 return ( type == rhs.type )
20334 && ( flags == rhs.flags )
20335 && ( pipelineLayout == rhs.pipelineLayout )
20336 && ( stageFlags == rhs.stageFlags );
20337 }
20338
20339 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
20340 {
20341 return !operator==( rhs );
20342 }
20343
20344 ObjectEntryTypeNVX type;
20345 ObjectEntryUsageFlagsNVX flags;
20346 PipelineLayout pipelineLayout;
20347 ShaderStageFlags stageFlags;
20348 };
20349 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
20350
Mark Young0f183a82017-02-28 09:58:04 -070020351 enum class DescriptorSetLayoutCreateFlagBits
20352 {
20353 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
20354 };
20355
20356 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
20357
20358 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
20359 {
20360 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
20361 }
20362
20363 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
20364 {
20365 return ~( DescriptorSetLayoutCreateFlags( bits ) );
20366 }
20367
20368 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
20369 {
20370 enum
20371 {
20372 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
20373 };
20374 };
20375
20376 struct DescriptorSetLayoutCreateInfo
20377 {
20378 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
20379 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
20380 , pNext( nullptr )
20381 , flags( flags_ )
20382 , bindingCount( bindingCount_ )
20383 , pBindings( pBindings_ )
20384 {
20385 }
20386
20387 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
20388 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020389 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070020390 }
20391
20392 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
20393 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020394 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070020395 return *this;
20396 }
Mark Young0f183a82017-02-28 09:58:04 -070020397 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
20398 {
20399 pNext = pNext_;
20400 return *this;
20401 }
20402
20403 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
20404 {
20405 flags = flags_;
20406 return *this;
20407 }
20408
20409 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
20410 {
20411 bindingCount = bindingCount_;
20412 return *this;
20413 }
20414
20415 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
20416 {
20417 pBindings = pBindings_;
20418 return *this;
20419 }
20420
20421 operator const VkDescriptorSetLayoutCreateInfo&() const
20422 {
20423 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
20424 }
20425
20426 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
20427 {
20428 return ( sType == rhs.sType )
20429 && ( pNext == rhs.pNext )
20430 && ( flags == rhs.flags )
20431 && ( bindingCount == rhs.bindingCount )
20432 && ( pBindings == rhs.pBindings );
20433 }
20434
20435 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
20436 {
20437 return !operator==( rhs );
20438 }
20439
20440 private:
20441 StructureType sType;
20442
20443 public:
20444 const void* pNext;
20445 DescriptorSetLayoutCreateFlags flags;
20446 uint32_t bindingCount;
20447 const DescriptorSetLayoutBinding* pBindings;
20448 };
20449 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
20450
Mark Youngabc2d6e2017-07-07 07:59:56 -060020451 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070020452 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020453 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
20454 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
20455 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
20456 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
20457 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
20458 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
20459 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070020460 };
20461
Mark Youngabc2d6e2017-07-07 07:59:56 -060020462 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070020463
Mark Youngabc2d6e2017-07-07 07:59:56 -060020464 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070020465 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020466 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070020467 }
20468
Mark Youngabc2d6e2017-07-07 07:59:56 -060020469 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070020470 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020471 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070020472 }
20473
Mark Youngabc2d6e2017-07-07 07:59:56 -060020474 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070020475 {
20476 enum
20477 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020478 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource)
Mark Young0f183a82017-02-28 09:58:04 -070020479 };
20480 };
20481
Mark Youngabc2d6e2017-07-07 07:59:56 -060020482 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020483 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020484 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20485 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020486 , pNext( nullptr )
20487 , handleType( handleType_ )
20488 {
20489 }
20490
Mark Youngabc2d6e2017-07-07 07:59:56 -060020491 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020492 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020493 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020494 }
20495
Mark Youngabc2d6e2017-07-07 07:59:56 -060020496 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020497 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020498 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020499 return *this;
20500 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020501 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020502 {
20503 pNext = pNext_;
20504 return *this;
20505 }
20506
Mark Youngabc2d6e2017-07-07 07:59:56 -060020507 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020508 {
20509 handleType = handleType_;
20510 return *this;
20511 }
20512
Mark Youngabc2d6e2017-07-07 07:59:56 -060020513 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020514 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020515 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020516 }
20517
Mark Youngabc2d6e2017-07-07 07:59:56 -060020518 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020519 {
20520 return ( sType == rhs.sType )
20521 && ( pNext == rhs.pNext )
20522 && ( handleType == rhs.handleType );
20523 }
20524
Mark Youngabc2d6e2017-07-07 07:59:56 -060020525 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020526 {
20527 return !operator==( rhs );
20528 }
20529
20530 private:
20531 StructureType sType;
20532
20533 public:
20534 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020535 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020536 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020537 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020538
Mark Youngabc2d6e2017-07-07 07:59:56 -060020539 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020540 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020541 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20542 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020543 , pNext( nullptr )
20544 , flags( flags_ )
20545 , usage( usage_ )
20546 , handleType( handleType_ )
20547 {
20548 }
20549
Mark Youngabc2d6e2017-07-07 07:59:56 -060020550 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020551 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020552 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020553 }
20554
Mark Youngabc2d6e2017-07-07 07:59:56 -060020555 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020556 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020557 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020558 return *this;
20559 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020560 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020561 {
20562 pNext = pNext_;
20563 return *this;
20564 }
20565
Mark Youngabc2d6e2017-07-07 07:59:56 -060020566 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070020567 {
20568 flags = flags_;
20569 return *this;
20570 }
20571
Mark Youngabc2d6e2017-07-07 07:59:56 -060020572 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070020573 {
20574 usage = usage_;
20575 return *this;
20576 }
20577
Mark Youngabc2d6e2017-07-07 07:59:56 -060020578 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020579 {
20580 handleType = handleType_;
20581 return *this;
20582 }
20583
Mark Youngabc2d6e2017-07-07 07:59:56 -060020584 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020585 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020586 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020587 }
20588
Mark Youngabc2d6e2017-07-07 07:59:56 -060020589 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020590 {
20591 return ( sType == rhs.sType )
20592 && ( pNext == rhs.pNext )
20593 && ( flags == rhs.flags )
20594 && ( usage == rhs.usage )
20595 && ( handleType == rhs.handleType );
20596 }
20597
Mark Youngabc2d6e2017-07-07 07:59:56 -060020598 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020599 {
20600 return !operator==( rhs );
20601 }
20602
20603 private:
20604 StructureType sType;
20605
20606 public:
20607 const void* pNext;
20608 BufferCreateFlags flags;
20609 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020610 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020611 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020612 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020613
Mark Youngabc2d6e2017-07-07 07:59:56 -060020614 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020615 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020616 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20617 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020618 , pNext( nullptr )
20619 , handleTypes( handleTypes_ )
20620 {
20621 }
20622
Mark Youngabc2d6e2017-07-07 07:59:56 -060020623 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020624 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020625 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020626 }
20627
Mark Youngabc2d6e2017-07-07 07:59:56 -060020628 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020629 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020630 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020631 return *this;
20632 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020633 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020634 {
20635 pNext = pNext_;
20636 return *this;
20637 }
20638
Mark Youngabc2d6e2017-07-07 07:59:56 -060020639 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020640 {
20641 handleTypes = handleTypes_;
20642 return *this;
20643 }
20644
Mark Youngabc2d6e2017-07-07 07:59:56 -060020645 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020646 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020647 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020648 }
20649
Mark Youngabc2d6e2017-07-07 07:59:56 -060020650 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020651 {
20652 return ( sType == rhs.sType )
20653 && ( pNext == rhs.pNext )
20654 && ( handleTypes == rhs.handleTypes );
20655 }
20656
Mark Youngabc2d6e2017-07-07 07:59:56 -060020657 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020658 {
20659 return !operator==( rhs );
20660 }
20661
20662 private:
20663 StructureType sType;
20664
20665 public:
20666 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020667 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020668 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020669 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020670
Mark Youngabc2d6e2017-07-07 07:59:56 -060020671 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020672 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020673 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20674 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020675 , pNext( nullptr )
20676 , handleTypes( handleTypes_ )
20677 {
20678 }
20679
Mark Youngabc2d6e2017-07-07 07:59:56 -060020680 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020681 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020682 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020683 }
20684
Mark Youngabc2d6e2017-07-07 07:59:56 -060020685 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020686 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020687 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020688 return *this;
20689 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020690 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020691 {
20692 pNext = pNext_;
20693 return *this;
20694 }
20695
Mark Youngabc2d6e2017-07-07 07:59:56 -060020696 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020697 {
20698 handleTypes = handleTypes_;
20699 return *this;
20700 }
20701
Mark Youngabc2d6e2017-07-07 07:59:56 -060020702 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020703 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020704 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020705 }
20706
Mark Youngabc2d6e2017-07-07 07:59:56 -060020707 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020708 {
20709 return ( sType == rhs.sType )
20710 && ( pNext == rhs.pNext )
20711 && ( handleTypes == rhs.handleTypes );
20712 }
20713
Mark Youngabc2d6e2017-07-07 07:59:56 -060020714 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020715 {
20716 return !operator==( rhs );
20717 }
20718
20719 private:
20720 StructureType sType;
20721
20722 public:
20723 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020724 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020725 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020726 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020727
Mark Youngabc2d6e2017-07-07 07:59:56 -060020728 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020729 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020730 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
20731 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020732 , pNext( nullptr )
20733 , handleTypes( handleTypes_ )
20734 {
20735 }
20736
Mark Youngabc2d6e2017-07-07 07:59:56 -060020737 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020738 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020739 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020740 }
20741
Mark Youngabc2d6e2017-07-07 07:59:56 -060020742 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020743 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020744 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020745 return *this;
20746 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020747 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020748 {
20749 pNext = pNext_;
20750 return *this;
20751 }
20752
Mark Youngabc2d6e2017-07-07 07:59:56 -060020753 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070020754 {
20755 handleTypes = handleTypes_;
20756 return *this;
20757 }
20758
Mark Youngabc2d6e2017-07-07 07:59:56 -060020759 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020760 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020761 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020762 }
20763
Mark Youngabc2d6e2017-07-07 07:59:56 -060020764 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020765 {
20766 return ( sType == rhs.sType )
20767 && ( pNext == rhs.pNext )
20768 && ( handleTypes == rhs.handleTypes );
20769 }
20770
Mark Youngabc2d6e2017-07-07 07:59:56 -060020771 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020772 {
20773 return !operator==( rhs );
20774 }
20775
20776 private:
20777 StructureType sType;
20778
20779 public:
20780 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020781 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070020782 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020783 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020784
Mark Youngabc2d6e2017-07-07 07:59:56 -060020785#ifdef VK_USE_PLATFORM_WIN32_KHR
20786 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020787 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020788 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
20789 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020790 , pNext( nullptr )
20791 , handleType( handleType_ )
20792 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060020793 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070020794 {
20795 }
20796
Mark Youngabc2d6e2017-07-07 07:59:56 -060020797 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020798 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020799 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020800 }
20801
Mark Youngabc2d6e2017-07-07 07:59:56 -060020802 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020803 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020804 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020805 return *this;
20806 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020807 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020808 {
20809 pNext = pNext_;
20810 return *this;
20811 }
20812
Mark Youngabc2d6e2017-07-07 07:59:56 -060020813 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020814 {
20815 handleType = handleType_;
20816 return *this;
20817 }
20818
Mark Youngabc2d6e2017-07-07 07:59:56 -060020819 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070020820 {
20821 handle = handle_;
20822 return *this;
20823 }
20824
Mark Youngabc2d6e2017-07-07 07:59:56 -060020825 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070020826 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020827 name = name_;
20828 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070020829 }
20830
Mark Youngabc2d6e2017-07-07 07:59:56 -060020831 operator const VkImportMemoryWin32HandleInfoKHR&() const
20832 {
20833 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
20834 }
20835
20836 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020837 {
20838 return ( sType == rhs.sType )
20839 && ( pNext == rhs.pNext )
20840 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060020841 && ( handle == rhs.handle )
20842 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070020843 }
20844
Mark Youngabc2d6e2017-07-07 07:59:56 -060020845 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020846 {
20847 return !operator==( rhs );
20848 }
20849
20850 private:
20851 StructureType sType;
20852
20853 public:
20854 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020855 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020856 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020857 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070020858 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020859 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
20860#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070020861
Mark Youngabc2d6e2017-07-07 07:59:56 -060020862#ifdef VK_USE_PLATFORM_WIN32_KHR
20863 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020864 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020865 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20866 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
20867 , pNext( nullptr )
20868 , memory( memory_ )
20869 , handleType( handleType_ )
20870 {
20871 }
20872
20873 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
20874 {
20875 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
20876 }
20877
20878 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
20879 {
20880 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
20881 return *this;
20882 }
20883 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
20884 {
20885 pNext = pNext_;
20886 return *this;
20887 }
20888
20889 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
20890 {
20891 memory = memory_;
20892 return *this;
20893 }
20894
20895 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
20896 {
20897 handleType = handleType_;
20898 return *this;
20899 }
20900
20901 operator const VkMemoryGetWin32HandleInfoKHR&() const
20902 {
20903 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
20904 }
20905
20906 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
20907 {
20908 return ( sType == rhs.sType )
20909 && ( pNext == rhs.pNext )
20910 && ( memory == rhs.memory )
20911 && ( handleType == rhs.handleType );
20912 }
20913
20914 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
20915 {
20916 return !operator==( rhs );
20917 }
20918
20919 private:
20920 StructureType sType;
20921
20922 public:
20923 const void* pNext;
20924 DeviceMemory memory;
20925 ExternalMemoryHandleTypeFlagBitsKHR handleType;
20926 };
20927 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
20928#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20929
20930 struct ImportMemoryFdInfoKHR
20931 {
20932 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
20933 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070020934 , pNext( nullptr )
20935 , handleType( handleType_ )
20936 , fd( fd_ )
20937 {
20938 }
20939
Mark Youngabc2d6e2017-07-07 07:59:56 -060020940 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020941 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020942 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020943 }
20944
Mark Youngabc2d6e2017-07-07 07:59:56 -060020945 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070020946 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020947 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070020948 return *this;
20949 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060020950 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070020951 {
20952 pNext = pNext_;
20953 return *this;
20954 }
20955
Mark Youngabc2d6e2017-07-07 07:59:56 -060020956 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070020957 {
20958 handleType = handleType_;
20959 return *this;
20960 }
20961
Mark Youngabc2d6e2017-07-07 07:59:56 -060020962 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070020963 {
20964 fd = fd_;
20965 return *this;
20966 }
20967
Mark Youngabc2d6e2017-07-07 07:59:56 -060020968 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070020969 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020970 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070020971 }
20972
Mark Youngabc2d6e2017-07-07 07:59:56 -060020973 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020974 {
20975 return ( sType == rhs.sType )
20976 && ( pNext == rhs.pNext )
20977 && ( handleType == rhs.handleType )
20978 && ( fd == rhs.fd );
20979 }
20980
Mark Youngabc2d6e2017-07-07 07:59:56 -060020981 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070020982 {
20983 return !operator==( rhs );
20984 }
20985
20986 private:
20987 StructureType sType;
20988
20989 public:
20990 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060020991 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070020992 int fd;
20993 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060020994 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070020995
Mark Youngabc2d6e2017-07-07 07:59:56 -060020996 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070020997 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060020998 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
20999 : sType( StructureType::eMemoryGetFdInfoKHR )
21000 , pNext( nullptr )
21001 , memory( memory_ )
21002 , handleType( handleType_ )
21003 {
21004 }
21005
21006 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
21007 {
21008 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21009 }
21010
21011 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
21012 {
21013 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21014 return *this;
21015 }
21016 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
21017 {
21018 pNext = pNext_;
21019 return *this;
21020 }
21021
21022 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
21023 {
21024 memory = memory_;
21025 return *this;
21026 }
21027
21028 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
21029 {
21030 handleType = handleType_;
21031 return *this;
21032 }
21033
21034 operator const VkMemoryGetFdInfoKHR&() const
21035 {
21036 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
21037 }
21038
21039 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
21040 {
21041 return ( sType == rhs.sType )
21042 && ( pNext == rhs.pNext )
21043 && ( memory == rhs.memory )
21044 && ( handleType == rhs.handleType );
21045 }
21046
21047 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
21048 {
21049 return !operator==( rhs );
21050 }
21051
21052 private:
21053 StructureType sType;
21054
21055 public:
21056 const void* pNext;
21057 DeviceMemory memory;
21058 ExternalMemoryHandleTypeFlagBitsKHR handleType;
21059 };
21060 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
21061
21062 enum class ExternalMemoryFeatureFlagBitsKHR
21063 {
21064 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
21065 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
21066 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021067 };
21068
Mark Youngabc2d6e2017-07-07 07:59:56 -060021069 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021070
Mark Youngabc2d6e2017-07-07 07:59:56 -060021071 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021072 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021073 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021074 }
21075
Mark Youngabc2d6e2017-07-07 07:59:56 -060021076 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021077 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021078 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021079 }
21080
Mark Youngabc2d6e2017-07-07 07:59:56 -060021081 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021082 {
21083 enum
21084 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021085 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070021086 };
21087 };
21088
Mark Youngabc2d6e2017-07-07 07:59:56 -060021089 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021090 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021091 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021092 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021093 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021094 }
21095
Mark Youngabc2d6e2017-07-07 07:59:56 -060021096 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021097 {
21098 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21099 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21100 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21101 }
21102
Mark Youngabc2d6e2017-07-07 07:59:56 -060021103 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021104 {
21105 return !operator==( rhs );
21106 }
21107
Mark Youngabc2d6e2017-07-07 07:59:56 -060021108 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
21109 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
21110 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021111 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021112 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021113
Mark Youngabc2d6e2017-07-07 07:59:56 -060021114 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021115 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021116 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021117 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021118 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021119 }
21120
Mark Youngabc2d6e2017-07-07 07:59:56 -060021121 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021122 {
21123 return ( sType == rhs.sType )
21124 && ( pNext == rhs.pNext )
21125 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21126 }
21127
Mark Youngabc2d6e2017-07-07 07:59:56 -060021128 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021129 {
21130 return !operator==( rhs );
21131 }
21132
21133 private:
21134 StructureType sType;
21135
21136 public:
21137 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021138 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021139 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021140 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021141
Mark Youngabc2d6e2017-07-07 07:59:56 -060021142 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021143 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021144 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021145 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021146 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021147 }
21148
Mark Youngabc2d6e2017-07-07 07:59:56 -060021149 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021150 {
21151 return ( sType == rhs.sType )
21152 && ( pNext == rhs.pNext )
21153 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21154 }
21155
Mark Youngabc2d6e2017-07-07 07:59:56 -060021156 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021157 {
21158 return !operator==( rhs );
21159 }
21160
21161 private:
21162 StructureType sType;
21163
21164 public:
21165 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021166 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021167 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021168 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021169
Mark Youngabc2d6e2017-07-07 07:59:56 -060021170 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021171 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021172 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21173 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21174 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21175 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
21176 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021177 };
21178
Mark Youngabc2d6e2017-07-07 07:59:56 -060021179 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021180
Mark Youngabc2d6e2017-07-07 07:59:56 -060021181 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021182 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021183 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021184 }
21185
Mark Youngabc2d6e2017-07-07 07:59:56 -060021186 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021187 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021188 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021189 }
21190
Mark Youngabc2d6e2017-07-07 07:59:56 -060021191 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021192 {
21193 enum
21194 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021195 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070021196 };
21197 };
21198
Mark Youngabc2d6e2017-07-07 07:59:56 -060021199 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021200 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021201 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21202 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021203 , pNext( nullptr )
21204 , handleType( handleType_ )
21205 {
21206 }
21207
Mark Youngabc2d6e2017-07-07 07:59:56 -060021208 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021209 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021210 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021211 }
21212
Mark Youngabc2d6e2017-07-07 07:59:56 -060021213 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021214 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021215 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021216 return *this;
21217 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021218 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021219 {
21220 pNext = pNext_;
21221 return *this;
21222 }
21223
Mark Youngabc2d6e2017-07-07 07:59:56 -060021224 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021225 {
21226 handleType = handleType_;
21227 return *this;
21228 }
21229
Mark Youngabc2d6e2017-07-07 07:59:56 -060021230 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021231 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021232 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021233 }
21234
Mark Youngabc2d6e2017-07-07 07:59:56 -060021235 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021236 {
21237 return ( sType == rhs.sType )
21238 && ( pNext == rhs.pNext )
21239 && ( handleType == rhs.handleType );
21240 }
21241
Mark Youngabc2d6e2017-07-07 07:59:56 -060021242 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021243 {
21244 return !operator==( rhs );
21245 }
21246
21247 private:
21248 StructureType sType;
21249
21250 public:
21251 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021252 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021253 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021254 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021255
Mark Youngabc2d6e2017-07-07 07:59:56 -060021256 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021257 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021258 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
21259 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021260 , pNext( nullptr )
21261 , handleTypes( handleTypes_ )
21262 {
21263 }
21264
Mark Youngabc2d6e2017-07-07 07:59:56 -060021265 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021266 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021267 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021268 }
21269
Mark Youngabc2d6e2017-07-07 07:59:56 -060021270 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021271 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021272 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021273 return *this;
21274 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021275 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021276 {
21277 pNext = pNext_;
21278 return *this;
21279 }
21280
Mark Youngabc2d6e2017-07-07 07:59:56 -060021281 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070021282 {
21283 handleTypes = handleTypes_;
21284 return *this;
21285 }
21286
Mark Youngabc2d6e2017-07-07 07:59:56 -060021287 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021288 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021289 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021290 }
21291
Mark Youngabc2d6e2017-07-07 07:59:56 -060021292 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021293 {
21294 return ( sType == rhs.sType )
21295 && ( pNext == rhs.pNext )
21296 && ( handleTypes == rhs.handleTypes );
21297 }
21298
Mark Youngabc2d6e2017-07-07 07:59:56 -060021299 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021300 {
21301 return !operator==( rhs );
21302 }
21303
21304 private:
21305 StructureType sType;
21306
21307 public:
21308 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021309 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021310 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021311 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021312
Mark Youngabc2d6e2017-07-07 07:59:56 -060021313#ifdef VK_USE_PLATFORM_WIN32_KHR
21314 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021315 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021316 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21317 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021318 , pNext( nullptr )
21319 , semaphore( semaphore_ )
21320 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021321 {
21322 }
21323
Mark Youngabc2d6e2017-07-07 07:59:56 -060021324 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021325 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021326 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021327 }
21328
Mark Youngabc2d6e2017-07-07 07:59:56 -060021329 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021330 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021331 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021332 return *this;
21333 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021334 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021335 {
21336 pNext = pNext_;
21337 return *this;
21338 }
21339
Mark Youngabc2d6e2017-07-07 07:59:56 -060021340 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070021341 {
21342 semaphore = semaphore_;
21343 return *this;
21344 }
21345
Mark Youngabc2d6e2017-07-07 07:59:56 -060021346 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021347 {
21348 handleType = handleType_;
21349 return *this;
21350 }
21351
Mark Youngabc2d6e2017-07-07 07:59:56 -060021352 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021353 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021354 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021355 }
21356
Mark Youngabc2d6e2017-07-07 07:59:56 -060021357 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021358 {
21359 return ( sType == rhs.sType )
21360 && ( pNext == rhs.pNext )
21361 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021362 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070021363 }
21364
Mark Youngabc2d6e2017-07-07 07:59:56 -060021365 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021366 {
21367 return !operator==( rhs );
21368 }
21369
21370 private:
21371 StructureType sType;
21372
21373 public:
21374 const void* pNext;
21375 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021376 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021377 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021378 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21379#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070021380
Mark Youngabc2d6e2017-07-07 07:59:56 -060021381 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021382 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021383 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21384 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021385 , pNext( nullptr )
21386 , semaphore( semaphore_ )
21387 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021388 {
21389 }
21390
Mark Youngabc2d6e2017-07-07 07:59:56 -060021391 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021392 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021393 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021394 }
21395
Mark Youngabc2d6e2017-07-07 07:59:56 -060021396 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021397 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021398 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021399 return *this;
21400 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021401 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021402 {
21403 pNext = pNext_;
21404 return *this;
21405 }
21406
Mark Youngabc2d6e2017-07-07 07:59:56 -060021407 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070021408 {
21409 semaphore = semaphore_;
21410 return *this;
21411 }
21412
Mark Youngabc2d6e2017-07-07 07:59:56 -060021413 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021414 {
21415 handleType = handleType_;
21416 return *this;
21417 }
21418
Mark Youngabc2d6e2017-07-07 07:59:56 -060021419 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021420 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021421 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021422 }
21423
Mark Youngabc2d6e2017-07-07 07:59:56 -060021424 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021425 {
21426 return ( sType == rhs.sType )
21427 && ( pNext == rhs.pNext )
21428 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021429 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070021430 }
21431
Mark Youngabc2d6e2017-07-07 07:59:56 -060021432 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021433 {
21434 return !operator==( rhs );
21435 }
21436
21437 private:
21438 StructureType sType;
21439
21440 public:
21441 const void* pNext;
21442 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021443 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021444 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021445 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021446
Mark Youngabc2d6e2017-07-07 07:59:56 -060021447 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021448 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021449 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
21450 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021451 };
21452
Mark Youngabc2d6e2017-07-07 07:59:56 -060021453 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021454
Mark Youngabc2d6e2017-07-07 07:59:56 -060021455 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021456 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021457 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021458 }
21459
Mark Youngabc2d6e2017-07-07 07:59:56 -060021460 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021461 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021462 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021463 }
21464
Mark Youngabc2d6e2017-07-07 07:59:56 -060021465 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021466 {
21467 enum
21468 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021469 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070021470 };
21471 };
21472
Mark Youngabc2d6e2017-07-07 07:59:56 -060021473 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021474 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021475 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021476 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021477 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021478 }
21479
Mark Youngabc2d6e2017-07-07 07:59:56 -060021480 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021481 {
21482 return ( sType == rhs.sType )
21483 && ( pNext == rhs.pNext )
21484 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21485 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
21486 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
21487 }
21488
Mark Youngabc2d6e2017-07-07 07:59:56 -060021489 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021490 {
21491 return !operator==( rhs );
21492 }
21493
21494 private:
21495 StructureType sType;
21496
21497 public:
21498 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021499 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
21500 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
21501 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070021502 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021503 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
21504
21505 enum class SemaphoreImportFlagBitsKHR
21506 {
21507 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
21508 };
21509
21510 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
21511
21512 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
21513 {
21514 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
21515 }
21516
21517 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
21518 {
21519 return ~( SemaphoreImportFlagsKHR( bits ) );
21520 }
21521
21522 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
21523 {
21524 enum
21525 {
21526 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
21527 };
21528 };
21529
21530#ifdef VK_USE_PLATFORM_WIN32_KHR
21531 struct ImportSemaphoreWin32HandleInfoKHR
21532 {
21533 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
21534 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
21535 , pNext( nullptr )
21536 , semaphore( semaphore_ )
21537 , flags( flags_ )
21538 , handleType( handleType_ )
21539 , handle( handle_ )
21540 , name( name_ )
21541 {
21542 }
21543
21544 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
21545 {
21546 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
21547 }
21548
21549 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
21550 {
21551 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
21552 return *this;
21553 }
21554 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
21555 {
21556 pNext = pNext_;
21557 return *this;
21558 }
21559
21560 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
21561 {
21562 semaphore = semaphore_;
21563 return *this;
21564 }
21565
21566 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
21567 {
21568 flags = flags_;
21569 return *this;
21570 }
21571
21572 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
21573 {
21574 handleType = handleType_;
21575 return *this;
21576 }
21577
21578 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
21579 {
21580 handle = handle_;
21581 return *this;
21582 }
21583
21584 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
21585 {
21586 name = name_;
21587 return *this;
21588 }
21589
21590 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
21591 {
21592 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
21593 }
21594
21595 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
21596 {
21597 return ( sType == rhs.sType )
21598 && ( pNext == rhs.pNext )
21599 && ( semaphore == rhs.semaphore )
21600 && ( flags == rhs.flags )
21601 && ( handleType == rhs.handleType )
21602 && ( handle == rhs.handle )
21603 && ( name == rhs.name );
21604 }
21605
21606 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
21607 {
21608 return !operator==( rhs );
21609 }
21610
21611 private:
21612 StructureType sType;
21613
21614 public:
21615 const void* pNext;
21616 Semaphore semaphore;
21617 SemaphoreImportFlagsKHR flags;
21618 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
21619 HANDLE handle;
21620 LPCWSTR name;
21621 };
21622 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21623#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21624
21625 struct ImportSemaphoreFdInfoKHR
21626 {
21627 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
21628 : sType( StructureType::eImportSemaphoreFdInfoKHR )
21629 , pNext( nullptr )
21630 , semaphore( semaphore_ )
21631 , flags( flags_ )
21632 , handleType( handleType_ )
21633 , fd( fd_ )
21634 {
21635 }
21636
21637 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
21638 {
21639 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
21640 }
21641
21642 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
21643 {
21644 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
21645 return *this;
21646 }
21647 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
21648 {
21649 pNext = pNext_;
21650 return *this;
21651 }
21652
21653 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
21654 {
21655 semaphore = semaphore_;
21656 return *this;
21657 }
21658
21659 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
21660 {
21661 flags = flags_;
21662 return *this;
21663 }
21664
21665 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
21666 {
21667 handleType = handleType_;
21668 return *this;
21669 }
21670
21671 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
21672 {
21673 fd = fd_;
21674 return *this;
21675 }
21676
21677 operator const VkImportSemaphoreFdInfoKHR&() const
21678 {
21679 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
21680 }
21681
21682 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
21683 {
21684 return ( sType == rhs.sType )
21685 && ( pNext == rhs.pNext )
21686 && ( semaphore == rhs.semaphore )
21687 && ( flags == rhs.flags )
21688 && ( handleType == rhs.handleType )
21689 && ( fd == rhs.fd );
21690 }
21691
21692 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
21693 {
21694 return !operator==( rhs );
21695 }
21696
21697 private:
21698 StructureType sType;
21699
21700 public:
21701 const void* pNext;
21702 Semaphore semaphore;
21703 SemaphoreImportFlagsKHR flags;
21704 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
21705 int fd;
21706 };
21707 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
21708
21709 enum class ExternalFenceHandleTypeFlagBitsKHR
21710 {
21711 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21712 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21713 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21714 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
21715 };
21716
21717 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
21718
21719 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
21720 {
21721 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
21722 }
21723
21724 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
21725 {
21726 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
21727 }
21728
21729 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
21730 {
21731 enum
21732 {
21733 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
21734 };
21735 };
21736
21737 struct PhysicalDeviceExternalFenceInfoKHR
21738 {
21739 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21740 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
21741 , pNext( nullptr )
21742 , handleType( handleType_ )
21743 {
21744 }
21745
21746 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
21747 {
21748 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
21749 }
21750
21751 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
21752 {
21753 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
21754 return *this;
21755 }
21756 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
21757 {
21758 pNext = pNext_;
21759 return *this;
21760 }
21761
21762 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21763 {
21764 handleType = handleType_;
21765 return *this;
21766 }
21767
21768 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
21769 {
21770 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
21771 }
21772
21773 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
21774 {
21775 return ( sType == rhs.sType )
21776 && ( pNext == rhs.pNext )
21777 && ( handleType == rhs.handleType );
21778 }
21779
21780 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
21781 {
21782 return !operator==( rhs );
21783 }
21784
21785 private:
21786 StructureType sType;
21787
21788 public:
21789 const void* pNext;
21790 ExternalFenceHandleTypeFlagBitsKHR handleType;
21791 };
21792 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
21793
21794 struct ExportFenceCreateInfoKHR
21795 {
21796 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
21797 : sType( StructureType::eExportFenceCreateInfoKHR )
21798 , pNext( nullptr )
21799 , handleTypes( handleTypes_ )
21800 {
21801 }
21802
21803 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
21804 {
21805 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
21806 }
21807
21808 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
21809 {
21810 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
21811 return *this;
21812 }
21813 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
21814 {
21815 pNext = pNext_;
21816 return *this;
21817 }
21818
21819 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
21820 {
21821 handleTypes = handleTypes_;
21822 return *this;
21823 }
21824
21825 operator const VkExportFenceCreateInfoKHR&() const
21826 {
21827 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
21828 }
21829
21830 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
21831 {
21832 return ( sType == rhs.sType )
21833 && ( pNext == rhs.pNext )
21834 && ( handleTypes == rhs.handleTypes );
21835 }
21836
21837 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
21838 {
21839 return !operator==( rhs );
21840 }
21841
21842 private:
21843 StructureType sType;
21844
21845 public:
21846 const void* pNext;
21847 ExternalFenceHandleTypeFlagsKHR handleTypes;
21848 };
21849 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
21850
21851#ifdef VK_USE_PLATFORM_WIN32_KHR
21852 struct FenceGetWin32HandleInfoKHR
21853 {
21854 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21855 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
21856 , pNext( nullptr )
21857 , fence( fence_ )
21858 , handleType( handleType_ )
21859 {
21860 }
21861
21862 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
21863 {
21864 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
21865 }
21866
21867 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
21868 {
21869 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
21870 return *this;
21871 }
21872 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
21873 {
21874 pNext = pNext_;
21875 return *this;
21876 }
21877
21878 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
21879 {
21880 fence = fence_;
21881 return *this;
21882 }
21883
21884 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21885 {
21886 handleType = handleType_;
21887 return *this;
21888 }
21889
21890 operator const VkFenceGetWin32HandleInfoKHR&() const
21891 {
21892 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
21893 }
21894
21895 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
21896 {
21897 return ( sType == rhs.sType )
21898 && ( pNext == rhs.pNext )
21899 && ( fence == rhs.fence )
21900 && ( handleType == rhs.handleType );
21901 }
21902
21903 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
21904 {
21905 return !operator==( rhs );
21906 }
21907
21908 private:
21909 StructureType sType;
21910
21911 public:
21912 const void* pNext;
21913 Fence fence;
21914 ExternalFenceHandleTypeFlagBitsKHR handleType;
21915 };
21916 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21917#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21918
21919 struct FenceGetFdInfoKHR
21920 {
21921 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
21922 : sType( StructureType::eFenceGetFdInfoKHR )
21923 , pNext( nullptr )
21924 , fence( fence_ )
21925 , handleType( handleType_ )
21926 {
21927 }
21928
21929 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
21930 {
21931 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
21932 }
21933
21934 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
21935 {
21936 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
21937 return *this;
21938 }
21939 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
21940 {
21941 pNext = pNext_;
21942 return *this;
21943 }
21944
21945 FenceGetFdInfoKHR& setFence( Fence fence_ )
21946 {
21947 fence = fence_;
21948 return *this;
21949 }
21950
21951 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
21952 {
21953 handleType = handleType_;
21954 return *this;
21955 }
21956
21957 operator const VkFenceGetFdInfoKHR&() const
21958 {
21959 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
21960 }
21961
21962 bool operator==( FenceGetFdInfoKHR const& rhs ) const
21963 {
21964 return ( sType == rhs.sType )
21965 && ( pNext == rhs.pNext )
21966 && ( fence == rhs.fence )
21967 && ( handleType == rhs.handleType );
21968 }
21969
21970 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
21971 {
21972 return !operator==( rhs );
21973 }
21974
21975 private:
21976 StructureType sType;
21977
21978 public:
21979 const void* pNext;
21980 Fence fence;
21981 ExternalFenceHandleTypeFlagBitsKHR handleType;
21982 };
21983 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
21984
21985 enum class ExternalFenceFeatureFlagBitsKHR
21986 {
21987 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
21988 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
21989 };
21990
21991 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
21992
21993 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
21994 {
21995 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
21996 }
21997
21998 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
21999 {
22000 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
22001 }
22002
22003 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
22004 {
22005 enum
22006 {
22007 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
22008 };
22009 };
22010
22011 struct ExternalFencePropertiesKHR
22012 {
22013 operator const VkExternalFencePropertiesKHR&() const
22014 {
22015 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
22016 }
22017
22018 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
22019 {
22020 return ( sType == rhs.sType )
22021 && ( pNext == rhs.pNext )
22022 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22023 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22024 && ( externalFenceFeatures == rhs.externalFenceFeatures );
22025 }
22026
22027 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
22028 {
22029 return !operator==( rhs );
22030 }
22031
22032 private:
22033 StructureType sType;
22034
22035 public:
22036 void* pNext;
22037 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
22038 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
22039 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
22040 };
22041 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
22042
22043 enum class FenceImportFlagBitsKHR
22044 {
22045 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
22046 };
22047
22048 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
22049
22050 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
22051 {
22052 return FenceImportFlagsKHR( bit0 ) | bit1;
22053 }
22054
22055 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
22056 {
22057 return ~( FenceImportFlagsKHR( bits ) );
22058 }
22059
22060 template <> struct FlagTraits<FenceImportFlagBitsKHR>
22061 {
22062 enum
22063 {
22064 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
22065 };
22066 };
22067
22068#ifdef VK_USE_PLATFORM_WIN32_KHR
22069 struct ImportFenceWin32HandleInfoKHR
22070 {
22071 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22072 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
22073 , pNext( nullptr )
22074 , fence( fence_ )
22075 , flags( flags_ )
22076 , handleType( handleType_ )
22077 , handle( handle_ )
22078 , name( name_ )
22079 {
22080 }
22081
22082 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
22083 {
22084 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22085 }
22086
22087 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
22088 {
22089 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22090 return *this;
22091 }
22092 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
22093 {
22094 pNext = pNext_;
22095 return *this;
22096 }
22097
22098 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
22099 {
22100 fence = fence_;
22101 return *this;
22102 }
22103
22104 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22105 {
22106 flags = flags_;
22107 return *this;
22108 }
22109
22110 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22111 {
22112 handleType = handleType_;
22113 return *this;
22114 }
22115
22116 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
22117 {
22118 handle = handle_;
22119 return *this;
22120 }
22121
22122 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
22123 {
22124 name = name_;
22125 return *this;
22126 }
22127
22128 operator const VkImportFenceWin32HandleInfoKHR&() const
22129 {
22130 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
22131 }
22132
22133 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
22134 {
22135 return ( sType == rhs.sType )
22136 && ( pNext == rhs.pNext )
22137 && ( fence == rhs.fence )
22138 && ( flags == rhs.flags )
22139 && ( handleType == rhs.handleType )
22140 && ( handle == rhs.handle )
22141 && ( name == rhs.name );
22142 }
22143
22144 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
22145 {
22146 return !operator==( rhs );
22147 }
22148
22149 private:
22150 StructureType sType;
22151
22152 public:
22153 const void* pNext;
22154 Fence fence;
22155 FenceImportFlagsKHR flags;
22156 ExternalFenceHandleTypeFlagBitsKHR handleType;
22157 HANDLE handle;
22158 LPCWSTR name;
22159 };
22160 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22161#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22162
22163 struct ImportFenceFdInfoKHR
22164 {
22165 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22166 : sType( StructureType::eImportFenceFdInfoKHR )
22167 , pNext( nullptr )
22168 , fence( fence_ )
22169 , flags( flags_ )
22170 , handleType( handleType_ )
22171 , fd( fd_ )
22172 {
22173 }
22174
22175 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
22176 {
22177 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22178 }
22179
22180 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
22181 {
22182 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22183 return *this;
22184 }
22185 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
22186 {
22187 pNext = pNext_;
22188 return *this;
22189 }
22190
22191 ImportFenceFdInfoKHR& setFence( Fence fence_ )
22192 {
22193 fence = fence_;
22194 return *this;
22195 }
22196
22197 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22198 {
22199 flags = flags_;
22200 return *this;
22201 }
22202
22203 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22204 {
22205 handleType = handleType_;
22206 return *this;
22207 }
22208
22209 ImportFenceFdInfoKHR& setFd( int fd_ )
22210 {
22211 fd = fd_;
22212 return *this;
22213 }
22214
22215 operator const VkImportFenceFdInfoKHR&() const
22216 {
22217 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
22218 }
22219
22220 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
22221 {
22222 return ( sType == rhs.sType )
22223 && ( pNext == rhs.pNext )
22224 && ( fence == rhs.fence )
22225 && ( flags == rhs.flags )
22226 && ( handleType == rhs.handleType )
22227 && ( fd == rhs.fd );
22228 }
22229
22230 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
22231 {
22232 return !operator==( rhs );
22233 }
22234
22235 private:
22236 StructureType sType;
22237
22238 public:
22239 const void* pNext;
22240 Fence fence;
22241 FenceImportFlagsKHR flags;
22242 ExternalFenceHandleTypeFlagBitsKHR handleType;
22243 int fd;
22244 };
22245 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022246
Mark Young39389872017-01-19 21:10:49 -070022247 enum class SurfaceCounterFlagBitsEXT
22248 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060022249 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070022250 };
22251
22252 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
22253
22254 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
22255 {
22256 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
22257 }
22258
22259 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
22260 {
22261 return ~( SurfaceCounterFlagsEXT( bits ) );
22262 }
22263
22264 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
22265 {
22266 enum
22267 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060022268 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070022269 };
22270 };
22271
22272 struct SurfaceCapabilities2EXT
22273 {
22274 operator const VkSurfaceCapabilities2EXT&() const
22275 {
22276 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
22277 }
22278
22279 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
22280 {
22281 return ( sType == rhs.sType )
22282 && ( pNext == rhs.pNext )
22283 && ( minImageCount == rhs.minImageCount )
22284 && ( maxImageCount == rhs.maxImageCount )
22285 && ( currentExtent == rhs.currentExtent )
22286 && ( minImageExtent == rhs.minImageExtent )
22287 && ( maxImageExtent == rhs.maxImageExtent )
22288 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
22289 && ( supportedTransforms == rhs.supportedTransforms )
22290 && ( currentTransform == rhs.currentTransform )
22291 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
22292 && ( supportedUsageFlags == rhs.supportedUsageFlags )
22293 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
22294 }
22295
22296 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
22297 {
22298 return !operator==( rhs );
22299 }
22300
22301 private:
22302 StructureType sType;
22303
22304 public:
22305 void* pNext;
22306 uint32_t minImageCount;
22307 uint32_t maxImageCount;
22308 Extent2D currentExtent;
22309 Extent2D minImageExtent;
22310 Extent2D maxImageExtent;
22311 uint32_t maxImageArrayLayers;
22312 SurfaceTransformFlagsKHR supportedTransforms;
22313 SurfaceTransformFlagBitsKHR currentTransform;
22314 CompositeAlphaFlagsKHR supportedCompositeAlpha;
22315 ImageUsageFlags supportedUsageFlags;
22316 SurfaceCounterFlagsEXT supportedSurfaceCounters;
22317 };
22318 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
22319
22320 struct SwapchainCounterCreateInfoEXT
22321 {
22322 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
22323 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
22324 , pNext( nullptr )
22325 , surfaceCounters( surfaceCounters_ )
22326 {
22327 }
22328
22329 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
22330 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022331 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022332 }
22333
22334 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
22335 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022336 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022337 return *this;
22338 }
Mark Young39389872017-01-19 21:10:49 -070022339 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
22340 {
22341 pNext = pNext_;
22342 return *this;
22343 }
22344
22345 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
22346 {
22347 surfaceCounters = surfaceCounters_;
22348 return *this;
22349 }
22350
22351 operator const VkSwapchainCounterCreateInfoEXT&() const
22352 {
22353 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
22354 }
22355
22356 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
22357 {
22358 return ( sType == rhs.sType )
22359 && ( pNext == rhs.pNext )
22360 && ( surfaceCounters == rhs.surfaceCounters );
22361 }
22362
22363 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
22364 {
22365 return !operator==( rhs );
22366 }
22367
22368 private:
22369 StructureType sType;
22370
22371 public:
22372 const void* pNext;
22373 SurfaceCounterFlagsEXT surfaceCounters;
22374 };
22375 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
22376
22377 enum class DisplayPowerStateEXT
22378 {
22379 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
22380 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
22381 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
22382 };
22383
22384 struct DisplayPowerInfoEXT
22385 {
22386 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
22387 : sType( StructureType::eDisplayPowerInfoEXT )
22388 , pNext( nullptr )
22389 , powerState( powerState_ )
22390 {
22391 }
22392
22393 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
22394 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022395 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022396 }
22397
22398 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
22399 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022400 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022401 return *this;
22402 }
Mark Young39389872017-01-19 21:10:49 -070022403 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
22404 {
22405 pNext = pNext_;
22406 return *this;
22407 }
22408
22409 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
22410 {
22411 powerState = powerState_;
22412 return *this;
22413 }
22414
22415 operator const VkDisplayPowerInfoEXT&() const
22416 {
22417 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
22418 }
22419
22420 bool operator==( DisplayPowerInfoEXT const& rhs ) const
22421 {
22422 return ( sType == rhs.sType )
22423 && ( pNext == rhs.pNext )
22424 && ( powerState == rhs.powerState );
22425 }
22426
22427 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
22428 {
22429 return !operator==( rhs );
22430 }
22431
22432 private:
22433 StructureType sType;
22434
22435 public:
22436 const void* pNext;
22437 DisplayPowerStateEXT powerState;
22438 };
22439 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
22440
22441 enum class DeviceEventTypeEXT
22442 {
22443 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
22444 };
22445
22446 struct DeviceEventInfoEXT
22447 {
22448 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
22449 : sType( StructureType::eDeviceEventInfoEXT )
22450 , pNext( nullptr )
22451 , deviceEvent( deviceEvent_ )
22452 {
22453 }
22454
22455 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
22456 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022457 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022458 }
22459
22460 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
22461 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022462 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022463 return *this;
22464 }
Mark Young39389872017-01-19 21:10:49 -070022465 DeviceEventInfoEXT& setPNext( const void* pNext_ )
22466 {
22467 pNext = pNext_;
22468 return *this;
22469 }
22470
22471 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
22472 {
22473 deviceEvent = deviceEvent_;
22474 return *this;
22475 }
22476
22477 operator const VkDeviceEventInfoEXT&() const
22478 {
22479 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
22480 }
22481
22482 bool operator==( DeviceEventInfoEXT const& rhs ) const
22483 {
22484 return ( sType == rhs.sType )
22485 && ( pNext == rhs.pNext )
22486 && ( deviceEvent == rhs.deviceEvent );
22487 }
22488
22489 bool operator!=( DeviceEventInfoEXT const& rhs ) const
22490 {
22491 return !operator==( rhs );
22492 }
22493
22494 private:
22495 StructureType sType;
22496
22497 public:
22498 const void* pNext;
22499 DeviceEventTypeEXT deviceEvent;
22500 };
22501 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
22502
22503 enum class DisplayEventTypeEXT
22504 {
22505 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
22506 };
22507
22508 struct DisplayEventInfoEXT
22509 {
22510 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
22511 : sType( StructureType::eDisplayEventInfoEXT )
22512 , pNext( nullptr )
22513 , displayEvent( displayEvent_ )
22514 {
22515 }
22516
22517 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
22518 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022519 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022520 }
22521
22522 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
22523 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022524 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070022525 return *this;
22526 }
Mark Young39389872017-01-19 21:10:49 -070022527 DisplayEventInfoEXT& setPNext( const void* pNext_ )
22528 {
22529 pNext = pNext_;
22530 return *this;
22531 }
22532
22533 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
22534 {
22535 displayEvent = displayEvent_;
22536 return *this;
22537 }
22538
22539 operator const VkDisplayEventInfoEXT&() const
22540 {
22541 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
22542 }
22543
22544 bool operator==( DisplayEventInfoEXT const& rhs ) const
22545 {
22546 return ( sType == rhs.sType )
22547 && ( pNext == rhs.pNext )
22548 && ( displayEvent == rhs.displayEvent );
22549 }
22550
22551 bool operator!=( DisplayEventInfoEXT const& rhs ) const
22552 {
22553 return !operator==( rhs );
22554 }
22555
22556 private:
22557 StructureType sType;
22558
22559 public:
22560 const void* pNext;
22561 DisplayEventTypeEXT displayEvent;
22562 };
22563 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
22564
Mark Young0f183a82017-02-28 09:58:04 -070022565 enum class PeerMemoryFeatureFlagBitsKHX
22566 {
22567 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
22568 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
22569 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
22570 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
22571 };
22572
22573 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
22574
22575 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
22576 {
22577 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
22578 }
22579
22580 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
22581 {
22582 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
22583 }
22584
22585 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
22586 {
22587 enum
22588 {
22589 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
22590 };
22591 };
22592
22593 enum class MemoryAllocateFlagBitsKHX
22594 {
22595 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
22596 };
22597
22598 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
22599
22600 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
22601 {
22602 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
22603 }
22604
22605 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
22606 {
22607 return ~( MemoryAllocateFlagsKHX( bits ) );
22608 }
22609
22610 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
22611 {
22612 enum
22613 {
22614 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
22615 };
22616 };
22617
22618 struct MemoryAllocateFlagsInfoKHX
22619 {
22620 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
22621 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
22622 , pNext( nullptr )
22623 , flags( flags_ )
22624 , deviceMask( deviceMask_ )
22625 {
22626 }
22627
22628 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
22629 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022630 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022631 }
22632
22633 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
22634 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022635 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022636 return *this;
22637 }
Mark Young0f183a82017-02-28 09:58:04 -070022638 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
22639 {
22640 pNext = pNext_;
22641 return *this;
22642 }
22643
22644 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
22645 {
22646 flags = flags_;
22647 return *this;
22648 }
22649
22650 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
22651 {
22652 deviceMask = deviceMask_;
22653 return *this;
22654 }
22655
22656 operator const VkMemoryAllocateFlagsInfoKHX&() const
22657 {
22658 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
22659 }
22660
22661 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
22662 {
22663 return ( sType == rhs.sType )
22664 && ( pNext == rhs.pNext )
22665 && ( flags == rhs.flags )
22666 && ( deviceMask == rhs.deviceMask );
22667 }
22668
22669 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
22670 {
22671 return !operator==( rhs );
22672 }
22673
22674 private:
22675 StructureType sType;
22676
22677 public:
22678 const void* pNext;
22679 MemoryAllocateFlagsKHX flags;
22680 uint32_t deviceMask;
22681 };
22682 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
22683
22684 enum class DeviceGroupPresentModeFlagBitsKHX
22685 {
22686 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
22687 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
22688 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
22689 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
22690 };
22691
22692 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
22693
22694 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
22695 {
22696 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
22697 }
22698
22699 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
22700 {
22701 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
22702 }
22703
22704 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
22705 {
22706 enum
22707 {
22708 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
22709 };
22710 };
22711
22712 struct DeviceGroupPresentCapabilitiesKHX
22713 {
22714 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
22715 {
22716 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
22717 }
22718
22719 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
22720 {
22721 return ( sType == rhs.sType )
22722 && ( pNext == rhs.pNext )
22723 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
22724 && ( modes == rhs.modes );
22725 }
22726
22727 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
22728 {
22729 return !operator==( rhs );
22730 }
22731
22732 private:
22733 StructureType sType;
22734
22735 public:
22736 const void* pNext;
22737 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
22738 DeviceGroupPresentModeFlagsKHX modes;
22739 };
22740 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
22741
22742 struct DeviceGroupPresentInfoKHX
22743 {
22744 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
22745 : sType( StructureType::eDeviceGroupPresentInfoKHX )
22746 , pNext( nullptr )
22747 , swapchainCount( swapchainCount_ )
22748 , pDeviceMasks( pDeviceMasks_ )
22749 , mode( mode_ )
22750 {
22751 }
22752
22753 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
22754 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022755 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022756 }
22757
22758 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
22759 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022760 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022761 return *this;
22762 }
Mark Young0f183a82017-02-28 09:58:04 -070022763 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
22764 {
22765 pNext = pNext_;
22766 return *this;
22767 }
22768
22769 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
22770 {
22771 swapchainCount = swapchainCount_;
22772 return *this;
22773 }
22774
22775 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
22776 {
22777 pDeviceMasks = pDeviceMasks_;
22778 return *this;
22779 }
22780
22781 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
22782 {
22783 mode = mode_;
22784 return *this;
22785 }
22786
22787 operator const VkDeviceGroupPresentInfoKHX&() const
22788 {
22789 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
22790 }
22791
22792 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
22793 {
22794 return ( sType == rhs.sType )
22795 && ( pNext == rhs.pNext )
22796 && ( swapchainCount == rhs.swapchainCount )
22797 && ( pDeviceMasks == rhs.pDeviceMasks )
22798 && ( mode == rhs.mode );
22799 }
22800
22801 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
22802 {
22803 return !operator==( rhs );
22804 }
22805
22806 private:
22807 StructureType sType;
22808
22809 public:
22810 const void* pNext;
22811 uint32_t swapchainCount;
22812 const uint32_t* pDeviceMasks;
22813 DeviceGroupPresentModeFlagBitsKHX mode;
22814 };
22815 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
22816
22817 struct DeviceGroupSwapchainCreateInfoKHX
22818 {
22819 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
22820 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
22821 , pNext( nullptr )
22822 , modes( modes_ )
22823 {
22824 }
22825
22826 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
22827 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022828 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022829 }
22830
22831 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
22832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022833 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070022834 return *this;
22835 }
Mark Young0f183a82017-02-28 09:58:04 -070022836 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
22837 {
22838 pNext = pNext_;
22839 return *this;
22840 }
22841
22842 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
22843 {
22844 modes = modes_;
22845 return *this;
22846 }
22847
22848 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
22849 {
22850 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
22851 }
22852
22853 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
22854 {
22855 return ( sType == rhs.sType )
22856 && ( pNext == rhs.pNext )
22857 && ( modes == rhs.modes );
22858 }
22859
22860 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
22861 {
22862 return !operator==( rhs );
22863 }
22864
22865 private:
22866 StructureType sType;
22867
22868 public:
22869 const void* pNext;
22870 DeviceGroupPresentModeFlagsKHX modes;
22871 };
22872 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
22873
22874 enum class SwapchainCreateFlagBitsKHR
22875 {
22876 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
22877 };
22878
22879 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
22880
22881 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
22882 {
22883 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
22884 }
22885
22886 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
22887 {
22888 return ~( SwapchainCreateFlagsKHR( bits ) );
22889 }
22890
22891 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
22892 {
22893 enum
22894 {
22895 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
22896 };
22897 };
22898
22899 struct SwapchainCreateInfoKHR
22900 {
22901 SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_ = SwapchainCreateFlagsKHR(), SurfaceKHR surface_ = SurfaceKHR(), uint32_t minImageCount_ = 0, Format imageFormat_ = Format::eUndefined, ColorSpaceKHR imageColorSpace_ = ColorSpaceKHR::eSrgbNonlinear, Extent2D imageExtent_ = Extent2D(), uint32_t imageArrayLayers_ = 0, ImageUsageFlags imageUsage_ = ImageUsageFlags(), SharingMode imageSharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr, SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque, PresentModeKHR presentMode_ = PresentModeKHR::eImmediate, Bool32 clipped_ = 0, SwapchainKHR oldSwapchain_ = SwapchainKHR() )
22902 : sType( StructureType::eSwapchainCreateInfoKHR )
22903 , pNext( nullptr )
22904 , flags( flags_ )
22905 , surface( surface_ )
22906 , minImageCount( minImageCount_ )
22907 , imageFormat( imageFormat_ )
22908 , imageColorSpace( imageColorSpace_ )
22909 , imageExtent( imageExtent_ )
22910 , imageArrayLayers( imageArrayLayers_ )
22911 , imageUsage( imageUsage_ )
22912 , imageSharingMode( imageSharingMode_ )
22913 , queueFamilyIndexCount( queueFamilyIndexCount_ )
22914 , pQueueFamilyIndices( pQueueFamilyIndices_ )
22915 , preTransform( preTransform_ )
22916 , compositeAlpha( compositeAlpha_ )
22917 , presentMode( presentMode_ )
22918 , clipped( clipped_ )
22919 , oldSwapchain( oldSwapchain_ )
22920 {
22921 }
22922
22923 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
22924 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022925 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022926 }
22927
22928 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
22929 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022930 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022931 return *this;
22932 }
Mark Young0f183a82017-02-28 09:58:04 -070022933 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
22934 {
22935 pNext = pNext_;
22936 return *this;
22937 }
22938
22939 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
22940 {
22941 flags = flags_;
22942 return *this;
22943 }
22944
22945 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
22946 {
22947 surface = surface_;
22948 return *this;
22949 }
22950
22951 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
22952 {
22953 minImageCount = minImageCount_;
22954 return *this;
22955 }
22956
22957 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
22958 {
22959 imageFormat = imageFormat_;
22960 return *this;
22961 }
22962
22963 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
22964 {
22965 imageColorSpace = imageColorSpace_;
22966 return *this;
22967 }
22968
22969 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
22970 {
22971 imageExtent = imageExtent_;
22972 return *this;
22973 }
22974
22975 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
22976 {
22977 imageArrayLayers = imageArrayLayers_;
22978 return *this;
22979 }
22980
22981 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
22982 {
22983 imageUsage = imageUsage_;
22984 return *this;
22985 }
22986
22987 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
22988 {
22989 imageSharingMode = imageSharingMode_;
22990 return *this;
22991 }
22992
22993 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
22994 {
22995 queueFamilyIndexCount = queueFamilyIndexCount_;
22996 return *this;
22997 }
22998
22999 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
23000 {
23001 pQueueFamilyIndices = pQueueFamilyIndices_;
23002 return *this;
23003 }
23004
23005 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
23006 {
23007 preTransform = preTransform_;
23008 return *this;
23009 }
23010
23011 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
23012 {
23013 compositeAlpha = compositeAlpha_;
23014 return *this;
23015 }
23016
23017 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
23018 {
23019 presentMode = presentMode_;
23020 return *this;
23021 }
23022
23023 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
23024 {
23025 clipped = clipped_;
23026 return *this;
23027 }
23028
23029 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
23030 {
23031 oldSwapchain = oldSwapchain_;
23032 return *this;
23033 }
23034
23035 operator const VkSwapchainCreateInfoKHR&() const
23036 {
23037 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
23038 }
23039
23040 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
23041 {
23042 return ( sType == rhs.sType )
23043 && ( pNext == rhs.pNext )
23044 && ( flags == rhs.flags )
23045 && ( surface == rhs.surface )
23046 && ( minImageCount == rhs.minImageCount )
23047 && ( imageFormat == rhs.imageFormat )
23048 && ( imageColorSpace == rhs.imageColorSpace )
23049 && ( imageExtent == rhs.imageExtent )
23050 && ( imageArrayLayers == rhs.imageArrayLayers )
23051 && ( imageUsage == rhs.imageUsage )
23052 && ( imageSharingMode == rhs.imageSharingMode )
23053 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
23054 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
23055 && ( preTransform == rhs.preTransform )
23056 && ( compositeAlpha == rhs.compositeAlpha )
23057 && ( presentMode == rhs.presentMode )
23058 && ( clipped == rhs.clipped )
23059 && ( oldSwapchain == rhs.oldSwapchain );
23060 }
23061
23062 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
23063 {
23064 return !operator==( rhs );
23065 }
23066
23067 private:
23068 StructureType sType;
23069
23070 public:
23071 const void* pNext;
23072 SwapchainCreateFlagsKHR flags;
23073 SurfaceKHR surface;
23074 uint32_t minImageCount;
23075 Format imageFormat;
23076 ColorSpaceKHR imageColorSpace;
23077 Extent2D imageExtent;
23078 uint32_t imageArrayLayers;
23079 ImageUsageFlags imageUsage;
23080 SharingMode imageSharingMode;
23081 uint32_t queueFamilyIndexCount;
23082 const uint32_t* pQueueFamilyIndices;
23083 SurfaceTransformFlagBitsKHR preTransform;
23084 CompositeAlphaFlagBitsKHR compositeAlpha;
23085 PresentModeKHR presentMode;
23086 Bool32 clipped;
23087 SwapchainKHR oldSwapchain;
23088 };
23089 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
23090
23091 enum class ViewportCoordinateSwizzleNV
23092 {
23093 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
23094 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
23095 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
23096 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
23097 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
23098 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
23099 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
23100 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
23101 };
23102
23103 struct ViewportSwizzleNV
23104 {
23105 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
23106 : x( x_ )
23107 , y( y_ )
23108 , z( z_ )
23109 , w( w_ )
23110 {
23111 }
23112
23113 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
23114 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023115 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023116 }
23117
23118 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
23119 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023120 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023121 return *this;
23122 }
Mark Young0f183a82017-02-28 09:58:04 -070023123 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
23124 {
23125 x = x_;
23126 return *this;
23127 }
23128
23129 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
23130 {
23131 y = y_;
23132 return *this;
23133 }
23134
23135 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
23136 {
23137 z = z_;
23138 return *this;
23139 }
23140
23141 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
23142 {
23143 w = w_;
23144 return *this;
23145 }
23146
23147 operator const VkViewportSwizzleNV&() const
23148 {
23149 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
23150 }
23151
23152 bool operator==( ViewportSwizzleNV const& rhs ) const
23153 {
23154 return ( x == rhs.x )
23155 && ( y == rhs.y )
23156 && ( z == rhs.z )
23157 && ( w == rhs.w );
23158 }
23159
23160 bool operator!=( ViewportSwizzleNV const& rhs ) const
23161 {
23162 return !operator==( rhs );
23163 }
23164
23165 ViewportCoordinateSwizzleNV x;
23166 ViewportCoordinateSwizzleNV y;
23167 ViewportCoordinateSwizzleNV z;
23168 ViewportCoordinateSwizzleNV w;
23169 };
23170 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
23171
23172 struct PipelineViewportSwizzleStateCreateInfoNV
23173 {
23174 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
23175 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
23176 , pNext( nullptr )
23177 , flags( flags_ )
23178 , viewportCount( viewportCount_ )
23179 , pViewportSwizzles( pViewportSwizzles_ )
23180 {
23181 }
23182
23183 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23184 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023185 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023186 }
23187
23188 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023190 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023191 return *this;
23192 }
Mark Young0f183a82017-02-28 09:58:04 -070023193 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
23194 {
23195 pNext = pNext_;
23196 return *this;
23197 }
23198
23199 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
23200 {
23201 flags = flags_;
23202 return *this;
23203 }
23204
23205 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
23206 {
23207 viewportCount = viewportCount_;
23208 return *this;
23209 }
23210
23211 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
23212 {
23213 pViewportSwizzles = pViewportSwizzles_;
23214 return *this;
23215 }
23216
23217 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
23218 {
23219 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
23220 }
23221
23222 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23223 {
23224 return ( sType == rhs.sType )
23225 && ( pNext == rhs.pNext )
23226 && ( flags == rhs.flags )
23227 && ( viewportCount == rhs.viewportCount )
23228 && ( pViewportSwizzles == rhs.pViewportSwizzles );
23229 }
23230
23231 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23232 {
23233 return !operator==( rhs );
23234 }
23235
23236 private:
23237 StructureType sType;
23238
23239 public:
23240 const void* pNext;
23241 PipelineViewportSwizzleStateCreateFlagsNV flags;
23242 uint32_t viewportCount;
23243 const ViewportSwizzleNV* pViewportSwizzles;
23244 };
23245 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
23246
23247 enum class DiscardRectangleModeEXT
23248 {
23249 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
23250 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
23251 };
23252
23253 struct PipelineDiscardRectangleStateCreateInfoEXT
23254 {
23255 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
23256 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
23257 , pNext( nullptr )
23258 , flags( flags_ )
23259 , discardRectangleMode( discardRectangleMode_ )
23260 , discardRectangleCount( discardRectangleCount_ )
23261 , pDiscardRectangles( pDiscardRectangles_ )
23262 {
23263 }
23264
23265 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
23266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023267 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070023268 }
23269
23270 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
23271 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023272 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070023273 return *this;
23274 }
Mark Young0f183a82017-02-28 09:58:04 -070023275 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
23276 {
23277 pNext = pNext_;
23278 return *this;
23279 }
23280
23281 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
23282 {
23283 flags = flags_;
23284 return *this;
23285 }
23286
23287 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
23288 {
23289 discardRectangleMode = discardRectangleMode_;
23290 return *this;
23291 }
23292
23293 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
23294 {
23295 discardRectangleCount = discardRectangleCount_;
23296 return *this;
23297 }
23298
23299 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
23300 {
23301 pDiscardRectangles = pDiscardRectangles_;
23302 return *this;
23303 }
23304
23305 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
23306 {
23307 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
23308 }
23309
23310 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
23311 {
23312 return ( sType == rhs.sType )
23313 && ( pNext == rhs.pNext )
23314 && ( flags == rhs.flags )
23315 && ( discardRectangleMode == rhs.discardRectangleMode )
23316 && ( discardRectangleCount == rhs.discardRectangleCount )
23317 && ( pDiscardRectangles == rhs.pDiscardRectangles );
23318 }
23319
23320 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
23321 {
23322 return !operator==( rhs );
23323 }
23324
23325 private:
23326 StructureType sType;
23327
23328 public:
23329 const void* pNext;
23330 PipelineDiscardRectangleStateCreateFlagsEXT flags;
23331 DiscardRectangleModeEXT discardRectangleMode;
23332 uint32_t discardRectangleCount;
23333 const Rect2D* pDiscardRectangles;
23334 };
23335 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
23336
23337 enum class SubpassDescriptionFlagBits
23338 {
23339 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
23340 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
23341 };
23342
23343 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
23344
23345 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
23346 {
23347 return SubpassDescriptionFlags( bit0 ) | bit1;
23348 }
23349
23350 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
23351 {
23352 return ~( SubpassDescriptionFlags( bits ) );
23353 }
23354
23355 template <> struct FlagTraits<SubpassDescriptionFlagBits>
23356 {
23357 enum
23358 {
23359 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
23360 };
23361 };
23362
23363 struct SubpassDescription
23364 {
23365 SubpassDescription( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(), PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, uint32_t inputAttachmentCount_ = 0, const AttachmentReference* pInputAttachments_ = nullptr, uint32_t colorAttachmentCount_ = 0, const AttachmentReference* pColorAttachments_ = nullptr, const AttachmentReference* pResolveAttachments_ = nullptr, const AttachmentReference* pDepthStencilAttachment_ = nullptr, uint32_t preserveAttachmentCount_ = 0, const uint32_t* pPreserveAttachments_ = nullptr )
23366 : flags( flags_ )
23367 , pipelineBindPoint( pipelineBindPoint_ )
23368 , inputAttachmentCount( inputAttachmentCount_ )
23369 , pInputAttachments( pInputAttachments_ )
23370 , colorAttachmentCount( colorAttachmentCount_ )
23371 , pColorAttachments( pColorAttachments_ )
23372 , pResolveAttachments( pResolveAttachments_ )
23373 , pDepthStencilAttachment( pDepthStencilAttachment_ )
23374 , preserveAttachmentCount( preserveAttachmentCount_ )
23375 , pPreserveAttachments( pPreserveAttachments_ )
23376 {
23377 }
23378
23379 SubpassDescription( VkSubpassDescription const & rhs )
23380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023381 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070023382 }
23383
23384 SubpassDescription& operator=( VkSubpassDescription const & rhs )
23385 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023386 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070023387 return *this;
23388 }
Mark Young0f183a82017-02-28 09:58:04 -070023389 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
23390 {
23391 flags = flags_;
23392 return *this;
23393 }
23394
23395 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
23396 {
23397 pipelineBindPoint = pipelineBindPoint_;
23398 return *this;
23399 }
23400
23401 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
23402 {
23403 inputAttachmentCount = inputAttachmentCount_;
23404 return *this;
23405 }
23406
23407 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
23408 {
23409 pInputAttachments = pInputAttachments_;
23410 return *this;
23411 }
23412
23413 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
23414 {
23415 colorAttachmentCount = colorAttachmentCount_;
23416 return *this;
23417 }
23418
23419 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
23420 {
23421 pColorAttachments = pColorAttachments_;
23422 return *this;
23423 }
23424
23425 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
23426 {
23427 pResolveAttachments = pResolveAttachments_;
23428 return *this;
23429 }
23430
23431 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
23432 {
23433 pDepthStencilAttachment = pDepthStencilAttachment_;
23434 return *this;
23435 }
23436
23437 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
23438 {
23439 preserveAttachmentCount = preserveAttachmentCount_;
23440 return *this;
23441 }
23442
23443 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
23444 {
23445 pPreserveAttachments = pPreserveAttachments_;
23446 return *this;
23447 }
23448
23449 operator const VkSubpassDescription&() const
23450 {
23451 return *reinterpret_cast<const VkSubpassDescription*>(this);
23452 }
23453
23454 bool operator==( SubpassDescription const& rhs ) const
23455 {
23456 return ( flags == rhs.flags )
23457 && ( pipelineBindPoint == rhs.pipelineBindPoint )
23458 && ( inputAttachmentCount == rhs.inputAttachmentCount )
23459 && ( pInputAttachments == rhs.pInputAttachments )
23460 && ( colorAttachmentCount == rhs.colorAttachmentCount )
23461 && ( pColorAttachments == rhs.pColorAttachments )
23462 && ( pResolveAttachments == rhs.pResolveAttachments )
23463 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
23464 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
23465 && ( pPreserveAttachments == rhs.pPreserveAttachments );
23466 }
23467
23468 bool operator!=( SubpassDescription const& rhs ) const
23469 {
23470 return !operator==( rhs );
23471 }
23472
23473 SubpassDescriptionFlags flags;
23474 PipelineBindPoint pipelineBindPoint;
23475 uint32_t inputAttachmentCount;
23476 const AttachmentReference* pInputAttachments;
23477 uint32_t colorAttachmentCount;
23478 const AttachmentReference* pColorAttachments;
23479 const AttachmentReference* pResolveAttachments;
23480 const AttachmentReference* pDepthStencilAttachment;
23481 uint32_t preserveAttachmentCount;
23482 const uint32_t* pPreserveAttachments;
23483 };
23484 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
23485
23486 struct RenderPassCreateInfo
23487 {
23488 RenderPassCreateInfo( RenderPassCreateFlags flags_ = RenderPassCreateFlags(), uint32_t attachmentCount_ = 0, const AttachmentDescription* pAttachments_ = nullptr, uint32_t subpassCount_ = 0, const SubpassDescription* pSubpasses_ = nullptr, uint32_t dependencyCount_ = 0, const SubpassDependency* pDependencies_ = nullptr )
23489 : sType( StructureType::eRenderPassCreateInfo )
23490 , pNext( nullptr )
23491 , flags( flags_ )
23492 , attachmentCount( attachmentCount_ )
23493 , pAttachments( pAttachments_ )
23494 , subpassCount( subpassCount_ )
23495 , pSubpasses( pSubpasses_ )
23496 , dependencyCount( dependencyCount_ )
23497 , pDependencies( pDependencies_ )
23498 {
23499 }
23500
23501 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
23502 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023503 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070023504 }
23505
23506 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
23507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023508 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070023509 return *this;
23510 }
Mark Young0f183a82017-02-28 09:58:04 -070023511 RenderPassCreateInfo& setPNext( const void* pNext_ )
23512 {
23513 pNext = pNext_;
23514 return *this;
23515 }
23516
23517 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
23518 {
23519 flags = flags_;
23520 return *this;
23521 }
23522
23523 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
23524 {
23525 attachmentCount = attachmentCount_;
23526 return *this;
23527 }
23528
23529 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
23530 {
23531 pAttachments = pAttachments_;
23532 return *this;
23533 }
23534
23535 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
23536 {
23537 subpassCount = subpassCount_;
23538 return *this;
23539 }
23540
23541 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
23542 {
23543 pSubpasses = pSubpasses_;
23544 return *this;
23545 }
23546
23547 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
23548 {
23549 dependencyCount = dependencyCount_;
23550 return *this;
23551 }
23552
23553 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
23554 {
23555 pDependencies = pDependencies_;
23556 return *this;
23557 }
23558
23559 operator const VkRenderPassCreateInfo&() const
23560 {
23561 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
23562 }
23563
23564 bool operator==( RenderPassCreateInfo const& rhs ) const
23565 {
23566 return ( sType == rhs.sType )
23567 && ( pNext == rhs.pNext )
23568 && ( flags == rhs.flags )
23569 && ( attachmentCount == rhs.attachmentCount )
23570 && ( pAttachments == rhs.pAttachments )
23571 && ( subpassCount == rhs.subpassCount )
23572 && ( pSubpasses == rhs.pSubpasses )
23573 && ( dependencyCount == rhs.dependencyCount )
23574 && ( pDependencies == rhs.pDependencies );
23575 }
23576
23577 bool operator!=( RenderPassCreateInfo const& rhs ) const
23578 {
23579 return !operator==( rhs );
23580 }
23581
23582 private:
23583 StructureType sType;
23584
23585 public:
23586 const void* pNext;
23587 RenderPassCreateFlags flags;
23588 uint32_t attachmentCount;
23589 const AttachmentDescription* pAttachments;
23590 uint32_t subpassCount;
23591 const SubpassDescription* pSubpasses;
23592 uint32_t dependencyCount;
23593 const SubpassDependency* pDependencies;
23594 };
23595 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
23596
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060023597 enum class SamplerReductionModeEXT
23598 {
23599 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
23600 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
23601 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
23602 };
23603
23604 struct SamplerReductionModeCreateInfoEXT
23605 {
23606 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
23607 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
23608 , pNext( nullptr )
23609 , reductionMode( reductionMode_ )
23610 {
23611 }
23612
23613 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
23614 {
23615 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
23616 }
23617
23618 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
23619 {
23620 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
23621 return *this;
23622 }
23623 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
23624 {
23625 pNext = pNext_;
23626 return *this;
23627 }
23628
23629 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
23630 {
23631 reductionMode = reductionMode_;
23632 return *this;
23633 }
23634
23635 operator const VkSamplerReductionModeCreateInfoEXT&() const
23636 {
23637 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
23638 }
23639
23640 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
23641 {
23642 return ( sType == rhs.sType )
23643 && ( pNext == rhs.pNext )
23644 && ( reductionMode == rhs.reductionMode );
23645 }
23646
23647 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
23648 {
23649 return !operator==( rhs );
23650 }
23651
23652 private:
23653 StructureType sType;
23654
23655 public:
23656 const void* pNext;
23657 SamplerReductionModeEXT reductionMode;
23658 };
23659 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
23660
23661 enum class BlendOverlapEXT
23662 {
23663 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
23664 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
23665 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
23666 };
23667
23668 struct PipelineColorBlendAdvancedStateCreateInfoEXT
23669 {
23670 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
23671 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
23672 , pNext( nullptr )
23673 , srcPremultiplied( srcPremultiplied_ )
23674 , dstPremultiplied( dstPremultiplied_ )
23675 , blendOverlap( blendOverlap_ )
23676 {
23677 }
23678
23679 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
23680 {
23681 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
23682 }
23683
23684 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
23685 {
23686 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
23687 return *this;
23688 }
23689 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
23690 {
23691 pNext = pNext_;
23692 return *this;
23693 }
23694
23695 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
23696 {
23697 srcPremultiplied = srcPremultiplied_;
23698 return *this;
23699 }
23700
23701 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
23702 {
23703 dstPremultiplied = dstPremultiplied_;
23704 return *this;
23705 }
23706
23707 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
23708 {
23709 blendOverlap = blendOverlap_;
23710 return *this;
23711 }
23712
23713 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
23714 {
23715 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
23716 }
23717
23718 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
23719 {
23720 return ( sType == rhs.sType )
23721 && ( pNext == rhs.pNext )
23722 && ( srcPremultiplied == rhs.srcPremultiplied )
23723 && ( dstPremultiplied == rhs.dstPremultiplied )
23724 && ( blendOverlap == rhs.blendOverlap );
23725 }
23726
23727 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
23728 {
23729 return !operator==( rhs );
23730 }
23731
23732 private:
23733 StructureType sType;
23734
23735 public:
23736 const void* pNext;
23737 Bool32 srcPremultiplied;
23738 Bool32 dstPremultiplied;
23739 BlendOverlapEXT blendOverlap;
23740 };
23741 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
23742
23743 enum class CoverageModulationModeNV
23744 {
23745 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
23746 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
23747 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
23748 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
23749 };
23750
23751 struct PipelineCoverageModulationStateCreateInfoNV
23752 {
23753 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
23754 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
23755 , pNext( nullptr )
23756 , flags( flags_ )
23757 , coverageModulationMode( coverageModulationMode_ )
23758 , coverageModulationTableEnable( coverageModulationTableEnable_ )
23759 , coverageModulationTableCount( coverageModulationTableCount_ )
23760 , pCoverageModulationTable( pCoverageModulationTable_ )
23761 {
23762 }
23763
23764 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
23765 {
23766 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
23767 }
23768
23769 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
23770 {
23771 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
23772 return *this;
23773 }
23774 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
23775 {
23776 pNext = pNext_;
23777 return *this;
23778 }
23779
23780 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
23781 {
23782 flags = flags_;
23783 return *this;
23784 }
23785
23786 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
23787 {
23788 coverageModulationMode = coverageModulationMode_;
23789 return *this;
23790 }
23791
23792 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
23793 {
23794 coverageModulationTableEnable = coverageModulationTableEnable_;
23795 return *this;
23796 }
23797
23798 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
23799 {
23800 coverageModulationTableCount = coverageModulationTableCount_;
23801 return *this;
23802 }
23803
23804 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
23805 {
23806 pCoverageModulationTable = pCoverageModulationTable_;
23807 return *this;
23808 }
23809
23810 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
23811 {
23812 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
23813 }
23814
23815 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
23816 {
23817 return ( sType == rhs.sType )
23818 && ( pNext == rhs.pNext )
23819 && ( flags == rhs.flags )
23820 && ( coverageModulationMode == rhs.coverageModulationMode )
23821 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
23822 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
23823 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
23824 }
23825
23826 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
23827 {
23828 return !operator==( rhs );
23829 }
23830
23831 private:
23832 StructureType sType;
23833
23834 public:
23835 const void* pNext;
23836 PipelineCoverageModulationStateCreateFlagsNV flags;
23837 CoverageModulationModeNV coverageModulationMode;
23838 Bool32 coverageModulationTableEnable;
23839 uint32_t coverageModulationTableCount;
23840 const float* pCoverageModulationTable;
23841 };
23842 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
23843
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023844 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023845#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023846 template <typename Allocator = std::allocator<LayerProperties>>
23847 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23849
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023850 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
23851 {
23852 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
23853 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023854#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023855 template <typename Allocator>
23856 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023857 {
23858 std::vector<LayerProperties,Allocator> properties;
23859 uint32_t propertyCount;
23860 Result result;
23861 do
23862 {
23863 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
23864 if ( ( result == Result::eSuccess ) && propertyCount )
23865 {
23866 properties.resize( propertyCount );
23867 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
23868 }
23869 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023870 assert( propertyCount <= properties.size() );
23871 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023872 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
23873 }
23874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23875
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023876
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023877 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023879 template <typename Allocator = std::allocator<ExtensionProperties>>
23880 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023881#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23882
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023883 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
23884 {
23885 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
23886 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023887#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023888 template <typename Allocator>
23889 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023890 {
23891 std::vector<ExtensionProperties,Allocator> properties;
23892 uint32_t propertyCount;
23893 Result result;
23894 do
23895 {
23896 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
23897 if ( ( result == Result::eSuccess ) && propertyCount )
23898 {
23899 properties.resize( propertyCount );
23900 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
23901 }
23902 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023903 assert( propertyCount <= properties.size() );
23904 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023905 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
23906 }
23907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23908
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023909
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023910 // forward declarations
23911 struct CmdProcessCommandsInfoNVX;
23912
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023913 class CommandBuffer
23914 {
23915 public:
23916 CommandBuffer()
23917 : m_commandBuffer(VK_NULL_HANDLE)
23918 {}
23919
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023920 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023921 : m_commandBuffer(VK_NULL_HANDLE)
23922 {}
23923
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023924 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
23925 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023926 {}
23927
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023928#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023929 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023930 {
23931 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023932 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023933 }
23934#endif
23935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023936 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023937 {
23938 m_commandBuffer = VK_NULL_HANDLE;
23939 return *this;
23940 }
23941
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023942 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023943 {
23944 return m_commandBuffer == rhs.m_commandBuffer;
23945 }
23946
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023947 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023948 {
23949 return m_commandBuffer != rhs.m_commandBuffer;
23950 }
23951
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023952 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023953 {
23954 return m_commandBuffer < rhs.m_commandBuffer;
23955 }
23956
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023957 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023958#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023959 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23961
23962#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023963 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023964#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023965 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23967
23968#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023969 Result reset( CommandBufferResetFlags flags ) const;
23970#else
23971 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023974 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023975
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023976 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023978 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23980
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023981 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023982#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023983 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23985
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023986 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023987
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023988 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
23989
23990 void setBlendConstants( const float blendConstants[4] ) const;
23991
23992 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
23993
23994 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
23995
23996 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
23997
23998 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
23999
24000 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024002 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024005 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024006
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024007 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024008#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024009 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24011
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024012 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024013
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024014 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
24015
24016 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24017
24018 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24019
Mark Young0f183a82017-02-28 09:58:04 -070024020 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024021
24022 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
24023
24024 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024026 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24028
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024029 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024031 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24033
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024034 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024036 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24038
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024039 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024041 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24043
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024044 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024046 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24048
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024049 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24051 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024052 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24054
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024055 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024056
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024057 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024059 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24061
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024062 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024063#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024064 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024065#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24066
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024067 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024069 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24071
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024072 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024074 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24076
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024077 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024078
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024079 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
24080
24081 void waitEvents( uint32_t eventCount, const Event* pEvents, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024083 void waitEvents( ArrayProxy<const Event> events, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24085
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024086 void pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024088 void pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24090
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024091 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024092
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024093 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024094
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024095 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024097 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024098
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024099 void copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024101 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24103 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024104 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024107 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024109 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24111
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024112 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024114 void endRenderPass() const;
24115
24116 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024117#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024118 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024119#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24120
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024121 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024123 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24125
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024126 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024127
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024128 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024130 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24132
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024133 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024134
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024135 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
24136
24137 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024139 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24141
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024142 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024144 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24146
Mark Young0f183a82017-02-28 09:58:04 -070024147 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
24148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24149 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
24150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24151
24152 void setDeviceMaskKHX( uint32_t deviceMask ) const;
24153
24154 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
24155
24156 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
24157
24158 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
24159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24160 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
24161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24162
24163 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
24164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24165 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
24166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24167
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024168
24169
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024170 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024171 {
24172 return m_commandBuffer;
24173 }
24174
24175 explicit operator bool() const
24176 {
24177 return m_commandBuffer != VK_NULL_HANDLE;
24178 }
24179
24180 bool operator!() const
24181 {
24182 return m_commandBuffer == VK_NULL_HANDLE;
24183 }
24184
24185 private:
24186 VkCommandBuffer m_commandBuffer;
24187 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024188
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024189 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
24190
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024191 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
24192 {
24193 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
24194 }
24195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24196 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
24197 {
24198 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
24199 return createResultValue( result, "vk::CommandBuffer::begin" );
24200 }
24201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24202
24203#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24204 VULKAN_HPP_INLINE Result CommandBuffer::end() const
24205 {
24206 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24207 }
24208#else
24209 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
24210 {
24211 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24212 return createResultValue( result, "vk::CommandBuffer::end" );
24213 }
24214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24215
24216#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24217 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
24218 {
24219 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24220 }
24221#else
24222 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
24223 {
24224 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24225 return createResultValue( result, "vk::CommandBuffer::reset" );
24226 }
24227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24228
24229 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
24230 {
24231 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
24232 }
24233
24234 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
24235 {
24236 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
24237 }
24238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24239 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
24240 {
24241 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
24242 }
24243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24244
24245 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
24246 {
24247 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
24248 }
24249#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24250 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
24251 {
24252 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
24253 }
24254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24255
24256 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
24257 {
24258 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
24259 }
24260
24261 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
24262 {
24263 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
24264 }
24265
24266 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
24267 {
24268 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
24269 }
24270
24271 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
24272 {
24273 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
24274 }
24275
24276 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
24277 {
24278 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
24279 }
24280
24281 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
24282 {
24283 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
24284 }
24285
24286 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
24287 {
24288 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
24289 }
24290
24291 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const
24292 {
24293 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
24294 }
24295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24296 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
24297 {
24298 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
24299 }
24300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24301
24302 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
24303 {
24304 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
24305 }
24306
24307 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
24308 {
24309 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
24310 }
24311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24312 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
24313 {
24314#ifdef VULKAN_HPP_NO_EXCEPTIONS
24315 assert( buffers.size() == offsets.size() );
24316#else
24317 if ( buffers.size() != offsets.size() )
24318 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024319 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024320 }
24321#endif // VULKAN_HPP_NO_EXCEPTIONS
24322 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
24323 }
24324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24325
24326 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
24327 {
24328 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
24329 }
24330
24331 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
24332 {
24333 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
24334 }
24335
24336 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
24337 {
24338 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
24339 }
24340
24341 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
24342 {
24343 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
24344 }
24345
Mark Young0f183a82017-02-28 09:58:04 -070024346 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024347 {
Mark Young0f183a82017-02-28 09:58:04 -070024348 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024349 }
24350
24351 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
24352 {
24353 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
24354 }
24355
24356 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
24357 {
24358 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
24359 }
24360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24361 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
24362 {
24363 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
24364 }
24365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24366
24367 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
24368 {
24369 vkCmdCopyImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageCopy*>( pRegions ) );
24370 }
24371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24372 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
24373 {
24374 vkCmdCopyImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageCopy*>( regions.data() ) );
24375 }
24376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24377
24378 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
24379 {
24380 vkCmdBlitImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageBlit*>( pRegions ), static_cast<VkFilter>( filter ) );
24381 }
24382#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24383 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
24384 {
24385 vkCmdBlitImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageBlit*>( regions.data() ), static_cast<VkFilter>( filter ) );
24386 }
24387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24388
24389 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
24390 {
24391 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
24392 }
24393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24394 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
24395 {
24396 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
24397 }
24398#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24399
24400 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
24401 {
24402 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
24403 }
24404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24405 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
24406 {
24407 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
24408 }
24409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24410
24411 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
24412 {
24413 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
24414 }
24415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24416 template <typename T>
24417 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
24418 {
24419 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
24420 }
24421#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24422
24423 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
24424 {
24425 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
24426 }
24427
24428 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
24429 {
24430 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
24431 }
24432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24433 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
24434 {
24435 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
24436 }
24437#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24438
24439 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
24440 {
24441 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
24442 }
24443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24444 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
24445 {
24446 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
24447 }
24448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24449
24450 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
24451 {
24452 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
24453 }
24454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24455 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
24456 {
24457 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
24458 }
24459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24460
24461 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
24462 {
24463 vkCmdResolveImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageResolve*>( pRegions ) );
24464 }
24465#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24466 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
24467 {
24468 vkCmdResolveImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageResolve*>( regions.data() ) );
24469 }
24470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24471
24472 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
24473 {
24474 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
24475 }
24476
24477 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
24478 {
24479 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
24480 }
24481
24482 VULKAN_HPP_INLINE void CommandBuffer::waitEvents( uint32_t eventCount, const Event* pEvents, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const
24483 {
24484 vkCmdWaitEvents( m_commandBuffer, eventCount, reinterpret_cast<const VkEvent*>( pEvents ), static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), memoryBarrierCount, reinterpret_cast<const VkMemoryBarrier*>( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast<const VkBufferMemoryBarrier*>( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast<const VkImageMemoryBarrier*>( pImageMemoryBarriers ) );
24485 }
24486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24487 VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy<const Event> events, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const
24488 {
24489 vkCmdWaitEvents( m_commandBuffer, events.size() , reinterpret_cast<const VkEvent*>( events.data() ), static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), memoryBarriers.size() , reinterpret_cast<const VkMemoryBarrier*>( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast<const VkBufferMemoryBarrier*>( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast<const VkImageMemoryBarrier*>( imageMemoryBarriers.data() ) );
24490 }
24491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24492
24493 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const
24494 {
24495 vkCmdPipelineBarrier( m_commandBuffer, static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), static_cast<VkDependencyFlags>( dependencyFlags ), memoryBarrierCount, reinterpret_cast<const VkMemoryBarrier*>( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast<const VkBufferMemoryBarrier*>( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast<const VkImageMemoryBarrier*>( pImageMemoryBarriers ) );
24496 }
24497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24498 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const
24499 {
24500 vkCmdPipelineBarrier( m_commandBuffer, static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), static_cast<VkDependencyFlags>( dependencyFlags ), memoryBarriers.size() , reinterpret_cast<const VkMemoryBarrier*>( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast<const VkBufferMemoryBarrier*>( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast<const VkImageMemoryBarrier*>( imageMemoryBarriers.data() ) );
24501 }
24502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24503
24504 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
24505 {
24506 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
24507 }
24508
24509 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
24510 {
24511 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
24512 }
24513
24514 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
24515 {
24516 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
24517 }
24518
24519 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
24520 {
24521 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
24522 }
24523
24524 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
24525 {
24526 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
24527 }
24528
24529 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
24530 {
24531 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
24532 }
24533#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24534 template <typename T>
24535 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
24536 {
24537 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
24538 }
24539#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24540
24541 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
24542 {
24543 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
24544 }
24545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24546 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
24547 {
24548 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
24549 }
24550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24551
24552 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
24553 {
24554 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
24555 }
24556
24557 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
24558 {
24559 vkCmdEndRenderPass( m_commandBuffer );
24560 }
24561
24562 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
24563 {
24564 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
24565 }
24566#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24567 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
24568 {
24569 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
24570 }
24571#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24572
24573 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
24574 {
24575 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
24576 }
24577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24578 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
24579 {
24580 DebugMarkerMarkerInfoEXT markerInfo;
24581 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
24582 return markerInfo;
24583 }
24584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24585
24586 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
24587 {
24588 vkCmdDebugMarkerEndEXT( m_commandBuffer );
24589 }
24590
24591 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
24592 {
24593 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
24594 }
24595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24596 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
24597 {
24598 DebugMarkerMarkerInfoEXT markerInfo;
24599 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
24600 return markerInfo;
24601 }
24602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24603
24604 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
24605 {
24606 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
24607 }
24608
24609 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
24610 {
24611 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
24612 }
24613
24614 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
24615 {
24616 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
24617 }
24618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24619 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
24620 {
24621 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
24622 }
24623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24624
24625 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
24626 {
24627 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
24628 }
24629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24630 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
24631 {
24632 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
24633 }
24634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070024635
24636 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
24637 {
24638 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
24639 }
24640#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24641 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
24642 {
24643 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
24644 }
24645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24646
24647 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
24648 {
24649 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
24650 }
24651
24652 VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
24653 {
24654 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
24655 }
24656
24657 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
24658 {
24659 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
24660 }
24661
24662 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
24663 {
24664 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
24665 }
24666#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24667 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
24668 {
24669 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
24670 }
24671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24672
24673 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
24674 {
24675 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
24676 }
24677#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24678 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
24679 {
24680 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
24681 }
24682#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024683
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024684 struct SubmitInfo
24685 {
24686 SubmitInfo( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, const PipelineStageFlags* pWaitDstStageMask_ = nullptr, uint32_t commandBufferCount_ = 0, const CommandBuffer* pCommandBuffers_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const Semaphore* pSignalSemaphores_ = nullptr )
24687 : sType( StructureType::eSubmitInfo )
24688 , pNext( nullptr )
24689 , waitSemaphoreCount( waitSemaphoreCount_ )
24690 , pWaitSemaphores( pWaitSemaphores_ )
24691 , pWaitDstStageMask( pWaitDstStageMask_ )
24692 , commandBufferCount( commandBufferCount_ )
24693 , pCommandBuffers( pCommandBuffers_ )
24694 , signalSemaphoreCount( signalSemaphoreCount_ )
24695 , pSignalSemaphores( pSignalSemaphores_ )
24696 {
24697 }
24698
24699 SubmitInfo( VkSubmitInfo const & rhs )
24700 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024701 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024702 }
24703
24704 SubmitInfo& operator=( VkSubmitInfo const & rhs )
24705 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024706 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024707 return *this;
24708 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024709 SubmitInfo& setPNext( const void* pNext_ )
24710 {
24711 pNext = pNext_;
24712 return *this;
24713 }
24714
24715 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
24716 {
24717 waitSemaphoreCount = waitSemaphoreCount_;
24718 return *this;
24719 }
24720
24721 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
24722 {
24723 pWaitSemaphores = pWaitSemaphores_;
24724 return *this;
24725 }
24726
24727 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
24728 {
24729 pWaitDstStageMask = pWaitDstStageMask_;
24730 return *this;
24731 }
24732
24733 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
24734 {
24735 commandBufferCount = commandBufferCount_;
24736 return *this;
24737 }
24738
24739 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
24740 {
24741 pCommandBuffers = pCommandBuffers_;
24742 return *this;
24743 }
24744
24745 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
24746 {
24747 signalSemaphoreCount = signalSemaphoreCount_;
24748 return *this;
24749 }
24750
24751 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
24752 {
24753 pSignalSemaphores = pSignalSemaphores_;
24754 return *this;
24755 }
24756
24757 operator const VkSubmitInfo&() const
24758 {
24759 return *reinterpret_cast<const VkSubmitInfo*>(this);
24760 }
24761
24762 bool operator==( SubmitInfo const& rhs ) const
24763 {
24764 return ( sType == rhs.sType )
24765 && ( pNext == rhs.pNext )
24766 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
24767 && ( pWaitSemaphores == rhs.pWaitSemaphores )
24768 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
24769 && ( commandBufferCount == rhs.commandBufferCount )
24770 && ( pCommandBuffers == rhs.pCommandBuffers )
24771 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
24772 && ( pSignalSemaphores == rhs.pSignalSemaphores );
24773 }
24774
24775 bool operator!=( SubmitInfo const& rhs ) const
24776 {
24777 return !operator==( rhs );
24778 }
24779
24780 private:
24781 StructureType sType;
24782
24783 public:
24784 const void* pNext;
24785 uint32_t waitSemaphoreCount;
24786 const Semaphore* pWaitSemaphores;
24787 const PipelineStageFlags* pWaitDstStageMask;
24788 uint32_t commandBufferCount;
24789 const CommandBuffer* pCommandBuffers;
24790 uint32_t signalSemaphoreCount;
24791 const Semaphore* pSignalSemaphores;
24792 };
24793 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
24794
24795 class Queue
24796 {
24797 public:
24798 Queue()
24799 : m_queue(VK_NULL_HANDLE)
24800 {}
24801
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070024802 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024803 : m_queue(VK_NULL_HANDLE)
24804 {}
24805
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024806 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
24807 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024808 {}
24809
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024810#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024811 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024812 {
24813 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024814 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024815 }
24816#endif
24817
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024818 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024819 {
24820 m_queue = VK_NULL_HANDLE;
24821 return *this;
24822 }
24823
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024824 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024825 {
24826 return m_queue == rhs.m_queue;
24827 }
24828
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024829 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024830 {
24831 return m_queue != rhs.m_queue;
24832 }
24833
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024834 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024835 {
24836 return m_queue < rhs.m_queue;
24837 }
24838
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024839 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024841 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024842#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24843
24844#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024845 Result waitIdle() const;
24846#else
24847 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24849
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024850 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024852 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24854
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024855 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024857 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24859
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024860
24861
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024862 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024863 {
24864 return m_queue;
24865 }
24866
24867 explicit operator bool() const
24868 {
24869 return m_queue != VK_NULL_HANDLE;
24870 }
24871
24872 bool operator!() const
24873 {
24874 return m_queue == VK_NULL_HANDLE;
24875 }
24876
24877 private:
24878 VkQueue m_queue;
24879 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024880
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024881 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
24882
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024883 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
24884 {
24885 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
24886 }
24887#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24888 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
24889 {
24890 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
24891 return createResultValue( result, "vk::Queue::submit" );
24892 }
24893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24894
24895#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24896 VULKAN_HPP_INLINE Result Queue::waitIdle() const
24897 {
24898 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
24899 }
24900#else
24901 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
24902 {
24903 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
24904 return createResultValue( result, "vk::Queue::waitIdle" );
24905 }
24906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24907
24908 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
24909 {
24910 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
24911 }
24912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24913 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
24914 {
24915 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
24916 return createResultValue( result, "vk::Queue::bindSparse" );
24917 }
24918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24919
24920 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
24921 {
24922 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
24923 }
24924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24925 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
24926 {
24927 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
24928 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
24929 }
24930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024931
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024932#ifndef VULKAN_HPP_NO_SMART_HANDLE
24933 class BufferDeleter;
24934 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
24935 class BufferViewDeleter;
24936 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
24937 class CommandBufferDeleter;
24938 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
24939 class CommandPoolDeleter;
24940 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
24941 class DescriptorPoolDeleter;
24942 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
24943 class DescriptorSetDeleter;
24944 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
24945 class DescriptorSetLayoutDeleter;
24946 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070024947 class DescriptorUpdateTemplateKHRDeleter;
24948 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024949 class DeviceMemoryDeleter;
24950 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
24951 class EventDeleter;
24952 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
24953 class FenceDeleter;
24954 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
24955 class FramebufferDeleter;
24956 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
24957 class ImageDeleter;
24958 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
24959 class ImageViewDeleter;
24960 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
24961 class IndirectCommandsLayoutNVXDeleter;
24962 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
24963 class ObjectTableNVXDeleter;
24964 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
24965 class PipelineDeleter;
24966 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
24967 class PipelineCacheDeleter;
24968 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
24969 class PipelineLayoutDeleter;
24970 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
24971 class QueryPoolDeleter;
24972 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
24973 class RenderPassDeleter;
24974 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
24975 class SamplerDeleter;
24976 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
24977 class SemaphoreDeleter;
24978 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
24979 class ShaderModuleDeleter;
24980 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
24981 class SwapchainKHRDeleter;
24982 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
24983#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24984
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024985 class Device
24986 {
24987 public:
24988 Device()
24989 : m_device(VK_NULL_HANDLE)
24990 {}
24991
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070024992 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024993 : m_device(VK_NULL_HANDLE)
24994 {}
24995
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024996 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
24997 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024998 {}
24999
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025000#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025001 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025002 {
25003 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025004 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025005 }
25006#endif
25007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025008 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025009 {
25010 m_device = VK_NULL_HANDLE;
25011 return *this;
25012 }
25013
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025014 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025015 {
25016 return m_device == rhs.m_device;
25017 }
25018
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025019 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025020 {
25021 return m_device != rhs.m_device;
25022 }
25023
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025024 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025025 {
25026 return m_device < rhs.m_device;
25027 }
25028
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025029 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025031 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25033
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025034 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025036 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25038
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025039 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025041 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25043
25044#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025045 Result waitIdle() const;
25046#else
25047 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25049
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025050 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025052 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25053#ifndef VULKAN_HPP_NO_SMART_HANDLE
25054 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25055#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025058 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025060 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25062
25063 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
25064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25065 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
25066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25067
25068 void unmapMemory( DeviceMemory memory ) const;
25069
25070 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25072 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25074
25075 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25077 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25079
25080 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
25081#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25082 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
25083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25084
25085 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
25086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25087 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25089
25090#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025091 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25092#else
25093 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025095
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025096 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025098 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25100
25101#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025102 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
25103#else
25104 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025107 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025109 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
25110 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25112
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025113 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025115 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25116#ifndef VULKAN_HPP_NO_SMART_HANDLE
25117 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25118#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025119#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25120
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025121 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025123 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25125
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025126 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025128 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25130
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025131 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025132
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025133 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025135 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
25136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25137
25138 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
25139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25140 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25141#ifndef VULKAN_HPP_NO_SMART_HANDLE
25142 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25143#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25144#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25145
25146 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
25147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25148 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25150
25151 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
25152#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25153 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25154#ifndef VULKAN_HPP_NO_SMART_HANDLE
25155 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25156#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25158
25159 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
25160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25161 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25163
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025164 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025165
25166#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025167 Result setEvent( Event event ) const;
25168#else
25169 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25171
25172#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025173 Result resetEvent( Event event ) const;
25174#else
25175 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25177
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025178 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025180 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25181#ifndef VULKAN_HPP_NO_SMART_HANDLE
25182 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25183#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25185
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025186 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025188 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25190
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025191 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25193 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025194 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25196
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025197 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025198#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025199 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25200#ifndef VULKAN_HPP_NO_SMART_HANDLE
25201 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25202#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025203#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25204
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025205 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025206#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025207 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25209
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025210 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025212 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25213#ifndef VULKAN_HPP_NO_SMART_HANDLE
25214 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25215#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25217
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025218 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025219#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025220 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25222
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025223 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025225 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25226#ifndef VULKAN_HPP_NO_SMART_HANDLE
25227 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25228#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025229#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25230
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025231 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025233 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25235
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025236 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025238 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025239#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25240
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025241 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025243 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25244#ifndef VULKAN_HPP_NO_SMART_HANDLE
25245 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25246#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25248
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025249 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025251 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025252#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25253
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025254 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025256 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25257#ifndef VULKAN_HPP_NO_SMART_HANDLE
25258 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25259#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25261
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025262 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025264 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25266
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025267 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025269 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25270#ifndef VULKAN_HPP_NO_SMART_HANDLE
25271 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25272#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25274
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025275 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025277 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25279
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025280 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025282 template <typename Allocator = std::allocator<uint8_t>>
25283 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25285
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025286 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025288 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25290
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025291 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025292#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025293 template <typename Allocator = std::allocator<Pipeline>>
25294 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25295 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25296#ifndef VULKAN_HPP_NO_SMART_HANDLE
25297 template <typename Allocator = std::allocator<Pipeline>>
25298 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25299 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25300#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25302
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025303 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025305 template <typename Allocator = std::allocator<Pipeline>>
25306 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25307 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25308#ifndef VULKAN_HPP_NO_SMART_HANDLE
25309 template <typename Allocator = std::allocator<Pipeline>>
25310 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25311 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25312#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25314
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025315 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025317 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25319
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025320 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025322 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25323#ifndef VULKAN_HPP_NO_SMART_HANDLE
25324 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25327
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025328 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025330 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25332
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025333 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025335 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25336#ifndef VULKAN_HPP_NO_SMART_HANDLE
25337 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25338#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25340
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025341 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025343 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25345
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025346 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025348 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25349#ifndef VULKAN_HPP_NO_SMART_HANDLE
25350 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25351#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25353
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025354 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025355#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025356 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25358
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025359 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025361 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25362#ifndef VULKAN_HPP_NO_SMART_HANDLE
25363 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25364#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25366
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025367 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025369 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025370#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25371
25372#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025373 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
25374#else
25375 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25377
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025378 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025380 template <typename Allocator = std::allocator<DescriptorSet>>
25381 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
25382#ifndef VULKAN_HPP_NO_SMART_HANDLE
25383 template <typename Allocator = std::allocator<DescriptorSet>>
25384 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
25385#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25387
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025388 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025390 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25392
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025393 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025395 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25397
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025398 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025400 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25401#ifndef VULKAN_HPP_NO_SMART_HANDLE
25402 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25403#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25405
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025406 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025408 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25410
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025411 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025413 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25414#ifndef VULKAN_HPP_NO_SMART_HANDLE
25415 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25416#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25418
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025419 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025421 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25423
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025424 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025426 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25428
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025429 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025431 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25432#ifndef VULKAN_HPP_NO_SMART_HANDLE
25433 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25434#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25436
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025437 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025439 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25441
25442#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025443 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
25444#else
25445 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025446#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25447
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025448 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025449#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025450 template <typename Allocator = std::allocator<CommandBuffer>>
25451 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
25452#ifndef VULKAN_HPP_NO_SMART_HANDLE
25453 template <typename Allocator = std::allocator<CommandBuffer>>
25454 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
25455#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25457
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025458 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025460 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25462
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025463 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025465 template <typename Allocator = std::allocator<SwapchainKHR>>
25466 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25467 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25468#ifndef VULKAN_HPP_NO_SMART_HANDLE
25469 template <typename Allocator = std::allocator<SwapchainKHR>>
25470 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25471 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25472#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25474
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025475 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025477 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25478#ifndef VULKAN_HPP_NO_SMART_HANDLE
25479 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25480#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25482
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025483 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025485 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25487
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025488 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025490 template <typename Allocator = std::allocator<Image>>
25491 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25493
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025494 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025496 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25498
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025499 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025500#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025501 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25503
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025504 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025506 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25508
Lenny Komow6501c122016-08-31 15:03:49 -060025509#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025510 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
25511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25512 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
25513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060025514#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25515
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025516 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060025517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025518 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25519#ifndef VULKAN_HPP_NO_SMART_HANDLE
25520 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25521#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060025522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25523
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025524 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025526 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025527#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25528
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025529 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025531 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25532#ifndef VULKAN_HPP_NO_SMART_HANDLE
25533 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25534#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25536
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025537 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025539 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25541
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025542 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025543#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025544 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025545#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25546
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025547 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025549 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25551
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025552#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025553 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025554#else
25555 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
25556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025557
Mark Youngabc2d6e2017-07-07 07:59:56 -060025558#ifdef VK_USE_PLATFORM_WIN32_KHR
25559 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025561 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025563#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025564
Mark Youngabc2d6e2017-07-07 07:59:56 -060025565#ifdef VK_USE_PLATFORM_WIN32_KHR
25566 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025568 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025570#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025571
Mark Youngabc2d6e2017-07-07 07:59:56 -060025572 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025573#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025574 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25576
Mark Youngabc2d6e2017-07-07 07:59:56 -060025577 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025579 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25581
Mark Youngabc2d6e2017-07-07 07:59:56 -060025582#ifdef VK_USE_PLATFORM_WIN32_KHR
25583 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025585 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025587#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025588
Mark Youngabc2d6e2017-07-07 07:59:56 -060025589#ifdef VK_USE_PLATFORM_WIN32_KHR
25590 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025591#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025592 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060025594#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070025595
Mark Youngabc2d6e2017-07-07 07:59:56 -060025596 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025597#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025598 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025599#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25600
Mark Youngabc2d6e2017-07-07 07:59:56 -060025601 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060025603 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
25604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25605
25606#ifdef VK_USE_PLATFORM_WIN32_KHR
25607 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
25608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25609 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
25610#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25611#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25612
25613#ifdef VK_USE_PLATFORM_WIN32_KHR
25614 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
25615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25616 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
25617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25618#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25619
25620 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
25621#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25622 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
25623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25624
25625 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
25626#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25627 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070025628#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25629
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025630 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025631#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025632 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025633#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25634
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025635 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070025636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025637 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070025638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25639
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025640 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070025641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025642 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070025643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25644
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025645 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070025646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025647 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070025648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25649
Mark Young0f183a82017-02-28 09:58:04 -070025650 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
25651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25652 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
25653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25654
25655 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
25656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25657 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
25658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25659
25660 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
25661#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25662 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
25663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25664
25665 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
25666#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25667 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
25668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25669
25670 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
25671#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25672 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
25673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25674
25675 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
25676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25677 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
25678#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25679
25680 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
25681#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25682 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25683#ifndef VULKAN_HPP_NO_SMART_HANDLE
25684 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25685#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25687
25688 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
25689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25690 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25691#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25692
25693 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
25694
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025695 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
25696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25697 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
25698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25699
Mark Lobodzinski54385432017-05-15 10:27:52 -060025700 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
25701
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025702 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
25703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25704 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
25705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25706
25707 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
25708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25709 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
25710 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
25711#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25712
Mark Youngabc2d6e2017-07-07 07:59:56 -060025713 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
25714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25715 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
25716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25717
25718 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
25719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25720 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
25721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25722
25723 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
25724#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25725 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
25726 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
25727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25728
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025729
25730
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025731 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025732 {
25733 return m_device;
25734 }
25735
25736 explicit operator bool() const
25737 {
25738 return m_device != VK_NULL_HANDLE;
25739 }
25740
25741 bool operator!() const
25742 {
25743 return m_device == VK_NULL_HANDLE;
25744 }
25745
25746 private:
25747 VkDevice m_device;
25748 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025749
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025750 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
25751
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025752#ifndef VULKAN_HPP_NO_SMART_HANDLE
25753 class BufferDeleter
25754 {
25755 public:
25756 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25757 : m_device( device )
25758 , m_allocator( allocator )
25759 {}
25760
25761 void operator()( Buffer buffer )
25762 {
25763 m_device.destroyBuffer( buffer, m_allocator );
25764 }
25765
25766 private:
25767 Device m_device;
25768 Optional<const AllocationCallbacks> m_allocator;
25769 };
25770
25771 class BufferViewDeleter
25772 {
25773 public:
25774 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25775 : m_device( device )
25776 , m_allocator( allocator )
25777 {}
25778
25779 void operator()( BufferView bufferView )
25780 {
25781 m_device.destroyBufferView( bufferView, m_allocator );
25782 }
25783
25784 private:
25785 Device m_device;
25786 Optional<const AllocationCallbacks> m_allocator;
25787 };
25788
25789 class CommandBufferDeleter
25790 {
25791 public:
25792 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
25793 : m_device( device )
25794 , m_commandPool( commandPool )
25795 {}
25796
25797 void operator()( CommandBuffer commandBuffer )
25798 {
25799 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
25800 }
25801
25802 private:
25803 Device m_device;
25804 CommandPool m_commandPool;
25805 };
25806
25807 class CommandPoolDeleter
25808 {
25809 public:
25810 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25811 : m_device( device )
25812 , m_allocator( allocator )
25813 {}
25814
25815 void operator()( CommandPool commandPool )
25816 {
25817 m_device.destroyCommandPool( commandPool, m_allocator );
25818 }
25819
25820 private:
25821 Device m_device;
25822 Optional<const AllocationCallbacks> m_allocator;
25823 };
25824
25825 class DescriptorPoolDeleter
25826 {
25827 public:
25828 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25829 : m_device( device )
25830 , m_allocator( allocator )
25831 {}
25832
25833 void operator()( DescriptorPool descriptorPool )
25834 {
25835 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
25836 }
25837
25838 private:
25839 Device m_device;
25840 Optional<const AllocationCallbacks> m_allocator;
25841 };
25842
25843 class DescriptorSetDeleter
25844 {
25845 public:
25846 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
25847 : m_device( device )
25848 , m_descriptorPool( descriptorPool )
25849 {}
25850
25851 void operator()( DescriptorSet descriptorSet )
25852 {
25853 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
25854 }
25855
25856 private:
25857 Device m_device;
25858 DescriptorPool m_descriptorPool;
25859 };
25860
25861 class DescriptorSetLayoutDeleter
25862 {
25863 public:
25864 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25865 : m_device( device )
25866 , m_allocator( allocator )
25867 {}
25868
25869 void operator()( DescriptorSetLayout descriptorSetLayout )
25870 {
25871 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
25872 }
25873
25874 private:
25875 Device m_device;
25876 Optional<const AllocationCallbacks> m_allocator;
25877 };
25878
Mark Young0f183a82017-02-28 09:58:04 -070025879 class DescriptorUpdateTemplateKHRDeleter
25880 {
25881 public:
25882 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25883 : m_device( device )
25884 , m_allocator( allocator )
25885 {}
25886
25887 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
25888 {
25889 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
25890 }
25891
25892 private:
25893 Device m_device;
25894 Optional<const AllocationCallbacks> m_allocator;
25895 };
25896
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025897 class DeviceMemoryDeleter
25898 {
25899 public:
25900 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25901 : m_device( device )
25902 , m_allocator( allocator )
25903 {}
25904
25905 void operator()( DeviceMemory deviceMemory )
25906 {
25907 m_device.freeMemory( deviceMemory, m_allocator );
25908 }
25909
25910 private:
25911 Device m_device;
25912 Optional<const AllocationCallbacks> m_allocator;
25913 };
25914
25915 class EventDeleter
25916 {
25917 public:
25918 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25919 : m_device( device )
25920 , m_allocator( allocator )
25921 {}
25922
25923 void operator()( Event event )
25924 {
25925 m_device.destroyEvent( event, m_allocator );
25926 }
25927
25928 private:
25929 Device m_device;
25930 Optional<const AllocationCallbacks> m_allocator;
25931 };
25932
25933 class FenceDeleter
25934 {
25935 public:
25936 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25937 : m_device( device )
25938 , m_allocator( allocator )
25939 {}
25940
25941 void operator()( Fence fence )
25942 {
25943 m_device.destroyFence( fence, m_allocator );
25944 }
25945
25946 private:
25947 Device m_device;
25948 Optional<const AllocationCallbacks> m_allocator;
25949 };
25950
25951 class FramebufferDeleter
25952 {
25953 public:
25954 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25955 : m_device( device )
25956 , m_allocator( allocator )
25957 {}
25958
25959 void operator()( Framebuffer framebuffer )
25960 {
25961 m_device.destroyFramebuffer( framebuffer, m_allocator );
25962 }
25963
25964 private:
25965 Device m_device;
25966 Optional<const AllocationCallbacks> m_allocator;
25967 };
25968
25969 class ImageDeleter
25970 {
25971 public:
25972 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25973 : m_device( device )
25974 , m_allocator( allocator )
25975 {}
25976
25977 void operator()( Image image )
25978 {
25979 m_device.destroyImage( image, m_allocator );
25980 }
25981
25982 private:
25983 Device m_device;
25984 Optional<const AllocationCallbacks> m_allocator;
25985 };
25986
25987 class ImageViewDeleter
25988 {
25989 public:
25990 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
25991 : m_device( device )
25992 , m_allocator( allocator )
25993 {}
25994
25995 void operator()( ImageView imageView )
25996 {
25997 m_device.destroyImageView( imageView, m_allocator );
25998 }
25999
26000 private:
26001 Device m_device;
26002 Optional<const AllocationCallbacks> m_allocator;
26003 };
26004
26005 class IndirectCommandsLayoutNVXDeleter
26006 {
26007 public:
26008 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26009 : m_device( device )
26010 , m_allocator( allocator )
26011 {}
26012
26013 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
26014 {
26015 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
26016 }
26017
26018 private:
26019 Device m_device;
26020 Optional<const AllocationCallbacks> m_allocator;
26021 };
26022
26023 class ObjectTableNVXDeleter
26024 {
26025 public:
26026 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26027 : m_device( device )
26028 , m_allocator( allocator )
26029 {}
26030
26031 void operator()( ObjectTableNVX objectTableNVX )
26032 {
26033 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
26034 }
26035
26036 private:
26037 Device m_device;
26038 Optional<const AllocationCallbacks> m_allocator;
26039 };
26040
26041 class PipelineDeleter
26042 {
26043 public:
26044 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26045 : m_device( device )
26046 , m_allocator( allocator )
26047 {}
26048
26049 void operator()( Pipeline pipeline )
26050 {
26051 m_device.destroyPipeline( pipeline, m_allocator );
26052 }
26053
26054 private:
26055 Device m_device;
26056 Optional<const AllocationCallbacks> m_allocator;
26057 };
26058
26059 class PipelineCacheDeleter
26060 {
26061 public:
26062 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26063 : m_device( device )
26064 , m_allocator( allocator )
26065 {}
26066
26067 void operator()( PipelineCache pipelineCache )
26068 {
26069 m_device.destroyPipelineCache( pipelineCache, m_allocator );
26070 }
26071
26072 private:
26073 Device m_device;
26074 Optional<const AllocationCallbacks> m_allocator;
26075 };
26076
26077 class PipelineLayoutDeleter
26078 {
26079 public:
26080 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26081 : m_device( device )
26082 , m_allocator( allocator )
26083 {}
26084
26085 void operator()( PipelineLayout pipelineLayout )
26086 {
26087 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
26088 }
26089
26090 private:
26091 Device m_device;
26092 Optional<const AllocationCallbacks> m_allocator;
26093 };
26094
26095 class QueryPoolDeleter
26096 {
26097 public:
26098 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26099 : m_device( device )
26100 , m_allocator( allocator )
26101 {}
26102
26103 void operator()( QueryPool queryPool )
26104 {
26105 m_device.destroyQueryPool( queryPool, m_allocator );
26106 }
26107
26108 private:
26109 Device m_device;
26110 Optional<const AllocationCallbacks> m_allocator;
26111 };
26112
26113 class RenderPassDeleter
26114 {
26115 public:
26116 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26117 : m_device( device )
26118 , m_allocator( allocator )
26119 {}
26120
26121 void operator()( RenderPass renderPass )
26122 {
26123 m_device.destroyRenderPass( renderPass, m_allocator );
26124 }
26125
26126 private:
26127 Device m_device;
26128 Optional<const AllocationCallbacks> m_allocator;
26129 };
26130
26131 class SamplerDeleter
26132 {
26133 public:
26134 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26135 : m_device( device )
26136 , m_allocator( allocator )
26137 {}
26138
26139 void operator()( Sampler sampler )
26140 {
26141 m_device.destroySampler( sampler, m_allocator );
26142 }
26143
26144 private:
26145 Device m_device;
26146 Optional<const AllocationCallbacks> m_allocator;
26147 };
26148
26149 class SemaphoreDeleter
26150 {
26151 public:
26152 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26153 : m_device( device )
26154 , m_allocator( allocator )
26155 {}
26156
26157 void operator()( Semaphore semaphore )
26158 {
26159 m_device.destroySemaphore( semaphore, m_allocator );
26160 }
26161
26162 private:
26163 Device m_device;
26164 Optional<const AllocationCallbacks> m_allocator;
26165 };
26166
26167 class ShaderModuleDeleter
26168 {
26169 public:
26170 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26171 : m_device( device )
26172 , m_allocator( allocator )
26173 {}
26174
26175 void operator()( ShaderModule shaderModule )
26176 {
26177 m_device.destroyShaderModule( shaderModule, m_allocator );
26178 }
26179
26180 private:
26181 Device m_device;
26182 Optional<const AllocationCallbacks> m_allocator;
26183 };
26184
26185 class SwapchainKHRDeleter
26186 {
26187 public:
26188 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26189 : m_device( device )
26190 , m_allocator( allocator )
26191 {}
26192
26193 void operator()( SwapchainKHR swapchainKHR )
26194 {
26195 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
26196 }
26197
26198 private:
26199 Device m_device;
26200 Optional<const AllocationCallbacks> m_allocator;
26201 };
26202#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26203
26204 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
26205 {
26206 return vkGetDeviceProcAddr( m_device, pName );
26207 }
26208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26209 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
26210 {
26211 return vkGetDeviceProcAddr( m_device, name.c_str() );
26212 }
26213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26214
26215 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
26216 {
26217 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26218 }
26219#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26220 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
26221 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026222 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026223 }
26224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26225
26226 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
26227 {
26228 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
26229 }
26230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26231 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
26232 {
26233 Queue queue;
26234 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
26235 return queue;
26236 }
26237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26238
26239#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26240 VULKAN_HPP_INLINE Result Device::waitIdle() const
26241 {
26242 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
26243 }
26244#else
26245 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
26246 {
26247 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
26248 return createResultValue( result, "vk::Device::waitIdle" );
26249 }
26250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26251
26252 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
26253 {
26254 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
26255 }
26256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26257 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
26258 {
26259 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026260 Result result = static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( &allocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDeviceMemory*>( &memory ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026261 return createResultValue( result, memory, "vk::Device::allocateMemory" );
26262 }
26263#ifndef VULKAN_HPP_NO_SMART_HANDLE
26264 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
26265 {
26266 DeviceMemoryDeleter deleter( *this, allocator );
26267 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
26268 }
26269#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26271
26272 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
26273 {
26274 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26275 }
26276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26277 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
26278 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026279 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026280 }
26281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26282
26283 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
26284 {
26285 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
26286 }
26287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26288 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
26289 {
26290 void* pData;
26291 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
26292 return createResultValue( result, pData, "vk::Device::mapMemory" );
26293 }
26294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26295
26296 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
26297 {
26298 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
26299 }
26300
26301 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
26302 {
26303 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
26304 }
26305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26306 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
26307 {
26308 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
26309 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
26310 }
26311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26312
26313 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
26314 {
26315 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
26316 }
26317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26318 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
26319 {
26320 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
26321 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
26322 }
26323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26324
26325 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
26326 {
26327 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
26328 }
26329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26330 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
26331 {
26332 DeviceSize committedMemoryInBytes;
26333 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
26334 return committedMemoryInBytes;
26335 }
26336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26337
26338 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
26339 {
26340 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
26341 }
26342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26343 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
26344 {
26345 MemoryRequirements memoryRequirements;
26346 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
26347 return memoryRequirements;
26348 }
26349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26350
26351#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26352 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
26353 {
26354 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26355 }
26356#else
26357 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
26358 {
26359 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26360 return createResultValue( result, "vk::Device::bindBufferMemory" );
26361 }
26362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26363
26364 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
26365 {
26366 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
26367 }
26368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26369 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
26370 {
26371 MemoryRequirements memoryRequirements;
26372 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
26373 return memoryRequirements;
26374 }
26375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26376
26377#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26378 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
26379 {
26380 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26381 }
26382#else
26383 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
26384 {
26385 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
26386 return createResultValue( result, "vk::Device::bindImageMemory" );
26387 }
26388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26389
26390 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
26391 {
26392 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
26393 }
26394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26395 template <typename Allocator>
26396 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
26397 {
26398 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
26399 uint32_t sparseMemoryRequirementCount;
26400 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
26401 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
26402 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
26403 return sparseMemoryRequirements;
26404 }
26405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26406
26407 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
26408 {
26409 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
26410 }
26411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26412 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26413 {
26414 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026415 Result result = static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026416 return createResultValue( result, fence, "vk::Device::createFence" );
26417 }
26418#ifndef VULKAN_HPP_NO_SMART_HANDLE
26419 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26420 {
26421 FenceDeleter deleter( *this, allocator );
26422 return UniqueFence( createFence( createInfo, allocator ), deleter );
26423 }
26424#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26426
26427 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
26428 {
26429 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26430 }
26431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26432 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
26433 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026434 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026435 }
26436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26437
26438 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
26439 {
26440 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
26441 }
26442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26443 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
26444 {
26445 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
26446 return createResultValue( result, "vk::Device::resetFences" );
26447 }
26448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26449
26450#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26451 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
26452 {
26453 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
26454 }
26455#else
26456 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
26457 {
26458 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
26459 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
26460 }
26461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26462
26463 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
26464 {
26465 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
26466 }
26467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26468 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
26469 {
26470 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
26471 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
26472 }
26473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26474
26475 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
26476 {
26477 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
26478 }
26479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26480 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26481 {
26482 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026483 Result result = static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSemaphore*>( &semaphore ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026484 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
26485 }
26486#ifndef VULKAN_HPP_NO_SMART_HANDLE
26487 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26488 {
26489 SemaphoreDeleter deleter( *this, allocator );
26490 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
26491 }
26492#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26494
26495 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
26496 {
26497 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26498 }
26499#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26500 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
26501 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026502 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026503 }
26504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26505
26506 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
26507 {
26508 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
26509 }
26510#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26511 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26512 {
26513 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026514 Result result = static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkEvent*>( &event ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026515 return createResultValue( result, event, "vk::Device::createEvent" );
26516 }
26517#ifndef VULKAN_HPP_NO_SMART_HANDLE
26518 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26519 {
26520 EventDeleter deleter( *this, allocator );
26521 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
26522 }
26523#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26525
26526 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
26527 {
26528 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26529 }
26530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26531 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
26532 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026533 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026534 }
26535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26536
26537#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26538 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
26539 {
26540 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
26541 }
26542#else
26543 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
26544 {
26545 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
26546 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
26547 }
26548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26549
26550#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26551 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
26552 {
26553 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
26554 }
26555#else
26556 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
26557 {
26558 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
26559 return createResultValue( result, "vk::Device::setEvent" );
26560 }
26561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26562
26563#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26564 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
26565 {
26566 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
26567 }
26568#else
26569 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
26570 {
26571 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
26572 return createResultValue( result, "vk::Device::resetEvent" );
26573 }
26574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26575
26576 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
26577 {
26578 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
26579 }
26580#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26581 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26582 {
26583 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026584 Result result = static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkQueryPool*>( &queryPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026585 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
26586 }
26587#ifndef VULKAN_HPP_NO_SMART_HANDLE
26588 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26589 {
26590 QueryPoolDeleter deleter( *this, allocator );
26591 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
26592 }
26593#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26594#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26595
26596 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
26597 {
26598 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26599 }
26600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26601 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
26602 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026603 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026604 }
26605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26606
26607 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
26608 {
26609 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
26610 }
26611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26612 template <typename T>
26613 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
26614 {
26615 Result result = static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ) , reinterpret_cast<void*>( data.data() ), stride, static_cast<VkQueryResultFlags>( flags ) ) );
26616 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
26617 }
26618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26619
26620 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
26621 {
26622 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
26623 }
26624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26625 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26626 {
26627 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026628 Result result = static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBuffer*>( &buffer ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026629 return createResultValue( result, buffer, "vk::Device::createBuffer" );
26630 }
26631#ifndef VULKAN_HPP_NO_SMART_HANDLE
26632 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26633 {
26634 BufferDeleter deleter( *this, allocator );
26635 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
26636 }
26637#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26639
26640 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
26641 {
26642 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26643 }
26644#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26645 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
26646 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026647 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026648 }
26649#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26650
26651 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
26652 {
26653 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
26654 }
26655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26656 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26657 {
26658 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026659 Result result = static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBufferView*>( &view ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026660 return createResultValue( result, view, "vk::Device::createBufferView" );
26661 }
26662#ifndef VULKAN_HPP_NO_SMART_HANDLE
26663 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26664 {
26665 BufferViewDeleter deleter( *this, allocator );
26666 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
26667 }
26668#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26669#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26670
26671 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
26672 {
26673 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26674 }
26675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26676 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
26677 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026678 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026679 }
26680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26681
26682 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
26683 {
26684 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
26685 }
26686#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26687 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26688 {
26689 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026690 Result result = static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImage*>( &image ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026691 return createResultValue( result, image, "vk::Device::createImage" );
26692 }
26693#ifndef VULKAN_HPP_NO_SMART_HANDLE
26694 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26695 {
26696 ImageDeleter deleter( *this, allocator );
26697 return UniqueImage( createImage( createInfo, allocator ), deleter );
26698 }
26699#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26701
26702 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
26703 {
26704 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26705 }
26706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26707 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
26708 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026709 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026710 }
26711#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26712
26713 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
26714 {
26715 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
26716 }
26717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26718 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
26719 {
26720 SubresourceLayout layout;
26721 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
26722 return layout;
26723 }
26724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26725
26726 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
26727 {
26728 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
26729 }
26730#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26731 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26732 {
26733 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026734 Result result = static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImageView*>( &view ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026735 return createResultValue( result, view, "vk::Device::createImageView" );
26736 }
26737#ifndef VULKAN_HPP_NO_SMART_HANDLE
26738 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26739 {
26740 ImageViewDeleter deleter( *this, allocator );
26741 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
26742 }
26743#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26745
26746 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
26747 {
26748 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26749 }
26750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26751 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
26752 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026753 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026754 }
26755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26756
26757 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
26758 {
26759 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
26760 }
26761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26762 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26763 {
26764 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026765 Result result = static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkShaderModule*>( &shaderModule ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026766 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
26767 }
26768#ifndef VULKAN_HPP_NO_SMART_HANDLE
26769 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26770 {
26771 ShaderModuleDeleter deleter( *this, allocator );
26772 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
26773 }
26774#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26776
26777 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
26778 {
26779 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26780 }
26781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26782 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
26783 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026784 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026785 }
26786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26787
26788 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
26789 {
26790 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
26791 }
26792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26793 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26794 {
26795 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026796 Result result = static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineCache*>( &pipelineCache ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026797 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
26798 }
26799#ifndef VULKAN_HPP_NO_SMART_HANDLE
26800 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26801 {
26802 PipelineCacheDeleter deleter( *this, allocator );
26803 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
26804 }
26805#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26807
26808 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
26809 {
26810 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26811 }
26812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26813 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
26814 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026815 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026816 }
26817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26818
26819 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
26820 {
26821 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
26822 }
26823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26824 template <typename Allocator>
26825 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
26826 {
26827 std::vector<uint8_t,Allocator> data;
26828 size_t dataSize;
26829 Result result;
26830 do
26831 {
26832 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
26833 if ( ( result == Result::eSuccess ) && dataSize )
26834 {
26835 data.resize( dataSize );
26836 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
26837 }
26838 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026839 assert( dataSize <= data.size() );
26840 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026841 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
26842 }
26843#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26844
26845 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
26846 {
26847 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
26848 }
26849#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26850 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
26851 {
26852 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
26853 return createResultValue( result, "vk::Device::mergePipelineCaches" );
26854 }
26855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26856
26857 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
26858 {
26859 return static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
26860 }
26861#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26862 template <typename Allocator>
26863 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26864 {
26865 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026866 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026867 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
26868 }
26869 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26870 {
26871 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026872 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026873 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
26874 }
26875#ifndef VULKAN_HPP_NO_SMART_HANDLE
26876 template <typename Allocator>
26877 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26878 {
26879 PipelineDeleter deleter( *this, allocator );
26880 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
26881 std::vector<UniquePipeline> uniquePipelines;
26882 uniquePipelines.reserve( pipelines.size() );
26883 for ( auto pipeline : pipelines )
26884 {
26885 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
26886 }
26887 return uniquePipelines;
26888 }
26889 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26890 {
26891 PipelineDeleter deleter( *this, allocator );
26892 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
26893 }
26894#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26895#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26896
26897 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
26898 {
26899 return static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkComputePipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
26900 }
26901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26902 template <typename Allocator>
26903 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26904 {
26905 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026906 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkComputePipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026907 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
26908 }
26909 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26910 {
26911 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026912 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkComputePipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026913 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
26914 }
26915#ifndef VULKAN_HPP_NO_SMART_HANDLE
26916 template <typename Allocator>
26917 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
26918 {
26919 PipelineDeleter deleter( *this, allocator );
26920 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
26921 std::vector<UniquePipeline> uniquePipelines;
26922 uniquePipelines.reserve( pipelines.size() );
26923 for ( auto pipeline : pipelines )
26924 {
26925 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
26926 }
26927 return uniquePipelines;
26928 }
26929 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26930 {
26931 PipelineDeleter deleter( *this, allocator );
26932 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
26933 }
26934#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26935#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26936
26937 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
26938 {
26939 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26940 }
26941#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26942 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
26943 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026944 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026945 }
26946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26947
26948 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
26949 {
26950 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
26951 }
26952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26953 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26954 {
26955 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026956 Result result = static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineLayout*>( &pipelineLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026957 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
26958 }
26959#ifndef VULKAN_HPP_NO_SMART_HANDLE
26960 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26961 {
26962 PipelineLayoutDeleter deleter( *this, allocator );
26963 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
26964 }
26965#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26967
26968 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
26969 {
26970 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26971 }
26972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26973 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
26974 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026975 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026976 }
26977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26978
26979 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
26980 {
26981 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
26982 }
26983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26984 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26985 {
26986 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026987 Result result = static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSampler*>( &sampler ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026988 return createResultValue( result, sampler, "vk::Device::createSampler" );
26989 }
26990#ifndef VULKAN_HPP_NO_SMART_HANDLE
26991 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26992 {
26993 SamplerDeleter deleter( *this, allocator );
26994 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
26995 }
26996#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26998
26999 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
27000 {
27001 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27002 }
27003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27004 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
27005 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027006 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027007 }
27008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27009
27010 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
27011 {
27012 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
27013 }
27014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27015 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27016 {
27017 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027018 Result result = static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorSetLayout*>( &setLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027019 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
27020 }
27021#ifndef VULKAN_HPP_NO_SMART_HANDLE
27022 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27023 {
27024 DescriptorSetLayoutDeleter deleter( *this, allocator );
27025 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
27026 }
27027#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27029
27030 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
27031 {
27032 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27033 }
27034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27035 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
27036 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027037 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027038 }
27039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27040
27041 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
27042 {
27043 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
27044 }
27045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27046 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27047 {
27048 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027049 Result result = static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorPool*>( &descriptorPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027050 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
27051 }
27052#ifndef VULKAN_HPP_NO_SMART_HANDLE
27053 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27054 {
27055 DescriptorPoolDeleter deleter( *this, allocator );
27056 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
27057 }
27058#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27060
27061 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
27062 {
27063 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27064 }
27065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27066 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
27067 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027068 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027069 }
27070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27071
27072#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27073 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27074 {
27075 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27076 }
27077#else
27078 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27079 {
27080 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27081 return createResultValue( result, "vk::Device::resetDescriptorPool" );
27082 }
27083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27084
27085 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
27086 {
27087 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
27088 }
27089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27090 template <typename Allocator>
27091 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
27092 {
27093 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
27094 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
27095 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
27096 }
27097#ifndef VULKAN_HPP_NO_SMART_HANDLE
27098 template <typename Allocator>
27099 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
27100 {
27101 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
27102 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
27103 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
27104 uniqueDescriptorSets.reserve( descriptorSets.size() );
27105 for ( auto descriptorSet : descriptorSets )
27106 {
27107 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
27108 }
27109 return uniqueDescriptorSets;
27110 }
27111#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27113
27114 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
27115 {
27116 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
27117 }
27118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27119 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
27120 {
27121 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
27122 return createResultValue( result, "vk::Device::freeDescriptorSets" );
27123 }
27124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27125
27126 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
27127 {
27128 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
27129 }
27130#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27131 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
27132 {
27133 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
27134 }
27135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27136
27137 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
27138 {
27139 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
27140 }
27141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27142 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27143 {
27144 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027145 Result result = static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFramebuffer*>( &framebuffer ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027146 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
27147 }
27148#ifndef VULKAN_HPP_NO_SMART_HANDLE
27149 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27150 {
27151 FramebufferDeleter deleter( *this, allocator );
27152 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
27153 }
27154#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27156
27157 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
27158 {
27159 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27160 }
27161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27162 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
27163 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027164 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027165 }
27166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27167
27168 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
27169 {
27170 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
27171 }
27172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27173 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27174 {
27175 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027176 Result result = static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027177 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
27178 }
27179#ifndef VULKAN_HPP_NO_SMART_HANDLE
27180 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27181 {
27182 RenderPassDeleter deleter( *this, allocator );
27183 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
27184 }
27185#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27187
27188 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
27189 {
27190 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27191 }
27192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27193 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
27194 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027195 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027196 }
27197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27198
27199 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
27200 {
27201 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
27202 }
27203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27204 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
27205 {
27206 Extent2D granularity;
27207 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
27208 return granularity;
27209 }
27210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27211
27212 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
27213 {
27214 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
27215 }
27216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27217 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27218 {
27219 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027220 Result result = static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkCommandPool*>( &commandPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027221 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
27222 }
27223#ifndef VULKAN_HPP_NO_SMART_HANDLE
27224 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27225 {
27226 CommandPoolDeleter deleter( *this, allocator );
27227 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
27228 }
27229#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27231
27232 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
27233 {
27234 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27235 }
27236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27237 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
27238 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027239 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027240 }
27241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27242
27243#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27244 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
27245 {
27246 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
27247 }
27248#else
27249 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
27250 {
27251 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
27252 return createResultValue( result, "vk::Device::resetCommandPool" );
27253 }
27254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27255
27256 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
27257 {
27258 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
27259 }
27260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27261 template <typename Allocator>
27262 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
27263 {
27264 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
27265 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
27266 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
27267 }
27268#ifndef VULKAN_HPP_NO_SMART_HANDLE
27269 template <typename Allocator>
27270 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
27271 {
27272 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
27273 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
27274 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
27275 uniqueCommandBuffers.reserve( commandBuffers.size() );
27276 for ( auto commandBuffer : commandBuffers )
27277 {
27278 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
27279 }
27280 return uniqueCommandBuffers;
27281 }
27282#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27284
27285 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
27286 {
27287 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
27288 }
27289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27290 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
27291 {
27292 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
27293 }
27294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27295
27296 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
27297 {
27298 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
27299 }
27300#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27301 template <typename Allocator>
27302 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
27303 {
27304 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027305 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( swapchains.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027306 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
27307 }
27308 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27309 {
27310 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027311 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027312 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
27313 }
27314#ifndef VULKAN_HPP_NO_SMART_HANDLE
27315 template <typename Allocator>
27316 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
27317 {
27318 SwapchainKHRDeleter deleter( *this, allocator );
27319 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
27320 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
27321 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
27322 for ( auto swapchainKHR : swapchainKHRs )
27323 {
27324 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
27325 }
27326 return uniqueSwapchainKHRs;
27327 }
27328 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27329 {
27330 SwapchainKHRDeleter deleter( *this, allocator );
27331 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
27332 }
27333#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27335
27336 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
27337 {
27338 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
27339 }
27340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27341 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27342 {
27343 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027344 Result result = static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027345 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
27346 }
27347#ifndef VULKAN_HPP_NO_SMART_HANDLE
27348 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27349 {
27350 SwapchainKHRDeleter deleter( *this, allocator );
27351 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
27352 }
27353#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27355
27356 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
27357 {
27358 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27359 }
27360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27361 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
27362 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027363 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027364 }
27365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27366
27367 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
27368 {
27369 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
27370 }
27371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27372 template <typename Allocator>
27373 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
27374 {
27375 std::vector<Image,Allocator> swapchainImages;
27376 uint32_t swapchainImageCount;
27377 Result result;
27378 do
27379 {
27380 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
27381 if ( ( result == Result::eSuccess ) && swapchainImageCount )
27382 {
27383 swapchainImages.resize( swapchainImageCount );
27384 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
27385 }
27386 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027387 assert( swapchainImageCount <= swapchainImages.size() );
27388 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027389 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
27390 }
27391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27392
27393 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
27394 {
27395 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
27396 }
27397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27398 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
27399 {
27400 uint32_t imageIndex;
27401 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
27402 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
27403 }
27404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27405
27406 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
27407 {
27408 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
27409 }
27410#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27411 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
27412 {
27413 DebugMarkerObjectNameInfoEXT nameInfo;
27414 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
27415 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
27416 }
27417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27418
27419 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
27420 {
27421 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
27422 }
27423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27424 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
27425 {
27426 DebugMarkerObjectTagInfoEXT tagInfo;
27427 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
27428 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
27429 }
27430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27431
27432#ifdef VK_USE_PLATFORM_WIN32_KHR
27433 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
27434 {
27435 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
27436 }
27437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27438 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
27439 {
27440 HANDLE handle;
27441 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
27442 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
27443 }
27444#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27445#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27446
27447 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
27448 {
27449 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
27450 }
27451#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27452 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27453 {
27454 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027455 Result result = static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( &indirectCommandsLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027456 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
27457 }
27458#ifndef VULKAN_HPP_NO_SMART_HANDLE
27459 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27460 {
27461 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
27462 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
27463 }
27464#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27465#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27466
27467 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
27468 {
27469 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27470 }
27471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27472 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
27473 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027474 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027475 }
27476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27477
27478 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
27479 {
27480 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
27481 }
27482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27483 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27484 {
27485 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027486 Result result = static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkObjectTableNVX*>( &objectTable ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027487 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
27488 }
27489#ifndef VULKAN_HPP_NO_SMART_HANDLE
27490 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
27491 {
27492 ObjectTableNVXDeleter deleter( *this, allocator );
27493 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
27494 }
27495#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27496#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27497
27498 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
27499 {
27500 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27501 }
27502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27503 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
27504 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027505 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027506 }
27507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27508
27509 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
27510 {
27511 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
27512 }
27513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27514 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
27515 {
27516#ifdef VULKAN_HPP_NO_EXCEPTIONS
27517 assert( pObjectTableEntries.size() == objectIndices.size() );
27518#else
27519 if ( pObjectTableEntries.size() != objectIndices.size() )
27520 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027521 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027522 }
27523#endif // VULKAN_HPP_NO_EXCEPTIONS
27524 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
27525 return createResultValue( result, "vk::Device::registerObjectsNVX" );
27526 }
27527#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27528
27529 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
27530 {
27531 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
27532 }
27533#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27534 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
27535 {
27536#ifdef VULKAN_HPP_NO_EXCEPTIONS
27537 assert( objectEntryTypes.size() == objectIndices.size() );
27538#else
27539 if ( objectEntryTypes.size() != objectIndices.size() )
27540 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027541 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027542 }
27543#endif // VULKAN_HPP_NO_EXCEPTIONS
27544 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
27545 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
27546 }
27547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27548
27549 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
27550 {
27551 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
27552 }
27553
Mark Youngabc2d6e2017-07-07 07:59:56 -060027554#ifdef VK_USE_PLATFORM_WIN32_KHR
27555 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027556 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027557 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070027558 }
27559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027560 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027561 {
27562 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027563 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27564 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027565 }
27566#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027567#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027568
Mark Youngabc2d6e2017-07-07 07:59:56 -060027569#ifdef VK_USE_PLATFORM_WIN32_KHR
27570 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070027571 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027572 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027573 }
27574#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027575 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027576 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027577 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
27578 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
27579 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027580 }
27581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027582#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027583
Mark Youngabc2d6e2017-07-07 07:59:56 -060027584 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027585 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027586 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070027587 }
27588#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027589 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027590 {
27591 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027592 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27593 return createResultValue( result, fd, "vk::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027594 }
27595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27596
Mark Youngabc2d6e2017-07-07 07:59:56 -060027597 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070027598 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027599 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027600 }
27601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027602 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027603 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027604 MemoryFdPropertiesKHR memoryFdProperties;
27605 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
27606 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027607 }
27608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27609
Mark Youngabc2d6e2017-07-07 07:59:56 -060027610#ifdef VK_USE_PLATFORM_WIN32_KHR
27611 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070027612 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027613 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070027614 }
27615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027616 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027617 {
27618 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027619 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27620 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027621 }
27622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027623#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027624
Mark Youngabc2d6e2017-07-07 07:59:56 -060027625#ifdef VK_USE_PLATFORM_WIN32_KHR
27626 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027627 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027628 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027629 }
27630#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027631 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027632 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027633 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
27634 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027635 }
27636#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027637#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027638
Mark Youngabc2d6e2017-07-07 07:59:56 -060027639 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070027640 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027641 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070027642 }
27643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027644 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027645 {
27646 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027647 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27648 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027649 }
27650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27651
Mark Youngabc2d6e2017-07-07 07:59:56 -060027652 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027653 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027654 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027655 }
27656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027657 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070027658 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060027659 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
27660 return createResultValue( result, "vk::Device::importSemaphoreFdKHR" );
27661 }
27662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27663
27664#ifdef VK_USE_PLATFORM_WIN32_KHR
27665 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
27666 {
27667 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
27668 }
27669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27670 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
27671 {
27672 HANDLE handle;
27673 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
27674 return createResultValue( result, handle, "vk::Device::getFenceWin32HandleKHR" );
27675 }
27676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27677#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27678
27679#ifdef VK_USE_PLATFORM_WIN32_KHR
27680 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
27681 {
27682 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
27683 }
27684#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27685 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
27686 {
27687 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
27688 return createResultValue( result, "vk::Device::importFenceWin32HandleKHR" );
27689 }
27690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27691#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27692
27693 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
27694 {
27695 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
27696 }
27697#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27698 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
27699 {
27700 int fd;
27701 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
27702 return createResultValue( result, fd, "vk::Device::getFenceFdKHR" );
27703 }
27704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27705
27706 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
27707 {
27708 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
27709 }
27710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27711 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
27712 {
27713 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
27714 return createResultValue( result, "vk::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070027715 }
27716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27717
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027718 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
27719 {
27720 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
27721 }
27722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27723 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
27724 {
27725 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
27726 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
27727 }
27728#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27729
27730 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
27731 {
27732 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
27733 }
27734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27735 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
27736 {
27737 Fence fence;
27738 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
27739 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
27740 }
27741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27742
27743 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
27744 {
27745 return static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( pDisplayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
27746 }
27747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27748 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
27749 {
27750 Fence fence;
27751 Result result = static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
27752 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
27753 }
27754#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27755
27756 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
27757 {
27758 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
27759 }
27760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27761 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
27762 {
27763 uint64_t counterValue;
27764 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
27765 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
27766 }
27767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027768
27769 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
27770 {
27771 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
27772 }
27773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27774 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
27775 {
27776 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
27777 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
27778 return peerMemoryFeatures;
27779 }
27780#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27781
27782 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
27783 {
27784 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
27785 }
27786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27787 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
27788 {
27789 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
27790 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
27791 }
27792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27793
27794 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
27795 {
27796 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
27797 }
27798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27799 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
27800 {
27801 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
27802 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
27803 }
27804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27805
27806 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
27807 {
27808 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
27809 }
27810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27811 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
27812 {
27813 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
27814 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
27815 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
27816 }
27817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27818
27819 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
27820 {
27821 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
27822 }
27823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27824 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
27825 {
27826 DeviceGroupPresentModeFlagsKHX modes;
27827 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
27828 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
27829 }
27830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27831
27832 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
27833 {
27834 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
27835 }
27836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27837 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
27838 {
27839 uint32_t imageIndex;
27840 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
27841 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
27842 }
27843#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27844
27845 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
27846 {
27847 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
27848 }
27849#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27850 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27851 {
27852 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027853 Result result = static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( &descriptorUpdateTemplate ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027854 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
27855 }
27856#ifndef VULKAN_HPP_NO_SMART_HANDLE
27857 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27858 {
27859 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
27860 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
27861 }
27862#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27863#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27864
27865 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
27866 {
27867 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27868 }
27869#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27870 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
27871 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027872 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070027873 }
27874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27875
27876 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
27877 {
27878 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
27879 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027880
27881 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
27882 {
27883 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
27884 }
27885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27886 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
27887 {
27888#ifdef VULKAN_HPP_NO_EXCEPTIONS
27889 assert( swapchains.size() == metadata.size() );
27890#else
27891 if ( swapchains.size() != metadata.size() )
27892 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027893 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027894 }
27895#endif // VULKAN_HPP_NO_EXCEPTIONS
27896 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
27897 }
27898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27899
Mark Lobodzinski54385432017-05-15 10:27:52 -060027900#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27901 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
27902 {
27903 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
27904 }
27905#else
27906 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
27907 {
27908 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
27909 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
27910 }
27911#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27912
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027913 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
27914 {
27915 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
27916 }
27917#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27918 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
27919 {
27920 RefreshCycleDurationGOOGLE displayTimingProperties;
27921 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
27922 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
27923 }
27924#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27925
27926 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
27927 {
27928 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
27929 }
27930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27931 template <typename Allocator>
27932 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
27933 {
27934 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
27935 uint32_t presentationTimingCount;
27936 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
27937 if ( ( result == Result::eSuccess ) && presentationTimingCount )
27938 {
27939 presentationTimings.resize( presentationTimingCount );
27940 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
27941 }
27942 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
27943 }
27944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27945
Mark Youngabc2d6e2017-07-07 07:59:56 -060027946 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
27947 {
27948 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
27949 }
27950#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27951 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
27952 {
27953 MemoryRequirements2KHR memoryRequirements;
27954 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
27955 return memoryRequirements;
27956 }
27957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27958
27959 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
27960 {
27961 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
27962 }
27963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27964 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
27965 {
27966 MemoryRequirements2KHR memoryRequirements;
27967 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
27968 return memoryRequirements;
27969 }
27970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27971
27972 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
27973 {
27974 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
27975 }
27976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27977 template <typename Allocator>
27978 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
27979 {
27980 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
27981 uint32_t sparseMemoryRequirementCount;
27982 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
27983 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
27984 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
27985 return sparseMemoryRequirements;
27986 }
27987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027989#ifndef VULKAN_HPP_NO_SMART_HANDLE
27990 class DeviceDeleter;
27991 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
27992#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27993
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027994 class PhysicalDevice
27995 {
27996 public:
27997 PhysicalDevice()
27998 : m_physicalDevice(VK_NULL_HANDLE)
27999 {}
28000
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070028001 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028002 : m_physicalDevice(VK_NULL_HANDLE)
28003 {}
28004
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028005 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
28006 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028007 {}
28008
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070028009#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028010 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028011 {
28012 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028013 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028014 }
28015#endif
28016
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028017 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028018 {
28019 m_physicalDevice = VK_NULL_HANDLE;
28020 return *this;
28021 }
28022
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028023 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028024 {
28025 return m_physicalDevice == rhs.m_physicalDevice;
28026 }
28027
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028028 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028029 {
28030 return m_physicalDevice != rhs.m_physicalDevice;
28031 }
28032
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028033 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028034 {
28035 return m_physicalDevice < rhs.m_physicalDevice;
28036 }
28037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028038 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028040 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028041#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28042
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028043 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028044#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028045 template <typename Allocator = std::allocator<QueueFamilyProperties>>
28046 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28048
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028049 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028051 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28053
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028054 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028055#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028056 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028059 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028061 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028064 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028066 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28068
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028069 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028070#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028071 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28072#ifndef VULKAN_HPP_NO_SMART_HANDLE
28073 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28074#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28076
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028077 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028079 template <typename Allocator = std::allocator<LayerProperties>>
28080 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28082
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028083 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028084#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028085 template <typename Allocator = std::allocator<ExtensionProperties>>
28086 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28088
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028089 void getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028091 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
28092 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28094
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028095 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028097 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
28098 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028101 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028103 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
28104 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028107 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028109 template <typename Allocator = std::allocator<DisplayKHR>>
28110 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28112
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028113 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028115 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
28116 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028117#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28118
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028119 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028121 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028122#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28123
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028124 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028125#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028126 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028127#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28128
28129#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028130 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
28131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28132 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
28133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028134#endif /*VK_USE_PLATFORM_MIR_KHR*/
28135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028136 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028138 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28140
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028141 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028143 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028144#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28145
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028146 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028148 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
28149 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28151
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028152 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028154 template <typename Allocator = std::allocator<PresentModeKHR>>
28155 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28157
28158#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028159 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
28160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28161 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
28162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028163#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28164
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028165#ifdef VK_USE_PLATFORM_WIN32_KHR
28166 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
28167#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28168
28169#ifdef VK_USE_PLATFORM_XLIB_KHR
28170 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028172 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
28173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28174#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28175
28176#ifdef VK_USE_PLATFORM_XCB_KHR
28177 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
28178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28179 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
28180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28181#endif /*VK_USE_PLATFORM_XCB_KHR*/
28182
28183 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
28184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28185 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
28186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28187
28188 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
28189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28190 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
28191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28192
28193 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
28194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28195 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
28196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28197
28198 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
28199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28200 PhysicalDeviceProperties2KHR getProperties2KHR() const;
28201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28202
28203 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
28204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28205 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
28206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28207
28208 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
28209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28210 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
28211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28212
28213 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
28214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28215 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
28216 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
28217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28218
28219 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
28220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28221 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
28222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28223
28224 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
28225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28226 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
28227 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28229
Mark Youngabc2d6e2017-07-07 07:59:56 -060028230 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028232 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28234
Mark Youngabc2d6e2017-07-07 07:59:56 -060028235 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028237 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
28238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28239
28240 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
28241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28242 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070028243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28244
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028245#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028246 Result releaseDisplayEXT( DisplayKHR display ) const;
28247#else
28248 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28250
28251#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028252 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028254 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070028255#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070028256#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28257
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028258#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28259 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070028260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028261 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070028262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028263#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070028264
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028265 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070028266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028267 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070028268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28269
Mark Young0f183a82017-02-28 09:58:04 -070028270 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
28271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28272 template <typename Allocator = std::allocator<Rect2D>>
28273 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
28274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28275
Mark Lobodzinski54385432017-05-15 10:27:52 -060028276 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
28277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028278 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060028279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28280
28281 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
28282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28283 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
28284 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
28285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28286
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028287
28288
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070028289 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028290 {
28291 return m_physicalDevice;
28292 }
28293
28294 explicit operator bool() const
28295 {
28296 return m_physicalDevice != VK_NULL_HANDLE;
28297 }
28298
28299 bool operator!() const
28300 {
28301 return m_physicalDevice == VK_NULL_HANDLE;
28302 }
28303
28304 private:
28305 VkPhysicalDevice m_physicalDevice;
28306 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028307
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028308 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
28309
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028310#ifndef VULKAN_HPP_NO_SMART_HANDLE
28311 class DeviceDeleter
28312 {
28313 public:
28314 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
28315 : m_allocator( allocator )
28316 {}
28317
28318 void operator()( Device device )
28319 {
28320 device.destroy( m_allocator );
28321 }
28322
28323 private:
28324 Optional<const AllocationCallbacks> m_allocator;
28325 };
28326#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28327
28328 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
28329 {
28330 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
28331 }
28332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28333 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
28334 {
28335 PhysicalDeviceProperties properties;
28336 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
28337 return properties;
28338 }
28339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28340
28341 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
28342 {
28343 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
28344 }
28345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28346 template <typename Allocator>
28347 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
28348 {
28349 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
28350 uint32_t queueFamilyPropertyCount;
28351 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
28352 queueFamilyProperties.resize( queueFamilyPropertyCount );
28353 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
28354 return queueFamilyProperties;
28355 }
28356#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28357
28358 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
28359 {
28360 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
28361 }
28362#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28363 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
28364 {
28365 PhysicalDeviceMemoryProperties memoryProperties;
28366 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
28367 return memoryProperties;
28368 }
28369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28370
28371 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
28372 {
28373 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
28374 }
28375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28376 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
28377 {
28378 PhysicalDeviceFeatures features;
28379 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
28380 return features;
28381 }
28382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28383
28384 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
28385 {
28386 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
28387 }
28388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28389 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
28390 {
28391 FormatProperties formatProperties;
28392 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
28393 return formatProperties;
28394 }
28395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28396
28397 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
28398 {
28399 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), reinterpret_cast<VkImageFormatProperties*>( pImageFormatProperties ) ) );
28400 }
28401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28402 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
28403 {
28404 ImageFormatProperties imageFormatProperties;
28405 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), reinterpret_cast<VkImageFormatProperties*>( &imageFormatProperties ) ) );
28406 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
28407 }
28408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28409
28410 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
28411 {
28412 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
28413 }
28414#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28415 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28416 {
28417 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028418 Result result = static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDevice*>( &device ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028419 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
28420 }
28421#ifndef VULKAN_HPP_NO_SMART_HANDLE
28422 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28423 {
28424 DeviceDeleter deleter( allocator );
28425 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
28426 }
28427#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28429
28430 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
28431 {
28432 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
28433 }
28434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28435 template <typename Allocator>
28436 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
28437 {
28438 std::vector<LayerProperties,Allocator> properties;
28439 uint32_t propertyCount;
28440 Result result;
28441 do
28442 {
28443 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
28444 if ( ( result == Result::eSuccess ) && propertyCount )
28445 {
28446 properties.resize( propertyCount );
28447 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
28448 }
28449 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028450 assert( propertyCount <= properties.size() );
28451 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028452 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
28453 }
28454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28455
28456 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
28457 {
28458 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
28459 }
28460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28461 template <typename Allocator>
28462 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
28463 {
28464 std::vector<ExtensionProperties,Allocator> properties;
28465 uint32_t propertyCount;
28466 Result result;
28467 do
28468 {
28469 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
28470 if ( ( result == Result::eSuccess ) && propertyCount )
28471 {
28472 properties.resize( propertyCount );
28473 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
28474 }
28475 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028476 assert( propertyCount <= properties.size() );
28477 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028478 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
28479 }
28480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28481
28482 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
28483 {
28484 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties*>( pProperties ) );
28485 }
28486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28487 template <typename Allocator>
28488 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
28489 {
28490 std::vector<SparseImageFormatProperties,Allocator> properties;
28491 uint32_t propertyCount;
28492 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), &propertyCount, nullptr );
28493 properties.resize( propertyCount );
28494 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties*>( properties.data() ) );
28495 return properties;
28496 }
28497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28498
28499 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
28500 {
28501 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
28502 }
28503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28504 template <typename Allocator>
28505 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
28506 {
28507 std::vector<DisplayPropertiesKHR,Allocator> properties;
28508 uint32_t propertyCount;
28509 Result result;
28510 do
28511 {
28512 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
28513 if ( ( result == Result::eSuccess ) && propertyCount )
28514 {
28515 properties.resize( propertyCount );
28516 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
28517 }
28518 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028519 assert( propertyCount <= properties.size() );
28520 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028521 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
28522 }
28523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28524
28525 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
28526 {
28527 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
28528 }
28529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28530 template <typename Allocator>
28531 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
28532 {
28533 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
28534 uint32_t propertyCount;
28535 Result result;
28536 do
28537 {
28538 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
28539 if ( ( result == Result::eSuccess ) && propertyCount )
28540 {
28541 properties.resize( propertyCount );
28542 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
28543 }
28544 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028545 assert( propertyCount <= properties.size() );
28546 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028547 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
28548 }
28549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28550
28551 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
28552 {
28553 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
28554 }
28555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28556 template <typename Allocator>
28557 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
28558 {
28559 std::vector<DisplayKHR,Allocator> displays;
28560 uint32_t displayCount;
28561 Result result;
28562 do
28563 {
28564 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
28565 if ( ( result == Result::eSuccess ) && displayCount )
28566 {
28567 displays.resize( displayCount );
28568 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
28569 }
28570 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028571 assert( displayCount <= displays.size() );
28572 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028573 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
28574 }
28575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28576
28577 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
28578 {
28579 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
28580 }
28581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28582 template <typename Allocator>
28583 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
28584 {
28585 std::vector<DisplayModePropertiesKHR,Allocator> properties;
28586 uint32_t propertyCount;
28587 Result result;
28588 do
28589 {
28590 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
28591 if ( ( result == Result::eSuccess ) && propertyCount )
28592 {
28593 properties.resize( propertyCount );
28594 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
28595 }
28596 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028597 assert( propertyCount <= properties.size() );
28598 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028599 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
28600 }
28601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28602
28603 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
28604 {
28605 return static_cast<Result>( vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDisplayModeKHR*>( pMode ) ) );
28606 }
28607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28608 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28609 {
28610 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028611 Result result = static_cast<Result>( vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDisplayModeKHR*>( &mode ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028612 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
28613 }
28614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28615
28616 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
28617 {
28618 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
28619 }
28620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28621 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
28622 {
28623 DisplayPlaneCapabilitiesKHR capabilities;
28624 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
28625 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
28626 }
28627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28628
28629#ifdef VK_USE_PLATFORM_MIR_KHR
28630 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
28631 {
28632 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
28633 }
28634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28635 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
28636 {
28637 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
28638 }
28639#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28640#endif /*VK_USE_PLATFORM_MIR_KHR*/
28641
28642 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
28643 {
28644 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
28645 }
28646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28647 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
28648 {
28649 Bool32 supported;
28650 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
28651 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
28652 }
28653#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28654
28655 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
28656 {
28657 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
28658 }
28659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28660 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
28661 {
28662 SurfaceCapabilitiesKHR surfaceCapabilities;
28663 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
28664 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
28665 }
28666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28667
28668 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
28669 {
28670 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
28671 }
28672#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28673 template <typename Allocator>
28674 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
28675 {
28676 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
28677 uint32_t surfaceFormatCount;
28678 Result result;
28679 do
28680 {
28681 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
28682 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
28683 {
28684 surfaceFormats.resize( surfaceFormatCount );
28685 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
28686 }
28687 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028688 assert( surfaceFormatCount <= surfaceFormats.size() );
28689 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028690 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
28691 }
28692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28693
28694 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
28695 {
28696 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
28697 }
28698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28699 template <typename Allocator>
28700 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
28701 {
28702 std::vector<PresentModeKHR,Allocator> presentModes;
28703 uint32_t presentModeCount;
28704 Result result;
28705 do
28706 {
28707 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
28708 if ( ( result == Result::eSuccess ) && presentModeCount )
28709 {
28710 presentModes.resize( presentModeCount );
28711 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
28712 }
28713 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028714 assert( presentModeCount <= presentModes.size() );
28715 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028716 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
28717 }
28718#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28719
28720#ifdef VK_USE_PLATFORM_WAYLAND_KHR
28721 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
28722 {
28723 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
28724 }
28725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28726 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
28727 {
28728 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
28729 }
28730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28731#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28732
28733#ifdef VK_USE_PLATFORM_WIN32_KHR
28734 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
28735 {
28736 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
28737 }
28738#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28739
28740#ifdef VK_USE_PLATFORM_XLIB_KHR
28741 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
28742 {
28743 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
28744 }
28745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28746 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
28747 {
28748 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
28749 }
28750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28751#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28752
28753#ifdef VK_USE_PLATFORM_XCB_KHR
28754 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
28755 {
28756 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
28757 }
28758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28759 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
28760 {
28761 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
28762 }
28763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28764#endif /*VK_USE_PLATFORM_XCB_KHR*/
28765
28766 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
28767 {
28768 return static_cast<Result>( vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ), reinterpret_cast<VkExternalImageFormatPropertiesNV*>( pExternalImageFormatProperties ) ) );
28769 }
28770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28771 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
28772 {
28773 ExternalImageFormatPropertiesNV externalImageFormatProperties;
28774 Result result = static_cast<Result>( vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ), reinterpret_cast<VkExternalImageFormatPropertiesNV*>( &externalImageFormatProperties ) ) );
28775 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
28776 }
28777#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28778
28779 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
28780 {
28781 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
28782 }
28783#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28784 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
28785 {
28786 DeviceGeneratedCommandsLimitsNVX limits;
28787 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
28788 return limits;
28789 }
28790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28791
28792 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
28793 {
28794 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
28795 }
28796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28797 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
28798 {
28799 PhysicalDeviceFeatures2KHR features;
28800 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
28801 return features;
28802 }
28803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28804
28805 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
28806 {
28807 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
28808 }
28809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28810 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
28811 {
28812 PhysicalDeviceProperties2KHR properties;
28813 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
28814 return properties;
28815 }
28816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28817
28818 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
28819 {
28820 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
28821 }
28822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28823 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
28824 {
28825 FormatProperties2KHR formatProperties;
28826 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
28827 return formatProperties;
28828 }
28829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28830
28831 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
28832 {
28833 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
28834 }
28835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28836 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
28837 {
28838 ImageFormatProperties2KHR imageFormatProperties;
28839 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
28840 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
28841 }
28842#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28843
28844 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
28845 {
28846 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
28847 }
28848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28849 template <typename Allocator>
28850 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
28851 {
28852 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
28853 uint32_t queueFamilyPropertyCount;
28854 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
28855 queueFamilyProperties.resize( queueFamilyPropertyCount );
28856 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
28857 return queueFamilyProperties;
28858 }
28859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28860
28861 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
28862 {
28863 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
28864 }
28865#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28866 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
28867 {
28868 PhysicalDeviceMemoryProperties2KHR memoryProperties;
28869 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
28870 return memoryProperties;
28871 }
28872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28873
28874 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
28875 {
28876 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
28877 }
28878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28879 template <typename Allocator>
28880 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
28881 {
28882 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
28883 uint32_t propertyCount;
28884 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
28885 properties.resize( propertyCount );
28886 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
28887 return properties;
28888 }
28889#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28890
Mark Youngabc2d6e2017-07-07 07:59:56 -060028891 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028892 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028893 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028894 }
28895#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028896 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028897 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028898 ExternalBufferPropertiesKHR externalBufferProperties;
28899 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028900 return externalBufferProperties;
28901 }
28902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28903
Mark Youngabc2d6e2017-07-07 07:59:56 -060028904 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028905 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028906 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028907 }
28908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028909 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028910 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028911 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
28912 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070028913 return externalSemaphoreProperties;
28914 }
28915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28916
Mark Youngabc2d6e2017-07-07 07:59:56 -060028917 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
28918 {
28919 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
28920 }
28921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28922 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
28923 {
28924 ExternalFencePropertiesKHR externalFenceProperties;
28925 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
28926 return externalFenceProperties;
28927 }
28928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28929
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028930#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28931 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
28932 {
28933 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
28934 }
28935#else
28936 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
28937 {
28938 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
28939 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
28940 }
28941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28942
28943#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28944 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
28945 {
28946 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
28947 }
28948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28949 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
28950 {
28951 Display dpy;
28952 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
28953 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
28954 }
28955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28956#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28957
28958#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
28959 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
28960 {
28961 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
28962 }
28963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28964 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
28965 {
28966 DisplayKHR display;
28967 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
28968 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
28969 }
28970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28971#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
28972
28973 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
28974 {
28975 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
28976 }
28977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28978 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
28979 {
28980 SurfaceCapabilities2EXT surfaceCapabilities;
28981 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
28982 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
28983 }
28984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070028985
28986 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
28987 {
28988 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
28989 }
28990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28991 template <typename Allocator>
28992 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
28993 {
28994 std::vector<Rect2D,Allocator> rects;
28995 uint32_t rectCount;
28996 Result result;
28997 do
28998 {
28999 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
29000 if ( ( result == Result::eSuccess ) && rectCount )
29001 {
29002 rects.resize( rectCount );
29003 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
29004 }
29005 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029006 assert( rectCount <= rects.size() );
29007 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070029008 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
29009 }
29010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029011
Mark Lobodzinski54385432017-05-15 10:27:52 -060029012 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
29013 {
29014 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
29015 }
29016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029017 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060029018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029019 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060029020 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
29021 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
29022 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060029023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29024
29025 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
29026 {
29027 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
29028 }
29029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29030 template <typename Allocator>
29031 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
29032 {
29033 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
29034 uint32_t surfaceFormatCount;
29035 Result result;
29036 do
29037 {
29038 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
29039 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
29040 {
29041 surfaceFormats.resize( surfaceFormatCount );
29042 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
29043 }
29044 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029045 assert( surfaceFormatCount <= surfaceFormats.size() );
29046 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060029047 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
29048 }
29049#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29050
Mark Young0f183a82017-02-28 09:58:04 -070029051 struct CmdProcessCommandsInfoNVX
29052 {
29053 CmdProcessCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t indirectCommandsTokenCount_ = 0, const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr, uint32_t maxSequencesCount_ = 0, CommandBuffer targetCommandBuffer_ = CommandBuffer(), Buffer sequencesCountBuffer_ = Buffer(), DeviceSize sequencesCountOffset_ = 0, Buffer sequencesIndexBuffer_ = Buffer(), DeviceSize sequencesIndexOffset_ = 0 )
29054 : sType( StructureType::eCmdProcessCommandsInfoNVX )
29055 , pNext( nullptr )
29056 , objectTable( objectTable_ )
29057 , indirectCommandsLayout( indirectCommandsLayout_ )
29058 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
29059 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
29060 , maxSequencesCount( maxSequencesCount_ )
29061 , targetCommandBuffer( targetCommandBuffer_ )
29062 , sequencesCountBuffer( sequencesCountBuffer_ )
29063 , sequencesCountOffset( sequencesCountOffset_ )
29064 , sequencesIndexBuffer( sequencesIndexBuffer_ )
29065 , sequencesIndexOffset( sequencesIndexOffset_ )
29066 {
29067 }
29068
29069 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
29070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029071 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070029072 }
29073
29074 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
29075 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029076 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070029077 return *this;
29078 }
Mark Young0f183a82017-02-28 09:58:04 -070029079 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
29080 {
29081 pNext = pNext_;
29082 return *this;
29083 }
29084
29085 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
29086 {
29087 objectTable = objectTable_;
29088 return *this;
29089 }
29090
29091 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
29092 {
29093 indirectCommandsLayout = indirectCommandsLayout_;
29094 return *this;
29095 }
29096
29097 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
29098 {
29099 indirectCommandsTokenCount = indirectCommandsTokenCount_;
29100 return *this;
29101 }
29102
29103 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
29104 {
29105 pIndirectCommandsTokens = pIndirectCommandsTokens_;
29106 return *this;
29107 }
29108
29109 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
29110 {
29111 maxSequencesCount = maxSequencesCount_;
29112 return *this;
29113 }
29114
29115 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
29116 {
29117 targetCommandBuffer = targetCommandBuffer_;
29118 return *this;
29119 }
29120
29121 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
29122 {
29123 sequencesCountBuffer = sequencesCountBuffer_;
29124 return *this;
29125 }
29126
29127 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
29128 {
29129 sequencesCountOffset = sequencesCountOffset_;
29130 return *this;
29131 }
29132
29133 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
29134 {
29135 sequencesIndexBuffer = sequencesIndexBuffer_;
29136 return *this;
29137 }
29138
29139 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
29140 {
29141 sequencesIndexOffset = sequencesIndexOffset_;
29142 return *this;
29143 }
29144
29145 operator const VkCmdProcessCommandsInfoNVX&() const
29146 {
29147 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
29148 }
29149
29150 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
29151 {
29152 return ( sType == rhs.sType )
29153 && ( pNext == rhs.pNext )
29154 && ( objectTable == rhs.objectTable )
29155 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
29156 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
29157 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
29158 && ( maxSequencesCount == rhs.maxSequencesCount )
29159 && ( targetCommandBuffer == rhs.targetCommandBuffer )
29160 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
29161 && ( sequencesCountOffset == rhs.sequencesCountOffset )
29162 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
29163 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
29164 }
29165
29166 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
29167 {
29168 return !operator==( rhs );
29169 }
29170
29171 private:
29172 StructureType sType;
29173
29174 public:
29175 const void* pNext;
29176 ObjectTableNVX objectTable;
29177 IndirectCommandsLayoutNVX indirectCommandsLayout;
29178 uint32_t indirectCommandsTokenCount;
29179 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
29180 uint32_t maxSequencesCount;
29181 CommandBuffer targetCommandBuffer;
29182 Buffer sequencesCountBuffer;
29183 DeviceSize sequencesCountOffset;
29184 Buffer sequencesIndexBuffer;
29185 DeviceSize sequencesIndexOffset;
29186 };
29187 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
29188
29189 struct PhysicalDeviceGroupPropertiesKHX
29190 {
29191 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
29192 {
29193 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
29194 }
29195
29196 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
29197 {
29198 return ( sType == rhs.sType )
29199 && ( pNext == rhs.pNext )
29200 && ( physicalDeviceCount == rhs.physicalDeviceCount )
29201 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
29202 && ( subsetAllocation == rhs.subsetAllocation );
29203 }
29204
29205 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
29206 {
29207 return !operator==( rhs );
29208 }
29209
29210 private:
29211 StructureType sType;
29212
29213 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029214 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070029215 uint32_t physicalDeviceCount;
29216 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
29217 Bool32 subsetAllocation;
29218 };
29219 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
29220
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029221#ifndef VULKAN_HPP_NO_SMART_HANDLE
29222 class DebugReportCallbackEXTDeleter;
29223 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
29224 class SurfaceKHRDeleter;
29225 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
29226#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29227
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029228 class Instance
29229 {
29230 public:
29231 Instance()
29232 : m_instance(VK_NULL_HANDLE)
29233 {}
29234
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070029235 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029236 : m_instance(VK_NULL_HANDLE)
29237 {}
29238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029239 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
29240 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029241 {}
29242
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029243#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029244 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029245 {
29246 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029247 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029248 }
29249#endif
29250
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029251 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029252 {
29253 m_instance = VK_NULL_HANDLE;
29254 return *this;
29255 }
29256
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029257 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029258 {
29259 return m_instance == rhs.m_instance;
29260 }
29261
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029262 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029263 {
29264 return m_instance != rhs.m_instance;
29265 }
29266
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029267 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029268 {
29269 return m_instance < rhs.m_instance;
29270 }
29271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029272 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029274 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29276
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029277 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029279 template <typename Allocator = std::allocator<PhysicalDevice>>
29280 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29282
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029283 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029285 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29287
29288#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029289 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029291 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29292#ifndef VULKAN_HPP_NO_SMART_HANDLE
29293 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029296#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029297
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029298 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029300 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29301#ifndef VULKAN_HPP_NO_SMART_HANDLE
29302 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29303#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029304#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29305
29306#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029307 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029309 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29310#ifndef VULKAN_HPP_NO_SMART_HANDLE
29311 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29312#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029314#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029315
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029316 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029318 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029319#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29320
Mark Young39389872017-01-19 21:10:49 -070029321#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029322 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29324 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29325#ifndef VULKAN_HPP_NO_SMART_HANDLE
29326 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29327#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070029329#endif /*VK_USE_PLATFORM_VI_NN*/
29330
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029331#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029332 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29334 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29335#ifndef VULKAN_HPP_NO_SMART_HANDLE
29336 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29337#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029339#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29340
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029341#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029342 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29343#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29344 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29345#ifndef VULKAN_HPP_NO_SMART_HANDLE
29346 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29347#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029349#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29350
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029351#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029352 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29354 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29355#ifndef VULKAN_HPP_NO_SMART_HANDLE
29356 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29357#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029359#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29360
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029361#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029362 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29364 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29365#ifndef VULKAN_HPP_NO_SMART_HANDLE
29366 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29367#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029369#endif /*VK_USE_PLATFORM_XCB_KHR*/
29370
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029371 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029373 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29374#ifndef VULKAN_HPP_NO_SMART_HANDLE
29375 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29376#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29378
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029379 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029381 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29383
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029384 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029386 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29388
Mark Young0f183a82017-02-28 09:58:04 -070029389 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
29390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29391 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
29392 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
29393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29394
29395#ifdef VK_USE_PLATFORM_IOS_MVK
29396 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29398 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29399#ifndef VULKAN_HPP_NO_SMART_HANDLE
29400 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29401#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29403#endif /*VK_USE_PLATFORM_IOS_MVK*/
29404
29405#ifdef VK_USE_PLATFORM_MACOS_MVK
29406 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
29407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29408 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29409#ifndef VULKAN_HPP_NO_SMART_HANDLE
29410 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29411#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29413#endif /*VK_USE_PLATFORM_MACOS_MVK*/
29414
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029415
29416
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029417 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029418 {
29419 return m_instance;
29420 }
29421
29422 explicit operator bool() const
29423 {
29424 return m_instance != VK_NULL_HANDLE;
29425 }
29426
29427 bool operator!() const
29428 {
29429 return m_instance == VK_NULL_HANDLE;
29430 }
29431
29432 private:
29433 VkInstance m_instance;
29434 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029435
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029436 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
29437
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029438#ifndef VULKAN_HPP_NO_SMART_HANDLE
29439 class DebugReportCallbackEXTDeleter
29440 {
29441 public:
29442 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
29443 : m_instance( instance )
29444 , m_allocator( allocator )
29445 {}
29446
29447 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
29448 {
29449 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
29450 }
29451
29452 private:
29453 Instance m_instance;
29454 Optional<const AllocationCallbacks> m_allocator;
29455 };
29456
29457 class SurfaceKHRDeleter
29458 {
29459 public:
29460 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
29461 : m_instance( instance )
29462 , m_allocator( allocator )
29463 {}
29464
29465 void operator()( SurfaceKHR surfaceKHR )
29466 {
29467 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
29468 }
29469
29470 private:
29471 Instance m_instance;
29472 Optional<const AllocationCallbacks> m_allocator;
29473 };
29474#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29475
29476 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
29477 {
29478 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29479 }
29480#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29481 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
29482 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029483 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029484 }
29485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29486
29487 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
29488 {
29489 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
29490 }
29491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29492 template <typename Allocator>
29493 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
29494 {
29495 std::vector<PhysicalDevice,Allocator> physicalDevices;
29496 uint32_t physicalDeviceCount;
29497 Result result;
29498 do
29499 {
29500 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
29501 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
29502 {
29503 physicalDevices.resize( physicalDeviceCount );
29504 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
29505 }
29506 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029507 assert( physicalDeviceCount <= physicalDevices.size() );
29508 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029509 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
29510 }
29511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29512
29513 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
29514 {
29515 return vkGetInstanceProcAddr( m_instance, pName );
29516 }
29517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29518 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
29519 {
29520 return vkGetInstanceProcAddr( m_instance, name.c_str() );
29521 }
29522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29523
29524#ifdef VK_USE_PLATFORM_ANDROID_KHR
29525 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29526 {
29527 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29528 }
29529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29530 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29531 {
29532 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029533 Result result = static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029534 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
29535 }
29536#ifndef VULKAN_HPP_NO_SMART_HANDLE
29537 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29538 {
29539 SurfaceKHRDeleter deleter( *this, allocator );
29540 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
29541 }
29542#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29543#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29544#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
29545
29546 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29547 {
29548 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29549 }
29550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29551 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29552 {
29553 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029554 Result result = static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029555 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
29556 }
29557#ifndef VULKAN_HPP_NO_SMART_HANDLE
29558 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29559 {
29560 SurfaceKHRDeleter deleter( *this, allocator );
29561 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
29562 }
29563#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29565
29566#ifdef VK_USE_PLATFORM_MIR_KHR
29567 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29568 {
29569 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29570 }
29571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29572 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29573 {
29574 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029575 Result result = static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029576 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
29577 }
29578#ifndef VULKAN_HPP_NO_SMART_HANDLE
29579 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29580 {
29581 SurfaceKHRDeleter deleter( *this, allocator );
29582 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
29583 }
29584#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29585#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29586#endif /*VK_USE_PLATFORM_MIR_KHR*/
29587
29588 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
29589 {
29590 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29591 }
29592#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29593 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
29594 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029595 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029596 }
29597#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29598
29599#ifdef VK_USE_PLATFORM_VI_NN
29600 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29601 {
29602 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29603 }
29604#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29605 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
29606 {
29607 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029608 Result result = static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029609 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
29610 }
29611#ifndef VULKAN_HPP_NO_SMART_HANDLE
29612 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
29613 {
29614 SurfaceKHRDeleter deleter( *this, allocator );
29615 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
29616 }
29617#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29619#endif /*VK_USE_PLATFORM_VI_NN*/
29620
29621#ifdef VK_USE_PLATFORM_WAYLAND_KHR
29622 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29623 {
29624 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29625 }
29626#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29627 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29628 {
29629 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029630 Result result = static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029631 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
29632 }
29633#ifndef VULKAN_HPP_NO_SMART_HANDLE
29634 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29635 {
29636 SurfaceKHRDeleter deleter( *this, allocator );
29637 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
29638 }
29639#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29641#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29642
29643#ifdef VK_USE_PLATFORM_WIN32_KHR
29644 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29645 {
29646 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29647 }
29648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29649 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29650 {
29651 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029652 Result result = static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029653 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
29654 }
29655#ifndef VULKAN_HPP_NO_SMART_HANDLE
29656 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29657 {
29658 SurfaceKHRDeleter deleter( *this, allocator );
29659 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
29660 }
29661#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29663#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29664
29665#ifdef VK_USE_PLATFORM_XLIB_KHR
29666 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29667 {
29668 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29669 }
29670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29671 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29672 {
29673 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029674 Result result = static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029675 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
29676 }
29677#ifndef VULKAN_HPP_NO_SMART_HANDLE
29678 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29679 {
29680 SurfaceKHRDeleter deleter( *this, allocator );
29681 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
29682 }
29683#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29685#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29686
29687#ifdef VK_USE_PLATFORM_XCB_KHR
29688 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29689 {
29690 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29691 }
29692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29693 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29694 {
29695 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029696 Result result = static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029697 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
29698 }
29699#ifndef VULKAN_HPP_NO_SMART_HANDLE
29700 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29701 {
29702 SurfaceKHRDeleter deleter( *this, allocator );
29703 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
29704 }
29705#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29707#endif /*VK_USE_PLATFORM_XCB_KHR*/
29708
29709 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
29710 {
29711 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
29712 }
29713#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29714 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29715 {
29716 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029717 Result result = static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugReportCallbackEXT*>( &callback ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029718 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
29719 }
29720#ifndef VULKAN_HPP_NO_SMART_HANDLE
29721 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29722 {
29723 DebugReportCallbackEXTDeleter deleter( *this, allocator );
29724 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
29725 }
29726#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29728
29729 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
29730 {
29731 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29732 }
29733#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29734 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
29735 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029736 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029737 }
29738#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29739
29740 VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const
29741 {
29742 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
29743 }
29744#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29745 VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message ) const
29746 {
29747#ifdef VULKAN_HPP_NO_EXCEPTIONS
29748 assert( layerPrefix.size() == message.size() );
29749#else
29750 if ( layerPrefix.size() != message.size() )
29751 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029752 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029753 }
29754#endif // VULKAN_HPP_NO_EXCEPTIONS
29755 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
29756 }
29757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029758
29759 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029760 {
Mark Young0f183a82017-02-28 09:58:04 -070029761 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
29762 }
29763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29764 template <typename Allocator>
29765 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
29766 {
29767 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
29768 uint32_t physicalDeviceGroupCount;
29769 Result result;
29770 do
29771 {
29772 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
29773 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
29774 {
29775 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
29776 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
29777 }
29778 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029779 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
29780 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070029781 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
29782 }
29783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29784
29785#ifdef VK_USE_PLATFORM_IOS_MVK
29786 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29787 {
29788 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29789 }
29790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29791 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29792 {
29793 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029794 Result result = static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029795 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
29796 }
29797#ifndef VULKAN_HPP_NO_SMART_HANDLE
29798 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29799 {
29800 SurfaceKHRDeleter deleter( *this, allocator );
29801 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
29802 }
29803#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29805#endif /*VK_USE_PLATFORM_IOS_MVK*/
29806
29807#ifdef VK_USE_PLATFORM_MACOS_MVK
29808 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
29809 {
29810 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
29811 }
29812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29813 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29814 {
29815 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029816 Result result = static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029817 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
29818 }
29819#ifndef VULKAN_HPP_NO_SMART_HANDLE
29820 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
29821 {
29822 SurfaceKHRDeleter deleter( *this, allocator );
29823 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
29824 }
29825#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29826#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29827#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029828
Mark Young0f183a82017-02-28 09:58:04 -070029829 struct DeviceGroupDeviceCreateInfoKHX
29830 {
29831 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
29832 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060029833 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070029834 , physicalDeviceCount( physicalDeviceCount_ )
29835 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029836 {
29837 }
29838
Mark Young0f183a82017-02-28 09:58:04 -070029839 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060029840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029841 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060029842 }
29843
Mark Young0f183a82017-02-28 09:58:04 -070029844 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060029845 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029846 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060029847 return *this;
29848 }
Mark Young0f183a82017-02-28 09:58:04 -070029849 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029850 {
29851 pNext = pNext_;
29852 return *this;
29853 }
29854
Mark Young0f183a82017-02-28 09:58:04 -070029855 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029856 {
Mark Young0f183a82017-02-28 09:58:04 -070029857 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060029858 return *this;
29859 }
29860
Mark Young0f183a82017-02-28 09:58:04 -070029861 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060029862 {
Mark Young0f183a82017-02-28 09:58:04 -070029863 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060029864 return *this;
29865 }
29866
Mark Young0f183a82017-02-28 09:58:04 -070029867 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060029868 {
Mark Young0f183a82017-02-28 09:58:04 -070029869 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060029870 }
29871
Mark Young0f183a82017-02-28 09:58:04 -070029872 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029873 {
29874 return ( sType == rhs.sType )
29875 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070029876 && ( physicalDeviceCount == rhs.physicalDeviceCount )
29877 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060029878 }
29879
Mark Young0f183a82017-02-28 09:58:04 -070029880 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060029881 {
29882 return !operator==( rhs );
29883 }
29884
29885 private:
29886 StructureType sType;
29887
29888 public:
29889 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070029890 uint32_t physicalDeviceCount;
29891 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060029892 };
Mark Young0f183a82017-02-28 09:58:04 -070029893 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060029894
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029895#ifndef VULKAN_HPP_NO_SMART_HANDLE
29896 class InstanceDeleter;
29897 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
29898#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29899
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029900 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029902 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029903#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029904 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029905#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29907
29908#ifndef VULKAN_HPP_NO_SMART_HANDLE
29909 class InstanceDeleter
29910 {
29911 public:
29912 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
29913 : m_allocator( allocator )
29914 {}
29915
29916 void operator()( Instance instance )
29917 {
29918 instance.destroy( m_allocator );
29919 }
29920
29921 private:
29922 Optional<const AllocationCallbacks> m_allocator;
29923 };
29924#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29925
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029926 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029927 {
29928 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
29929 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029931 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029932 {
29933 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029934 Result result = static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029935 return createResultValue( result, instance, "vk::createInstance" );
29936 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029937#ifndef VULKAN_HPP_NO_SMART_HANDLE
29938 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
29939 {
29940 InstanceDeleter deleter( allocator );
29941 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
29942 }
29943#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29945
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029947 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029948 {
29949 return "(void)";
29950 }
29951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029952 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029953 {
29954 return "{}";
29955 }
29956
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029957 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029958 {
29959 return "(void)";
29960 }
29961
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029962 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029963 {
29964 return "{}";
29965 }
29966
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029967 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029968 {
29969 return "(void)";
29970 }
29971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029972 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029973 {
29974 return "{}";
29975 }
29976
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029977 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029978 {
29979 return "(void)";
29980 }
29981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029982 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029983 {
29984 return "{}";
29985 }
29986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029987 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029988 {
29989 return "(void)";
29990 }
29991
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029992 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029993 {
29994 return "{}";
29995 }
29996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029997 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029998 {
29999 return "(void)";
30000 }
30001
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030002 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030003 {
30004 return "{}";
30005 }
30006
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030007 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030008 {
30009 return "(void)";
30010 }
30011
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030012 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030013 {
30014 return "{}";
30015 }
30016
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030017 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030018 {
30019 return "(void)";
30020 }
30021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030022 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030023 {
30024 return "{}";
30025 }
30026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030027 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030028 {
30029 return "(void)";
30030 }
30031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030032 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030033 {
30034 return "{}";
30035 }
30036
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030037 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030038 {
30039 return "(void)";
30040 }
30041
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030042 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030043 {
30044 return "{}";
30045 }
30046
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030047 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030048 {
30049 return "(void)";
30050 }
30051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030052 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030053 {
30054 return "{}";
30055 }
30056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030057 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030058 {
30059 return "(void)";
30060 }
30061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030062 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030063 {
30064 return "{}";
30065 }
30066
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030067 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030068 {
30069 return "(void)";
30070 }
30071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030072 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030073 {
30074 return "{}";
30075 }
30076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030077 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030078 {
30079 return "(void)";
30080 }
30081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030082 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030083 {
30084 return "{}";
30085 }
30086
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030087 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030088 {
30089 return "(void)";
30090 }
30091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030092 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030093 {
30094 return "{}";
30095 }
30096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030097 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030098 {
30099 return "(void)";
30100 }
30101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030102 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030103 {
30104 return "{}";
30105 }
30106
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030107 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030108 {
30109 return "(void)";
30110 }
30111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030112 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030113 {
30114 return "{}";
30115 }
30116
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030117 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030118 {
30119 return "(void)";
30120 }
30121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030122 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030123 {
30124 return "{}";
30125 }
30126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030127 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030128 {
30129 return "(void)";
30130 }
30131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030132 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030133 {
30134 return "{}";
30135 }
30136
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030137 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030138 {
30139 return "(void)";
30140 }
30141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030142 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030143 {
30144 return "{}";
30145 }
30146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030147 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030148 {
30149 return "(void)";
30150 }
30151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030152 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030153 {
30154 return "{}";
30155 }
30156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030157 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030158 {
30159 return "(void)";
30160 }
30161
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030162 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030163 {
30164 return "{}";
30165 }
30166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030167 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030168 {
30169 return "(void)";
30170 }
30171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030172 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030173 {
30174 return "{}";
30175 }
30176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030177 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030178 {
30179 return "(void)";
30180 }
30181
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030182 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030183 {
30184 return "{}";
30185 }
30186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030187 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030188 {
30189 return "(void)";
30190 }
30191
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030192 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030193 {
30194 return "{}";
30195 }
30196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030197 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030198 {
30199 return "(void)";
30200 }
30201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030202 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030203 {
30204 return "{}";
30205 }
30206
Mark Young0f183a82017-02-28 09:58:04 -070030207 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030208 {
30209 return "(void)";
30210 }
30211
Mark Young0f183a82017-02-28 09:58:04 -070030212 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030213 {
30214 return "{}";
30215 }
30216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030217 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030218 {
30219 return "(void)";
30220 }
30221
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030222 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030223 {
30224 return "{}";
30225 }
30226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030227 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030228 {
30229 return "(void)";
30230 }
30231
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030232 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030233 {
30234 return "{}";
30235 }
30236
30237#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030238 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030239 {
30240 return "(void)";
30241 }
30242#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
30243
30244#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030245 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030246 {
30247 return "{}";
30248 }
30249#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
30250
30251#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030252 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030253 {
30254 return "(void)";
30255 }
30256#endif /*VK_USE_PLATFORM_MIR_KHR*/
30257
30258#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030259 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030260 {
30261 return "{}";
30262 }
30263#endif /*VK_USE_PLATFORM_MIR_KHR*/
30264
Mark Young39389872017-01-19 21:10:49 -070030265#ifdef VK_USE_PLATFORM_VI_NN
30266 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
30267 {
30268 return "(void)";
30269 }
30270#endif /*VK_USE_PLATFORM_VI_NN*/
30271
30272#ifdef VK_USE_PLATFORM_VI_NN
30273 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
30274 {
30275 return "{}";
30276 }
30277#endif /*VK_USE_PLATFORM_VI_NN*/
30278
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030279#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030280 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030281 {
30282 return "(void)";
30283 }
30284#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30285
30286#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030287 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030288 {
30289 return "{}";
30290 }
30291#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30292
30293#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030294 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030295 {
30296 return "(void)";
30297 }
30298#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30299
30300#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030301 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030302 {
30303 return "{}";
30304 }
30305#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30306
30307#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030308 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030309 {
30310 return "(void)";
30311 }
30312#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30313
30314#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030315 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030316 {
30317 return "{}";
30318 }
30319#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30320
30321#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030322 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030323 {
30324 return "(void)";
30325 }
30326#endif /*VK_USE_PLATFORM_XCB_KHR*/
30327
30328#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030329 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030330 {
30331 return "{}";
30332 }
30333#endif /*VK_USE_PLATFORM_XCB_KHR*/
30334
Mark Young0f183a82017-02-28 09:58:04 -070030335#ifdef VK_USE_PLATFORM_IOS_MVK
30336 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
30337 {
30338 return "(void)";
30339 }
30340#endif /*VK_USE_PLATFORM_IOS_MVK*/
30341
30342#ifdef VK_USE_PLATFORM_IOS_MVK
30343 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
30344 {
30345 return "{}";
30346 }
30347#endif /*VK_USE_PLATFORM_IOS_MVK*/
30348
30349#ifdef VK_USE_PLATFORM_MACOS_MVK
30350 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
30351 {
30352 return "(void)";
30353 }
30354#endif /*VK_USE_PLATFORM_MACOS_MVK*/
30355
30356#ifdef VK_USE_PLATFORM_MACOS_MVK
30357 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
30358 {
30359 return "{}";
30360 }
30361#endif /*VK_USE_PLATFORM_MACOS_MVK*/
30362
Mark Young39389872017-01-19 21:10:49 -070030363 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
30364 {
30365 return "(void)";
30366 }
30367
30368 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
30369 {
30370 return "{}";
30371 }
30372
Mark Young0f183a82017-02-28 09:58:04 -070030373 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
30374 {
30375 return "(void)";
30376 }
30377
30378 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
30379 {
30380 return "{}";
30381 }
30382
30383 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
30384 {
30385 return "(void)";
30386 }
30387
30388 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
30389 {
30390 return "{}";
30391 }
30392
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030393 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
30394 {
30395 return "(void)";
30396 }
30397
30398 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
30399 {
30400 return "{}";
30401 }
30402
30403 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
30404 {
30405 return "(void)";
30406 }
30407
30408 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
30409 {
30410 return "{}";
30411 }
30412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030413 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030414 {
30415 switch (value)
30416 {
30417 case ImageLayout::eUndefined: return "Undefined";
30418 case ImageLayout::eGeneral: return "General";
30419 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
30420 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
30421 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
30422 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
30423 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
30424 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
30425 case ImageLayout::ePreinitialized: return "Preinitialized";
30426 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030427 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030428 default: return "invalid";
30429 }
30430 }
30431
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030432 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030433 {
30434 switch (value)
30435 {
30436 case AttachmentLoadOp::eLoad: return "Load";
30437 case AttachmentLoadOp::eClear: return "Clear";
30438 case AttachmentLoadOp::eDontCare: return "DontCare";
30439 default: return "invalid";
30440 }
30441 }
30442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030443 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030444 {
30445 switch (value)
30446 {
30447 case AttachmentStoreOp::eStore: return "Store";
30448 case AttachmentStoreOp::eDontCare: return "DontCare";
30449 default: return "invalid";
30450 }
30451 }
30452
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030453 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030454 {
30455 switch (value)
30456 {
30457 case ImageType::e1D: return "1D";
30458 case ImageType::e2D: return "2D";
30459 case ImageType::e3D: return "3D";
30460 default: return "invalid";
30461 }
30462 }
30463
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030464 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030465 {
30466 switch (value)
30467 {
30468 case ImageTiling::eOptimal: return "Optimal";
30469 case ImageTiling::eLinear: return "Linear";
30470 default: return "invalid";
30471 }
30472 }
30473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030474 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030475 {
30476 switch (value)
30477 {
30478 case ImageViewType::e1D: return "1D";
30479 case ImageViewType::e2D: return "2D";
30480 case ImageViewType::e3D: return "3D";
30481 case ImageViewType::eCube: return "Cube";
30482 case ImageViewType::e1DArray: return "1DArray";
30483 case ImageViewType::e2DArray: return "2DArray";
30484 case ImageViewType::eCubeArray: return "CubeArray";
30485 default: return "invalid";
30486 }
30487 }
30488
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030489 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030490 {
30491 switch (value)
30492 {
30493 case CommandBufferLevel::ePrimary: return "Primary";
30494 case CommandBufferLevel::eSecondary: return "Secondary";
30495 default: return "invalid";
30496 }
30497 }
30498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030499 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030500 {
30501 switch (value)
30502 {
30503 case ComponentSwizzle::eIdentity: return "Identity";
30504 case ComponentSwizzle::eZero: return "Zero";
30505 case ComponentSwizzle::eOne: return "One";
30506 case ComponentSwizzle::eR: return "R";
30507 case ComponentSwizzle::eG: return "G";
30508 case ComponentSwizzle::eB: return "B";
30509 case ComponentSwizzle::eA: return "A";
30510 default: return "invalid";
30511 }
30512 }
30513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030514 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030515 {
30516 switch (value)
30517 {
30518 case DescriptorType::eSampler: return "Sampler";
30519 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
30520 case DescriptorType::eSampledImage: return "SampledImage";
30521 case DescriptorType::eStorageImage: return "StorageImage";
30522 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
30523 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
30524 case DescriptorType::eUniformBuffer: return "UniformBuffer";
30525 case DescriptorType::eStorageBuffer: return "StorageBuffer";
30526 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
30527 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
30528 case DescriptorType::eInputAttachment: return "InputAttachment";
30529 default: return "invalid";
30530 }
30531 }
30532
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030533 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030534 {
30535 switch (value)
30536 {
30537 case QueryType::eOcclusion: return "Occlusion";
30538 case QueryType::ePipelineStatistics: return "PipelineStatistics";
30539 case QueryType::eTimestamp: return "Timestamp";
30540 default: return "invalid";
30541 }
30542 }
30543
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030544 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030545 {
30546 switch (value)
30547 {
30548 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
30549 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
30550 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
30551 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
30552 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
30553 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
30554 default: return "invalid";
30555 }
30556 }
30557
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030558 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030559 {
30560 switch (value)
30561 {
30562 case PipelineBindPoint::eGraphics: return "Graphics";
30563 case PipelineBindPoint::eCompute: return "Compute";
30564 default: return "invalid";
30565 }
30566 }
30567
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030568 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030569 {
30570 switch (value)
30571 {
30572 case PipelineCacheHeaderVersion::eOne: return "One";
30573 default: return "invalid";
30574 }
30575 }
30576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030577 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030578 {
30579 switch (value)
30580 {
30581 case PrimitiveTopology::ePointList: return "PointList";
30582 case PrimitiveTopology::eLineList: return "LineList";
30583 case PrimitiveTopology::eLineStrip: return "LineStrip";
30584 case PrimitiveTopology::eTriangleList: return "TriangleList";
30585 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
30586 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
30587 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
30588 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
30589 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
30590 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
30591 case PrimitiveTopology::ePatchList: return "PatchList";
30592 default: return "invalid";
30593 }
30594 }
30595
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030596 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030597 {
30598 switch (value)
30599 {
30600 case SharingMode::eExclusive: return "Exclusive";
30601 case SharingMode::eConcurrent: return "Concurrent";
30602 default: return "invalid";
30603 }
30604 }
30605
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030606 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030607 {
30608 switch (value)
30609 {
30610 case IndexType::eUint16: return "Uint16";
30611 case IndexType::eUint32: return "Uint32";
30612 default: return "invalid";
30613 }
30614 }
30615
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030616 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030617 {
30618 switch (value)
30619 {
30620 case Filter::eNearest: return "Nearest";
30621 case Filter::eLinear: return "Linear";
30622 case Filter::eCubicIMG: return "CubicIMG";
30623 default: return "invalid";
30624 }
30625 }
30626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030627 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030628 {
30629 switch (value)
30630 {
30631 case SamplerMipmapMode::eNearest: return "Nearest";
30632 case SamplerMipmapMode::eLinear: return "Linear";
30633 default: return "invalid";
30634 }
30635 }
30636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030637 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030638 {
30639 switch (value)
30640 {
30641 case SamplerAddressMode::eRepeat: return "Repeat";
30642 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
30643 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
30644 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
30645 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
30646 default: return "invalid";
30647 }
30648 }
30649
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030650 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030651 {
30652 switch (value)
30653 {
30654 case CompareOp::eNever: return "Never";
30655 case CompareOp::eLess: return "Less";
30656 case CompareOp::eEqual: return "Equal";
30657 case CompareOp::eLessOrEqual: return "LessOrEqual";
30658 case CompareOp::eGreater: return "Greater";
30659 case CompareOp::eNotEqual: return "NotEqual";
30660 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
30661 case CompareOp::eAlways: return "Always";
30662 default: return "invalid";
30663 }
30664 }
30665
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030666 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030667 {
30668 switch (value)
30669 {
30670 case PolygonMode::eFill: return "Fill";
30671 case PolygonMode::eLine: return "Line";
30672 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030673 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030674 default: return "invalid";
30675 }
30676 }
30677
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030678 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030679 {
30680 switch (value)
30681 {
30682 case CullModeFlagBits::eNone: return "None";
30683 case CullModeFlagBits::eFront: return "Front";
30684 case CullModeFlagBits::eBack: return "Back";
30685 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
30686 default: return "invalid";
30687 }
30688 }
30689
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030690 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030691 {
30692 if (!value) return "{}";
30693 std::string result;
30694 if (value & CullModeFlagBits::eNone) result += "None | ";
30695 if (value & CullModeFlagBits::eFront) result += "Front | ";
30696 if (value & CullModeFlagBits::eBack) result += "Back | ";
30697 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
30698 return "{" + result.substr(0, result.size() - 3) + "}";
30699 }
30700
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030701 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030702 {
30703 switch (value)
30704 {
30705 case FrontFace::eCounterClockwise: return "CounterClockwise";
30706 case FrontFace::eClockwise: return "Clockwise";
30707 default: return "invalid";
30708 }
30709 }
30710
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030711 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030712 {
30713 switch (value)
30714 {
30715 case BlendFactor::eZero: return "Zero";
30716 case BlendFactor::eOne: return "One";
30717 case BlendFactor::eSrcColor: return "SrcColor";
30718 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
30719 case BlendFactor::eDstColor: return "DstColor";
30720 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
30721 case BlendFactor::eSrcAlpha: return "SrcAlpha";
30722 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
30723 case BlendFactor::eDstAlpha: return "DstAlpha";
30724 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
30725 case BlendFactor::eConstantColor: return "ConstantColor";
30726 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
30727 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
30728 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
30729 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
30730 case BlendFactor::eSrc1Color: return "Src1Color";
30731 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
30732 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
30733 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
30734 default: return "invalid";
30735 }
30736 }
30737
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030738 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030739 {
30740 switch (value)
30741 {
30742 case BlendOp::eAdd: return "Add";
30743 case BlendOp::eSubtract: return "Subtract";
30744 case BlendOp::eReverseSubtract: return "ReverseSubtract";
30745 case BlendOp::eMin: return "Min";
30746 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030747 case BlendOp::eZeroEXT: return "ZeroEXT";
30748 case BlendOp::eSrcEXT: return "SrcEXT";
30749 case BlendOp::eDstEXT: return "DstEXT";
30750 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
30751 case BlendOp::eDstOverEXT: return "DstOverEXT";
30752 case BlendOp::eSrcInEXT: return "SrcInEXT";
30753 case BlendOp::eDstInEXT: return "DstInEXT";
30754 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
30755 case BlendOp::eDstOutEXT: return "DstOutEXT";
30756 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
30757 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
30758 case BlendOp::eXorEXT: return "XorEXT";
30759 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
30760 case BlendOp::eScreenEXT: return "ScreenEXT";
30761 case BlendOp::eOverlayEXT: return "OverlayEXT";
30762 case BlendOp::eDarkenEXT: return "DarkenEXT";
30763 case BlendOp::eLightenEXT: return "LightenEXT";
30764 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
30765 case BlendOp::eColorburnEXT: return "ColorburnEXT";
30766 case BlendOp::eHardlightEXT: return "HardlightEXT";
30767 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
30768 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
30769 case BlendOp::eExclusionEXT: return "ExclusionEXT";
30770 case BlendOp::eInvertEXT: return "InvertEXT";
30771 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
30772 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
30773 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
30774 case BlendOp::eVividlightEXT: return "VividlightEXT";
30775 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
30776 case BlendOp::ePinlightEXT: return "PinlightEXT";
30777 case BlendOp::eHardmixEXT: return "HardmixEXT";
30778 case BlendOp::eHslHueEXT: return "HslHueEXT";
30779 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
30780 case BlendOp::eHslColorEXT: return "HslColorEXT";
30781 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
30782 case BlendOp::ePlusEXT: return "PlusEXT";
30783 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
30784 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
30785 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
30786 case BlendOp::eMinusEXT: return "MinusEXT";
30787 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
30788 case BlendOp::eContrastEXT: return "ContrastEXT";
30789 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
30790 case BlendOp::eRedEXT: return "RedEXT";
30791 case BlendOp::eGreenEXT: return "GreenEXT";
30792 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030793 default: return "invalid";
30794 }
30795 }
30796
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030797 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030798 {
30799 switch (value)
30800 {
30801 case StencilOp::eKeep: return "Keep";
30802 case StencilOp::eZero: return "Zero";
30803 case StencilOp::eReplace: return "Replace";
30804 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
30805 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
30806 case StencilOp::eInvert: return "Invert";
30807 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
30808 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
30809 default: return "invalid";
30810 }
30811 }
30812
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030813 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030814 {
30815 switch (value)
30816 {
30817 case LogicOp::eClear: return "Clear";
30818 case LogicOp::eAnd: return "And";
30819 case LogicOp::eAndReverse: return "AndReverse";
30820 case LogicOp::eCopy: return "Copy";
30821 case LogicOp::eAndInverted: return "AndInverted";
30822 case LogicOp::eNoOp: return "NoOp";
30823 case LogicOp::eXor: return "Xor";
30824 case LogicOp::eOr: return "Or";
30825 case LogicOp::eNor: return "Nor";
30826 case LogicOp::eEquivalent: return "Equivalent";
30827 case LogicOp::eInvert: return "Invert";
30828 case LogicOp::eOrReverse: return "OrReverse";
30829 case LogicOp::eCopyInverted: return "CopyInverted";
30830 case LogicOp::eOrInverted: return "OrInverted";
30831 case LogicOp::eNand: return "Nand";
30832 case LogicOp::eSet: return "Set";
30833 default: return "invalid";
30834 }
30835 }
30836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030837 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030838 {
30839 switch (value)
30840 {
30841 case InternalAllocationType::eExecutable: return "Executable";
30842 default: return "invalid";
30843 }
30844 }
30845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030846 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030847 {
30848 switch (value)
30849 {
30850 case SystemAllocationScope::eCommand: return "Command";
30851 case SystemAllocationScope::eObject: return "Object";
30852 case SystemAllocationScope::eCache: return "Cache";
30853 case SystemAllocationScope::eDevice: return "Device";
30854 case SystemAllocationScope::eInstance: return "Instance";
30855 default: return "invalid";
30856 }
30857 }
30858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030859 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030860 {
30861 switch (value)
30862 {
30863 case PhysicalDeviceType::eOther: return "Other";
30864 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
30865 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
30866 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
30867 case PhysicalDeviceType::eCpu: return "Cpu";
30868 default: return "invalid";
30869 }
30870 }
30871
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030872 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030873 {
30874 switch (value)
30875 {
30876 case VertexInputRate::eVertex: return "Vertex";
30877 case VertexInputRate::eInstance: return "Instance";
30878 default: return "invalid";
30879 }
30880 }
30881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030882 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030883 {
30884 switch (value)
30885 {
30886 case Format::eUndefined: return "Undefined";
30887 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
30888 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
30889 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
30890 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
30891 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
30892 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
30893 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
30894 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
30895 case Format::eR8Unorm: return "R8Unorm";
30896 case Format::eR8Snorm: return "R8Snorm";
30897 case Format::eR8Uscaled: return "R8Uscaled";
30898 case Format::eR8Sscaled: return "R8Sscaled";
30899 case Format::eR8Uint: return "R8Uint";
30900 case Format::eR8Sint: return "R8Sint";
30901 case Format::eR8Srgb: return "R8Srgb";
30902 case Format::eR8G8Unorm: return "R8G8Unorm";
30903 case Format::eR8G8Snorm: return "R8G8Snorm";
30904 case Format::eR8G8Uscaled: return "R8G8Uscaled";
30905 case Format::eR8G8Sscaled: return "R8G8Sscaled";
30906 case Format::eR8G8Uint: return "R8G8Uint";
30907 case Format::eR8G8Sint: return "R8G8Sint";
30908 case Format::eR8G8Srgb: return "R8G8Srgb";
30909 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
30910 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
30911 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
30912 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
30913 case Format::eR8G8B8Uint: return "R8G8B8Uint";
30914 case Format::eR8G8B8Sint: return "R8G8B8Sint";
30915 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
30916 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
30917 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
30918 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
30919 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
30920 case Format::eB8G8R8Uint: return "B8G8R8Uint";
30921 case Format::eB8G8R8Sint: return "B8G8R8Sint";
30922 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
30923 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
30924 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
30925 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
30926 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
30927 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
30928 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
30929 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
30930 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
30931 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
30932 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
30933 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
30934 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
30935 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
30936 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
30937 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
30938 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
30939 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
30940 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
30941 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
30942 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
30943 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
30944 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
30945 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
30946 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
30947 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
30948 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
30949 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
30950 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
30951 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
30952 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
30953 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
30954 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
30955 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
30956 case Format::eR16Unorm: return "R16Unorm";
30957 case Format::eR16Snorm: return "R16Snorm";
30958 case Format::eR16Uscaled: return "R16Uscaled";
30959 case Format::eR16Sscaled: return "R16Sscaled";
30960 case Format::eR16Uint: return "R16Uint";
30961 case Format::eR16Sint: return "R16Sint";
30962 case Format::eR16Sfloat: return "R16Sfloat";
30963 case Format::eR16G16Unorm: return "R16G16Unorm";
30964 case Format::eR16G16Snorm: return "R16G16Snorm";
30965 case Format::eR16G16Uscaled: return "R16G16Uscaled";
30966 case Format::eR16G16Sscaled: return "R16G16Sscaled";
30967 case Format::eR16G16Uint: return "R16G16Uint";
30968 case Format::eR16G16Sint: return "R16G16Sint";
30969 case Format::eR16G16Sfloat: return "R16G16Sfloat";
30970 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
30971 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
30972 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
30973 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
30974 case Format::eR16G16B16Uint: return "R16G16B16Uint";
30975 case Format::eR16G16B16Sint: return "R16G16B16Sint";
30976 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
30977 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
30978 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
30979 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
30980 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
30981 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
30982 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
30983 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
30984 case Format::eR32Uint: return "R32Uint";
30985 case Format::eR32Sint: return "R32Sint";
30986 case Format::eR32Sfloat: return "R32Sfloat";
30987 case Format::eR32G32Uint: return "R32G32Uint";
30988 case Format::eR32G32Sint: return "R32G32Sint";
30989 case Format::eR32G32Sfloat: return "R32G32Sfloat";
30990 case Format::eR32G32B32Uint: return "R32G32B32Uint";
30991 case Format::eR32G32B32Sint: return "R32G32B32Sint";
30992 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
30993 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
30994 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
30995 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
30996 case Format::eR64Uint: return "R64Uint";
30997 case Format::eR64Sint: return "R64Sint";
30998 case Format::eR64Sfloat: return "R64Sfloat";
30999 case Format::eR64G64Uint: return "R64G64Uint";
31000 case Format::eR64G64Sint: return "R64G64Sint";
31001 case Format::eR64G64Sfloat: return "R64G64Sfloat";
31002 case Format::eR64G64B64Uint: return "R64G64B64Uint";
31003 case Format::eR64G64B64Sint: return "R64G64B64Sint";
31004 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
31005 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
31006 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
31007 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
31008 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
31009 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
31010 case Format::eD16Unorm: return "D16Unorm";
31011 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
31012 case Format::eD32Sfloat: return "D32Sfloat";
31013 case Format::eS8Uint: return "S8Uint";
31014 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
31015 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
31016 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
31017 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
31018 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
31019 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
31020 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
31021 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
31022 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
31023 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
31024 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
31025 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
31026 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
31027 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
31028 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
31029 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
31030 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
31031 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
31032 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
31033 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
31034 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
31035 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
31036 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
31037 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
31038 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
31039 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
31040 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
31041 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
31042 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
31043 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
31044 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
31045 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
31046 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
31047 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
31048 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
31049 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
31050 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
31051 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
31052 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
31053 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
31054 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
31055 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
31056 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
31057 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
31058 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
31059 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
31060 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
31061 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
31062 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
31063 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
31064 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
31065 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
31066 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
31067 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
31068 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
31069 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
31070 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060031071 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
31072 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
31073 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
31074 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
31075 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
31076 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
31077 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
31078 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031079 default: return "invalid";
31080 }
31081 }
31082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031083 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031084 {
31085 switch (value)
31086 {
31087 case StructureType::eApplicationInfo: return "ApplicationInfo";
31088 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
31089 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
31090 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
31091 case StructureType::eSubmitInfo: return "SubmitInfo";
31092 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
31093 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
31094 case StructureType::eBindSparseInfo: return "BindSparseInfo";
31095 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
31096 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
31097 case StructureType::eEventCreateInfo: return "EventCreateInfo";
31098 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
31099 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
31100 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
31101 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
31102 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
31103 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
31104 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
31105 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
31106 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
31107 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
31108 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
31109 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
31110 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
31111 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
31112 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
31113 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
31114 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
31115 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
31116 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
31117 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
31118 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
31119 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
31120 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
31121 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
31122 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
31123 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
31124 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
31125 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
31126 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
31127 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
31128 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
31129 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
31130 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
31131 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
31132 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
31133 case StructureType::eMemoryBarrier: return "MemoryBarrier";
31134 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
31135 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
31136 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
31137 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
31138 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
31139 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
31140 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
31141 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
31142 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
31143 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
31144 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
31145 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
31146 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
31147 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
31148 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
31149 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
31150 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
31151 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
31152 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
31153 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
31154 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031155 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070031156 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
31157 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
31158 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060031159 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
31160 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
31161 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
31162 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
31163 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070031164 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
31165 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
31166 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
31167 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
31168 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
31169 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
31170 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
31171 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
31172 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070031173 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
31174 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
31175 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
31176 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
31177 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
31178 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
31179 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
31180 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
31181 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
31182 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
31183 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
31184 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
31185 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060031186 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070031187 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070031188 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
31189 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031190 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
31191 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
31192 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
31193 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
31194 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
31195 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
31196 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
31197 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
31198 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
31199 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
31200 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
31201 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
31202 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
31203 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
31204 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
31205 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
31206 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
31207 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
31208 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
31209 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
31210 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
31211 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
31212 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
31213 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
31214 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031215 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031216 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060031217 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031218 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031219 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
31220 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
31221 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
31222 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
31223 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
31224 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070031225 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070031226 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
31227 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
31228 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
31229 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
31230 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031231 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070031232 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
31233 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
31234 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
31235 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031236 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060031237 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031238 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
31239 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
31240 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
31241 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
31242 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
31243 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
31244 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
31245 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060031246 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
31247 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
31248 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031249 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070031250 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
31251 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031252 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
31253 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031254 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
31255 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060031256 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
31257 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
31258 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
31259 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
31260 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031261 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
31262 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
31263 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
31264 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
31265 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031266 default: return "invalid";
31267 }
31268 }
31269
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031270 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031271 {
31272 switch (value)
31273 {
31274 case SubpassContents::eInline: return "Inline";
31275 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
31276 default: return "invalid";
31277 }
31278 }
31279
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031280 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031281 {
31282 switch (value)
31283 {
31284 case DynamicState::eViewport: return "Viewport";
31285 case DynamicState::eScissor: return "Scissor";
31286 case DynamicState::eLineWidth: return "LineWidth";
31287 case DynamicState::eDepthBias: return "DepthBias";
31288 case DynamicState::eBlendConstants: return "BlendConstants";
31289 case DynamicState::eDepthBounds: return "DepthBounds";
31290 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
31291 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
31292 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070031293 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
31294 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
31295 default: return "invalid";
31296 }
31297 }
31298
31299 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
31300 {
31301 switch (value)
31302 {
31303 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
31304 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031305 default: return "invalid";
31306 }
31307 }
31308
Mark Lobodzinski54385432017-05-15 10:27:52 -060031309 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
31310 {
31311 switch (value)
31312 {
31313 case ObjectType::eUnknown: return "Unknown";
31314 case ObjectType::eInstance: return "Instance";
31315 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
31316 case ObjectType::eDevice: return "Device";
31317 case ObjectType::eQueue: return "Queue";
31318 case ObjectType::eSemaphore: return "Semaphore";
31319 case ObjectType::eCommandBuffer: return "CommandBuffer";
31320 case ObjectType::eFence: return "Fence";
31321 case ObjectType::eDeviceMemory: return "DeviceMemory";
31322 case ObjectType::eBuffer: return "Buffer";
31323 case ObjectType::eImage: return "Image";
31324 case ObjectType::eEvent: return "Event";
31325 case ObjectType::eQueryPool: return "QueryPool";
31326 case ObjectType::eBufferView: return "BufferView";
31327 case ObjectType::eImageView: return "ImageView";
31328 case ObjectType::eShaderModule: return "ShaderModule";
31329 case ObjectType::ePipelineCache: return "PipelineCache";
31330 case ObjectType::ePipelineLayout: return "PipelineLayout";
31331 case ObjectType::eRenderPass: return "RenderPass";
31332 case ObjectType::ePipeline: return "Pipeline";
31333 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
31334 case ObjectType::eSampler: return "Sampler";
31335 case ObjectType::eDescriptorPool: return "DescriptorPool";
31336 case ObjectType::eDescriptorSet: return "DescriptorSet";
31337 case ObjectType::eFramebuffer: return "Framebuffer";
31338 case ObjectType::eCommandPool: return "CommandPool";
31339 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
31340 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
31341 case ObjectType::eDisplayKHR: return "DisplayKHR";
31342 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
31343 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
31344 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
31345 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
31346 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
31347 default: return "invalid";
31348 }
31349 }
31350
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031351 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031352 {
31353 switch (value)
31354 {
31355 case QueueFlagBits::eGraphics: return "Graphics";
31356 case QueueFlagBits::eCompute: return "Compute";
31357 case QueueFlagBits::eTransfer: return "Transfer";
31358 case QueueFlagBits::eSparseBinding: return "SparseBinding";
31359 default: return "invalid";
31360 }
31361 }
31362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031363 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031364 {
31365 if (!value) return "{}";
31366 std::string result;
31367 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
31368 if (value & QueueFlagBits::eCompute) result += "Compute | ";
31369 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
31370 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
31371 return "{" + result.substr(0, result.size() - 3) + "}";
31372 }
31373
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031374 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031375 {
31376 switch (value)
31377 {
31378 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
31379 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
31380 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
31381 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
31382 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
31383 default: return "invalid";
31384 }
31385 }
31386
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031387 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031388 {
31389 if (!value) return "{}";
31390 std::string result;
31391 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
31392 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
31393 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
31394 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
31395 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
31396 return "{" + result.substr(0, result.size() - 3) + "}";
31397 }
31398
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031399 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031400 {
31401 switch (value)
31402 {
31403 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070031404 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031405 default: return "invalid";
31406 }
31407 }
31408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031409 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031410 {
31411 if (!value) return "{}";
31412 std::string result;
31413 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070031414 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031415 return "{" + result.substr(0, result.size() - 3) + "}";
31416 }
31417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031418 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031419 {
31420 switch (value)
31421 {
31422 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
31423 case AccessFlagBits::eIndexRead: return "IndexRead";
31424 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
31425 case AccessFlagBits::eUniformRead: return "UniformRead";
31426 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
31427 case AccessFlagBits::eShaderRead: return "ShaderRead";
31428 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
31429 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
31430 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
31431 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
31432 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
31433 case AccessFlagBits::eTransferRead: return "TransferRead";
31434 case AccessFlagBits::eTransferWrite: return "TransferWrite";
31435 case AccessFlagBits::eHostRead: return "HostRead";
31436 case AccessFlagBits::eHostWrite: return "HostWrite";
31437 case AccessFlagBits::eMemoryRead: return "MemoryRead";
31438 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031439 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
31440 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031441 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031442 default: return "invalid";
31443 }
31444 }
31445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031446 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031447 {
31448 if (!value) return "{}";
31449 std::string result;
31450 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
31451 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
31452 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
31453 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
31454 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
31455 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
31456 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
31457 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
31458 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
31459 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
31460 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
31461 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
31462 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
31463 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
31464 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
31465 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
31466 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031467 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
31468 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031469 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031470 return "{" + result.substr(0, result.size() - 3) + "}";
31471 }
31472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031473 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031474 {
31475 switch (value)
31476 {
31477 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
31478 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
31479 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
31480 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
31481 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
31482 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
31483 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
31484 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
31485 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
31486 default: return "invalid";
31487 }
31488 }
31489
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031490 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031491 {
31492 if (!value) return "{}";
31493 std::string result;
31494 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
31495 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
31496 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
31497 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
31498 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
31499 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
31500 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
31501 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
31502 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
31503 return "{" + result.substr(0, result.size() - 3) + "}";
31504 }
31505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031506 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031507 {
31508 switch (value)
31509 {
31510 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
31511 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
31512 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
31513 default: return "invalid";
31514 }
31515 }
31516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031517 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031518 {
31519 if (!value) return "{}";
31520 std::string result;
31521 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
31522 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
31523 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
31524 return "{" + result.substr(0, result.size() - 3) + "}";
31525 }
31526
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031527 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031528 {
31529 switch (value)
31530 {
31531 case ShaderStageFlagBits::eVertex: return "Vertex";
31532 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
31533 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
31534 case ShaderStageFlagBits::eGeometry: return "Geometry";
31535 case ShaderStageFlagBits::eFragment: return "Fragment";
31536 case ShaderStageFlagBits::eCompute: return "Compute";
31537 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
31538 case ShaderStageFlagBits::eAll: return "All";
31539 default: return "invalid";
31540 }
31541 }
31542
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031543 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031544 {
31545 if (!value) return "{}";
31546 std::string result;
31547 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
31548 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
31549 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
31550 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
31551 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
31552 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
31553 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
31554 if (value & ShaderStageFlagBits::eAll) result += "All | ";
31555 return "{" + result.substr(0, result.size() - 3) + "}";
31556 }
31557
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031558 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031559 {
31560 switch (value)
31561 {
31562 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
31563 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
31564 case ImageUsageFlagBits::eSampled: return "Sampled";
31565 case ImageUsageFlagBits::eStorage: return "Storage";
31566 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
31567 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
31568 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
31569 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
31570 default: return "invalid";
31571 }
31572 }
31573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031574 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031575 {
31576 if (!value) return "{}";
31577 std::string result;
31578 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
31579 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
31580 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
31581 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
31582 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
31583 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
31584 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
31585 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
31586 return "{" + result.substr(0, result.size() - 3) + "}";
31587 }
31588
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031589 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031590 {
31591 switch (value)
31592 {
31593 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
31594 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
31595 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
31596 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
31597 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070031598 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070031599 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031600 default: return "invalid";
31601 }
31602 }
31603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031604 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031605 {
31606 if (!value) return "{}";
31607 std::string result;
31608 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
31609 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
31610 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
31611 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
31612 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070031613 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070031614 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031615 return "{" + result.substr(0, result.size() - 3) + "}";
31616 }
31617
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031618 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031619 {
31620 switch (value)
31621 {
31622 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
31623 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
31624 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070031625 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
31626 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031627 default: return "invalid";
31628 }
31629 }
31630
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031631 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031632 {
31633 if (!value) return "{}";
31634 std::string result;
31635 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
31636 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
31637 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070031638 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
31639 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031640 return "{" + result.substr(0, result.size() - 3) + "}";
31641 }
31642
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031643 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031644 {
31645 switch (value)
31646 {
31647 case ColorComponentFlagBits::eR: return "R";
31648 case ColorComponentFlagBits::eG: return "G";
31649 case ColorComponentFlagBits::eB: return "B";
31650 case ColorComponentFlagBits::eA: return "A";
31651 default: return "invalid";
31652 }
31653 }
31654
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031655 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031656 {
31657 if (!value) return "{}";
31658 std::string result;
31659 if (value & ColorComponentFlagBits::eR) result += "R | ";
31660 if (value & ColorComponentFlagBits::eG) result += "G | ";
31661 if (value & ColorComponentFlagBits::eB) result += "B | ";
31662 if (value & ColorComponentFlagBits::eA) result += "A | ";
31663 return "{" + result.substr(0, result.size() - 3) + "}";
31664 }
31665
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031666 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031667 {
31668 switch (value)
31669 {
31670 case FenceCreateFlagBits::eSignaled: return "Signaled";
31671 default: return "invalid";
31672 }
31673 }
31674
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031675 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031676 {
31677 if (!value) return "{}";
31678 std::string result;
31679 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
31680 return "{" + result.substr(0, result.size() - 3) + "}";
31681 }
31682
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031683 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031684 {
31685 switch (value)
31686 {
31687 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
31688 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
31689 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
31690 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
31691 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
31692 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
31693 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
31694 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
31695 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
31696 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
31697 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
31698 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
31699 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
31700 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070031701 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
31702 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031703 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031704 default: return "invalid";
31705 }
31706 }
31707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031708 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031709 {
31710 if (!value) return "{}";
31711 std::string result;
31712 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
31713 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
31714 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
31715 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
31716 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
31717 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
31718 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
31719 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
31720 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
31721 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
31722 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
31723 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
31724 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
31725 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070031726 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
31727 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031728 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031729 return "{" + result.substr(0, result.size() - 3) + "}";
31730 }
31731
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031732 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031733 {
31734 switch (value)
31735 {
31736 case QueryControlFlagBits::ePrecise: return "Precise";
31737 default: return "invalid";
31738 }
31739 }
31740
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031741 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031742 {
31743 if (!value) return "{}";
31744 std::string result;
31745 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
31746 return "{" + result.substr(0, result.size() - 3) + "}";
31747 }
31748
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031749 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031750 {
31751 switch (value)
31752 {
31753 case QueryResultFlagBits::e64: return "64";
31754 case QueryResultFlagBits::eWait: return "Wait";
31755 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
31756 case QueryResultFlagBits::ePartial: return "Partial";
31757 default: return "invalid";
31758 }
31759 }
31760
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031761 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031762 {
31763 if (!value) return "{}";
31764 std::string result;
31765 if (value & QueryResultFlagBits::e64) result += "64 | ";
31766 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
31767 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
31768 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
31769 return "{" + result.substr(0, result.size() - 3) + "}";
31770 }
31771
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031772 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031773 {
31774 switch (value)
31775 {
31776 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
31777 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
31778 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
31779 default: return "invalid";
31780 }
31781 }
31782
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031783 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031784 {
31785 if (!value) return "{}";
31786 std::string result;
31787 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
31788 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
31789 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
31790 return "{" + result.substr(0, result.size() - 3) + "}";
31791 }
31792
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031793 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031794 {
31795 switch (value)
31796 {
31797 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
31798 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
31799 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
31800 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
31801 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
31802 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
31803 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
31804 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
31805 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
31806 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
31807 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
31808 default: return "invalid";
31809 }
31810 }
31811
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031812 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031813 {
31814 if (!value) return "{}";
31815 std::string result;
31816 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
31817 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
31818 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
31819 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
31820 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
31821 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
31822 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
31823 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
31824 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
31825 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
31826 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
31827 return "{" + result.substr(0, result.size() - 3) + "}";
31828 }
31829
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031830 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031831 {
31832 switch (value)
31833 {
31834 case ImageAspectFlagBits::eColor: return "Color";
31835 case ImageAspectFlagBits::eDepth: return "Depth";
31836 case ImageAspectFlagBits::eStencil: return "Stencil";
31837 case ImageAspectFlagBits::eMetadata: return "Metadata";
31838 default: return "invalid";
31839 }
31840 }
31841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031842 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031843 {
31844 if (!value) return "{}";
31845 std::string result;
31846 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
31847 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
31848 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
31849 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
31850 return "{" + result.substr(0, result.size() - 3) + "}";
31851 }
31852
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031853 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031854 {
31855 switch (value)
31856 {
31857 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
31858 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
31859 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
31860 default: return "invalid";
31861 }
31862 }
31863
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031864 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031865 {
31866 if (!value) return "{}";
31867 std::string result;
31868 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
31869 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
31870 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
31871 return "{" + result.substr(0, result.size() - 3) + "}";
31872 }
31873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031874 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031875 {
31876 switch (value)
31877 {
31878 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
31879 default: return "invalid";
31880 }
31881 }
31882
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031883 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031884 {
31885 if (!value) return "{}";
31886 std::string result;
31887 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
31888 return "{" + result.substr(0, result.size() - 3) + "}";
31889 }
31890
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031891 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031892 {
31893 switch (value)
31894 {
31895 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
31896 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
31897 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
31898 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
31899 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
31900 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
31901 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
31902 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
31903 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
31904 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
31905 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
31906 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
31907 case PipelineStageFlagBits::eTransfer: return "Transfer";
31908 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
31909 case PipelineStageFlagBits::eHost: return "Host";
31910 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
31911 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031912 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031913 default: return "invalid";
31914 }
31915 }
31916
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031917 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031918 {
31919 if (!value) return "{}";
31920 std::string result;
31921 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
31922 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
31923 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
31924 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
31925 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
31926 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
31927 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
31928 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
31929 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
31930 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
31931 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
31932 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
31933 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
31934 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
31935 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
31936 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
31937 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031938 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031939 return "{" + result.substr(0, result.size() - 3) + "}";
31940 }
31941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031942 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031943 {
31944 switch (value)
31945 {
31946 case CommandPoolCreateFlagBits::eTransient: return "Transient";
31947 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
31948 default: return "invalid";
31949 }
31950 }
31951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031952 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031953 {
31954 if (!value) return "{}";
31955 std::string result;
31956 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
31957 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
31958 return "{" + result.substr(0, result.size() - 3) + "}";
31959 }
31960
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031961 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031962 {
31963 switch (value)
31964 {
31965 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
31966 default: return "invalid";
31967 }
31968 }
31969
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031970 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031971 {
31972 if (!value) return "{}";
31973 std::string result;
31974 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
31975 return "{" + result.substr(0, result.size() - 3) + "}";
31976 }
31977
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031978 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031979 {
31980 switch (value)
31981 {
31982 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
31983 default: return "invalid";
31984 }
31985 }
31986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031987 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031988 {
31989 if (!value) return "{}";
31990 std::string result;
31991 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
31992 return "{" + result.substr(0, result.size() - 3) + "}";
31993 }
31994
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031995 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031996 {
31997 switch (value)
31998 {
31999 case SampleCountFlagBits::e1: return "1";
32000 case SampleCountFlagBits::e2: return "2";
32001 case SampleCountFlagBits::e4: return "4";
32002 case SampleCountFlagBits::e8: return "8";
32003 case SampleCountFlagBits::e16: return "16";
32004 case SampleCountFlagBits::e32: return "32";
32005 case SampleCountFlagBits::e64: return "64";
32006 default: return "invalid";
32007 }
32008 }
32009
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032010 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032011 {
32012 if (!value) return "{}";
32013 std::string result;
32014 if (value & SampleCountFlagBits::e1) result += "1 | ";
32015 if (value & SampleCountFlagBits::e2) result += "2 | ";
32016 if (value & SampleCountFlagBits::e4) result += "4 | ";
32017 if (value & SampleCountFlagBits::e8) result += "8 | ";
32018 if (value & SampleCountFlagBits::e16) result += "16 | ";
32019 if (value & SampleCountFlagBits::e32) result += "32 | ";
32020 if (value & SampleCountFlagBits::e64) result += "64 | ";
32021 return "{" + result.substr(0, result.size() - 3) + "}";
32022 }
32023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032024 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032025 {
32026 switch (value)
32027 {
32028 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
32029 default: return "invalid";
32030 }
32031 }
32032
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032033 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032034 {
32035 if (!value) return "{}";
32036 std::string result;
32037 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
32038 return "{" + result.substr(0, result.size() - 3) + "}";
32039 }
32040
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032041 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032042 {
32043 switch (value)
32044 {
32045 case StencilFaceFlagBits::eFront: return "Front";
32046 case StencilFaceFlagBits::eBack: return "Back";
32047 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
32048 default: return "invalid";
32049 }
32050 }
32051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032052 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032053 {
32054 if (!value) return "{}";
32055 std::string result;
32056 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
32057 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
32058 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
32059 return "{" + result.substr(0, result.size() - 3) + "}";
32060 }
32061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032062 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032063 {
32064 switch (value)
32065 {
32066 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
32067 default: return "invalid";
32068 }
32069 }
32070
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032071 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032072 {
32073 if (!value) return "{}";
32074 std::string result;
32075 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
32076 return "{" + result.substr(0, result.size() - 3) + "}";
32077 }
32078
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032079 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032080 {
32081 switch (value)
32082 {
32083 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070032084 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
32085 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032086 default: return "invalid";
32087 }
32088 }
32089
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032090 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032091 {
32092 if (!value) return "{}";
32093 std::string result;
32094 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070032095 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
32096 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032097 return "{" + result.substr(0, result.size() - 3) + "}";
32098 }
32099
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032100 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032101 {
32102 switch (value)
32103 {
32104 case PresentModeKHR::eImmediate: return "Immediate";
32105 case PresentModeKHR::eMailbox: return "Mailbox";
32106 case PresentModeKHR::eFifo: return "Fifo";
32107 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032108 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
32109 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032110 default: return "invalid";
32111 }
32112 }
32113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032114 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032115 {
32116 switch (value)
32117 {
32118 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060032119 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
32120 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
32121 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
32122 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
32123 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
32124 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
32125 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
32126 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
32127 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
32128 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
32129 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
32130 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
32131 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032132 default: return "invalid";
32133 }
32134 }
32135
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032136 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032137 {
32138 switch (value)
32139 {
32140 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
32141 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
32142 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
32143 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
32144 default: return "invalid";
32145 }
32146 }
32147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032148 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032149 {
32150 if (!value) return "{}";
32151 std::string result;
32152 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
32153 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
32154 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
32155 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
32156 return "{" + result.substr(0, result.size() - 3) + "}";
32157 }
32158
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032159 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032160 {
32161 switch (value)
32162 {
32163 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
32164 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
32165 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
32166 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
32167 default: return "invalid";
32168 }
32169 }
32170
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032171 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032172 {
32173 if (!value) return "{}";
32174 std::string result;
32175 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
32176 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
32177 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
32178 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
32179 return "{" + result.substr(0, result.size() - 3) + "}";
32180 }
32181
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032182 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032183 {
32184 switch (value)
32185 {
32186 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
32187 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
32188 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
32189 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
32190 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
32191 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
32192 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
32193 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
32194 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
32195 default: return "invalid";
32196 }
32197 }
32198
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032199 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032200 {
32201 if (!value) return "{}";
32202 std::string result;
32203 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
32204 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
32205 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
32206 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
32207 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
32208 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
32209 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
32210 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
32211 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
32212 return "{" + result.substr(0, result.size() - 3) + "}";
32213 }
32214
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032215 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032216 {
32217 switch (value)
32218 {
32219 case DebugReportFlagBitsEXT::eInformation: return "Information";
32220 case DebugReportFlagBitsEXT::eWarning: return "Warning";
32221 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
32222 case DebugReportFlagBitsEXT::eError: return "Error";
32223 case DebugReportFlagBitsEXT::eDebug: return "Debug";
32224 default: return "invalid";
32225 }
32226 }
32227
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032228 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032229 {
32230 if (!value) return "{}";
32231 std::string result;
32232 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
32233 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
32234 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
32235 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
32236 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
32237 return "{" + result.substr(0, result.size() - 3) + "}";
32238 }
32239
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032240 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032241 {
32242 switch (value)
32243 {
32244 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
32245 case DebugReportObjectTypeEXT::eInstance: return "Instance";
32246 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
32247 case DebugReportObjectTypeEXT::eDevice: return "Device";
32248 case DebugReportObjectTypeEXT::eQueue: return "Queue";
32249 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
32250 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
32251 case DebugReportObjectTypeEXT::eFence: return "Fence";
32252 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
32253 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
32254 case DebugReportObjectTypeEXT::eImage: return "Image";
32255 case DebugReportObjectTypeEXT::eEvent: return "Event";
32256 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
32257 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
32258 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
32259 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
32260 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
32261 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
32262 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
32263 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
32264 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
32265 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
32266 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
32267 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
32268 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
32269 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
32270 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
32271 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032272 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032273 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
32274 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
32275 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
32276 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032277 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032278 default: return "invalid";
32279 }
32280 }
32281
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032282 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032283 {
32284 switch (value)
32285 {
32286 case RasterizationOrderAMD::eStrict: return "Strict";
32287 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
32288 default: return "invalid";
32289 }
32290 }
32291
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032292 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032293 {
32294 switch (value)
32295 {
32296 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
32297 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32298 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
32299 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
32300 default: return "invalid";
32301 }
32302 }
32303
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032304 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032305 {
32306 if (!value) return "{}";
32307 std::string result;
32308 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
32309 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32310 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
32311 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
32312 return "{" + result.substr(0, result.size() - 3) + "}";
32313 }
32314
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032315 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032316 {
32317 switch (value)
32318 {
32319 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
32320 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
32321 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
32322 default: return "invalid";
32323 }
32324 }
32325
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032326 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060032327 {
32328 if (!value) return "{}";
32329 std::string result;
32330 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
32331 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
32332 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
32333 return "{" + result.substr(0, result.size() - 3) + "}";
32334 }
32335
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032336 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060032337 {
32338 switch (value)
32339 {
32340 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032341 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060032342 default: return "invalid";
32343 }
32344 }
32345
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032346 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
32347 {
32348 switch (value)
32349 {
32350 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
32351 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
32352 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
32353 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
32354 default: return "invalid";
32355 }
32356 }
32357
32358 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
32359 {
32360 if (!value) return "{}";
32361 std::string result;
32362 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
32363 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
32364 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
32365 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
32366 return "{" + result.substr(0, result.size() - 3) + "}";
32367 }
32368
32369 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
32370 {
32371 switch (value)
32372 {
32373 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
32374 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
32375 default: return "invalid";
32376 }
32377 }
32378
32379 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
32380 {
32381 if (!value) return "{}";
32382 std::string result;
32383 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
32384 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
32385 return "{" + result.substr(0, result.size() - 3) + "}";
32386 }
32387
32388 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
32389 {
32390 switch (value)
32391 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060032392 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
32393 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
32394 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
32395 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
32396 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
32397 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
32398 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
32399 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032400 default: return "invalid";
32401 }
32402 }
32403
32404 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
32405 {
32406 switch (value)
32407 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060032408 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
32409 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
32410 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
32411 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
32412 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032413 default: return "invalid";
32414 }
32415 }
32416
Mark Young0f183a82017-02-28 09:58:04 -070032417 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
32418 {
32419 switch (value)
32420 {
32421 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
32422 default: return "invalid";
32423 }
32424 }
32425
32426 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
32427 {
32428 if (!value) return "{}";
32429 std::string result;
32430 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
32431 return "{" + result.substr(0, result.size() - 3) + "}";
32432 }
32433
Mark Youngabc2d6e2017-07-07 07:59:56 -060032434 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032435 {
32436 switch (value)
32437 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032438 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32439 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32440 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32441 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
32442 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
32443 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
32444 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070032445 default: return "invalid";
32446 }
32447 }
32448
Mark Youngabc2d6e2017-07-07 07:59:56 -060032449 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032450 {
32451 if (!value) return "{}";
32452 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032453 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32454 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32455 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32456 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
32457 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
32458 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
32459 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070032460 return "{" + result.substr(0, result.size() - 3) + "}";
32461 }
32462
Mark Youngabc2d6e2017-07-07 07:59:56 -060032463 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032464 {
32465 switch (value)
32466 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032467 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
32468 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
32469 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070032470 default: return "invalid";
32471 }
32472 }
32473
Mark Youngabc2d6e2017-07-07 07:59:56 -060032474 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032475 {
32476 if (!value) return "{}";
32477 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032478 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
32479 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32480 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070032481 return "{" + result.substr(0, result.size() - 3) + "}";
32482 }
32483
Mark Youngabc2d6e2017-07-07 07:59:56 -060032484 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032485 {
32486 switch (value)
32487 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032488 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32489 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32490 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32491 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
32492 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070032493 default: return "invalid";
32494 }
32495 }
32496
Mark Youngabc2d6e2017-07-07 07:59:56 -060032497 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032498 {
32499 if (!value) return "{}";
32500 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032501 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32502 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32503 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32504 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
32505 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070032506 return "{" + result.substr(0, result.size() - 3) + "}";
32507 }
32508
Mark Youngabc2d6e2017-07-07 07:59:56 -060032509 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032510 {
32511 switch (value)
32512 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060032513 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
32514 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070032515 default: return "invalid";
32516 }
32517 }
32518
Mark Youngabc2d6e2017-07-07 07:59:56 -060032519 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070032520 {
32521 if (!value) return "{}";
32522 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060032523 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32524 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
32525 return "{" + result.substr(0, result.size() - 3) + "}";
32526 }
32527
32528 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
32529 {
32530 switch (value)
32531 {
32532 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
32533 default: return "invalid";
32534 }
32535 }
32536
32537 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
32538 {
32539 if (!value) return "{}";
32540 std::string result;
32541 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
32542 return "{" + result.substr(0, result.size() - 3) + "}";
32543 }
32544
32545 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
32546 {
32547 switch (value)
32548 {
32549 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
32550 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
32551 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
32552 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
32553 default: return "invalid";
32554 }
32555 }
32556
32557 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
32558 {
32559 if (!value) return "{}";
32560 std::string result;
32561 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
32562 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
32563 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
32564 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
32565 return "{" + result.substr(0, result.size() - 3) + "}";
32566 }
32567
32568 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
32569 {
32570 switch (value)
32571 {
32572 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
32573 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
32574 default: return "invalid";
32575 }
32576 }
32577
32578 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
32579 {
32580 if (!value) return "{}";
32581 std::string result;
32582 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
32583 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
32584 return "{" + result.substr(0, result.size() - 3) + "}";
32585 }
32586
32587 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
32588 {
32589 switch (value)
32590 {
32591 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
32592 default: return "invalid";
32593 }
32594 }
32595
32596 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
32597 {
32598 if (!value) return "{}";
32599 std::string result;
32600 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070032601 return "{" + result.substr(0, result.size() - 3) + "}";
32602 }
32603
Mark Young39389872017-01-19 21:10:49 -070032604 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
32605 {
32606 switch (value)
32607 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060032608 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070032609 default: return "invalid";
32610 }
32611 }
32612
32613 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
32614 {
32615 if (!value) return "{}";
32616 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060032617 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070032618 return "{" + result.substr(0, result.size() - 3) + "}";
32619 }
32620
32621 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
32622 {
32623 switch (value)
32624 {
32625 case DisplayPowerStateEXT::eOff: return "Off";
32626 case DisplayPowerStateEXT::eSuspend: return "Suspend";
32627 case DisplayPowerStateEXT::eOn: return "On";
32628 default: return "invalid";
32629 }
32630 }
32631
32632 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
32633 {
32634 switch (value)
32635 {
32636 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
32637 default: return "invalid";
32638 }
32639 }
32640
32641 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
32642 {
32643 switch (value)
32644 {
32645 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
32646 default: return "invalid";
32647 }
32648 }
32649
Mark Young0f183a82017-02-28 09:58:04 -070032650 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
32651 {
32652 switch (value)
32653 {
32654 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
32655 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
32656 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
32657 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
32658 default: return "invalid";
32659 }
32660 }
32661
32662 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
32663 {
32664 if (!value) return "{}";
32665 std::string result;
32666 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
32667 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
32668 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
32669 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
32670 return "{" + result.substr(0, result.size() - 3) + "}";
32671 }
32672
32673 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
32674 {
32675 switch (value)
32676 {
32677 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
32678 default: return "invalid";
32679 }
32680 }
32681
32682 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
32683 {
32684 if (!value) return "{}";
32685 std::string result;
32686 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
32687 return "{" + result.substr(0, result.size() - 3) + "}";
32688 }
32689
32690 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
32691 {
32692 switch (value)
32693 {
32694 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
32695 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
32696 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
32697 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
32698 default: return "invalid";
32699 }
32700 }
32701
32702 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
32703 {
32704 if (!value) return "{}";
32705 std::string result;
32706 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
32707 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
32708 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
32709 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
32710 return "{" + result.substr(0, result.size() - 3) + "}";
32711 }
32712
32713 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
32714 {
32715 switch (value)
32716 {
32717 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
32718 default: return "invalid";
32719 }
32720 }
32721
32722 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
32723 {
32724 if (!value) return "{}";
32725 std::string result;
32726 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
32727 return "{" + result.substr(0, result.size() - 3) + "}";
32728 }
32729
32730 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
32731 {
32732 switch (value)
32733 {
32734 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
32735 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
32736 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
32737 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
32738 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
32739 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
32740 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
32741 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
32742 default: return "invalid";
32743 }
32744 }
32745
32746 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
32747 {
32748 switch (value)
32749 {
32750 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
32751 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
32752 default: return "invalid";
32753 }
32754 }
32755
32756 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
32757 {
32758 switch (value)
32759 {
32760 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
32761 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
32762 default: return "invalid";
32763 }
32764 }
32765
32766 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
32767 {
32768 if (!value) return "{}";
32769 std::string result;
32770 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
32771 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
32772 return "{" + result.substr(0, result.size() - 3) + "}";
32773 }
32774
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032775 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
32776 {
32777 switch (value)
32778 {
32779 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
32780 case SamplerReductionModeEXT::eMin: return "Min";
32781 case SamplerReductionModeEXT::eMax: return "Max";
32782 default: return "invalid";
32783 }
32784 }
32785
32786 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
32787 {
32788 switch (value)
32789 {
32790 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
32791 case BlendOverlapEXT::eDisjoint: return "Disjoint";
32792 case BlendOverlapEXT::eConjoint: return "Conjoint";
32793 default: return "invalid";
32794 }
32795 }
32796
32797 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
32798 {
32799 switch (value)
32800 {
32801 case CoverageModulationModeNV::eNone: return "None";
32802 case CoverageModulationModeNV::eRgb: return "Rgb";
32803 case CoverageModulationModeNV::eAlpha: return "Alpha";
32804 case CoverageModulationModeNV::eRgba: return "Rgba";
32805 default: return "invalid";
32806 }
32807 }
32808
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032809} // namespace vk
32810
32811#endif