blob: a6df874131e1960ec32909cf51594004c07fff6c [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 Lobodzinskie5b2b712017-06-28 14:58:27 -060036static_assert( VK_HEADER_VERSION == 53 , "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,
456 eErrorInvalidExternalHandleKHX = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX
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 Young0f183a82017-02-28 09:58:04 -0700489 case Result::eErrorInvalidExternalHandleKHX: return "ErrorInvalidExternalHandleKHX";
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 };
726 class InvalidExternalHandleKHXError : public SystemError
727 {
728 public:
729 InvalidExternalHandleKHXError( std::string const& message )
730 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHX ), message ) {}
731 InvalidExternalHandleKHXError( char const * message )
732 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHX ), message ) {}
733 };
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 );
759 case Result::eErrorInvalidExternalHandleKHX: throw InvalidExternalHandleKHXError ( message );
760 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,
6479 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6480 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6481 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6482 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6483 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006484 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6485 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6486 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6487 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6488 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6489 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6490 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6491 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6492 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6493 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6494 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6495 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6496 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6497 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6498 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6499 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6500 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006501 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006502 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006503 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6504 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6505 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6506 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6507 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006508 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006509 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006510 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6511 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6512 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6513 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006514 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006515 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006516 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6517 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6518 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6519 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006520 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006521 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
6522 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6523 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6524 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006525 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006526 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
6527 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6528 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
6529 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6530 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6531 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6532 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
6533 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006534 };
6535
6536 struct ApplicationInfo
6537 {
6538 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6539 : sType( StructureType::eApplicationInfo )
6540 , pNext( nullptr )
6541 , pApplicationName( pApplicationName_ )
6542 , applicationVersion( applicationVersion_ )
6543 , pEngineName( pEngineName_ )
6544 , engineVersion( engineVersion_ )
6545 , apiVersion( apiVersion_ )
6546 {
6547 }
6548
6549 ApplicationInfo( VkApplicationInfo const & rhs )
6550 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006551 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006552 }
6553
6554 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6555 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006556 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006557 return *this;
6558 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006559 ApplicationInfo& setPNext( const void* pNext_ )
6560 {
6561 pNext = pNext_;
6562 return *this;
6563 }
6564
6565 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6566 {
6567 pApplicationName = pApplicationName_;
6568 return *this;
6569 }
6570
6571 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6572 {
6573 applicationVersion = applicationVersion_;
6574 return *this;
6575 }
6576
6577 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6578 {
6579 pEngineName = pEngineName_;
6580 return *this;
6581 }
6582
6583 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6584 {
6585 engineVersion = engineVersion_;
6586 return *this;
6587 }
6588
6589 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6590 {
6591 apiVersion = apiVersion_;
6592 return *this;
6593 }
6594
6595 operator const VkApplicationInfo&() const
6596 {
6597 return *reinterpret_cast<const VkApplicationInfo*>(this);
6598 }
6599
6600 bool operator==( ApplicationInfo const& rhs ) const
6601 {
6602 return ( sType == rhs.sType )
6603 && ( pNext == rhs.pNext )
6604 && ( pApplicationName == rhs.pApplicationName )
6605 && ( applicationVersion == rhs.applicationVersion )
6606 && ( pEngineName == rhs.pEngineName )
6607 && ( engineVersion == rhs.engineVersion )
6608 && ( apiVersion == rhs.apiVersion );
6609 }
6610
6611 bool operator!=( ApplicationInfo const& rhs ) const
6612 {
6613 return !operator==( rhs );
6614 }
6615
6616 private:
6617 StructureType sType;
6618
6619 public:
6620 const void* pNext;
6621 const char* pApplicationName;
6622 uint32_t applicationVersion;
6623 const char* pEngineName;
6624 uint32_t engineVersion;
6625 uint32_t apiVersion;
6626 };
6627 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6628
6629 struct DeviceQueueCreateInfo
6630 {
6631 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6632 : sType( StructureType::eDeviceQueueCreateInfo )
6633 , pNext( nullptr )
6634 , flags( flags_ )
6635 , queueFamilyIndex( queueFamilyIndex_ )
6636 , queueCount( queueCount_ )
6637 , pQueuePriorities( pQueuePriorities_ )
6638 {
6639 }
6640
6641 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6642 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006643 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006644 }
6645
6646 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006648 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006649 return *this;
6650 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006651 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6652 {
6653 pNext = pNext_;
6654 return *this;
6655 }
6656
6657 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6658 {
6659 flags = flags_;
6660 return *this;
6661 }
6662
6663 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6664 {
6665 queueFamilyIndex = queueFamilyIndex_;
6666 return *this;
6667 }
6668
6669 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6670 {
6671 queueCount = queueCount_;
6672 return *this;
6673 }
6674
6675 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6676 {
6677 pQueuePriorities = pQueuePriorities_;
6678 return *this;
6679 }
6680
6681 operator const VkDeviceQueueCreateInfo&() const
6682 {
6683 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6684 }
6685
6686 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6687 {
6688 return ( sType == rhs.sType )
6689 && ( pNext == rhs.pNext )
6690 && ( flags == rhs.flags )
6691 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6692 && ( queueCount == rhs.queueCount )
6693 && ( pQueuePriorities == rhs.pQueuePriorities );
6694 }
6695
6696 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6697 {
6698 return !operator==( rhs );
6699 }
6700
6701 private:
6702 StructureType sType;
6703
6704 public:
6705 const void* pNext;
6706 DeviceQueueCreateFlags flags;
6707 uint32_t queueFamilyIndex;
6708 uint32_t queueCount;
6709 const float* pQueuePriorities;
6710 };
6711 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6712
6713 struct DeviceCreateInfo
6714 {
6715 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 )
6716 : sType( StructureType::eDeviceCreateInfo )
6717 , pNext( nullptr )
6718 , flags( flags_ )
6719 , queueCreateInfoCount( queueCreateInfoCount_ )
6720 , pQueueCreateInfos( pQueueCreateInfos_ )
6721 , enabledLayerCount( enabledLayerCount_ )
6722 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6723 , enabledExtensionCount( enabledExtensionCount_ )
6724 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6725 , pEnabledFeatures( pEnabledFeatures_ )
6726 {
6727 }
6728
6729 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6730 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006731 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006732 }
6733
6734 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6735 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006736 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006737 return *this;
6738 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006739 DeviceCreateInfo& setPNext( const void* pNext_ )
6740 {
6741 pNext = pNext_;
6742 return *this;
6743 }
6744
6745 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6746 {
6747 flags = flags_;
6748 return *this;
6749 }
6750
6751 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6752 {
6753 queueCreateInfoCount = queueCreateInfoCount_;
6754 return *this;
6755 }
6756
6757 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6758 {
6759 pQueueCreateInfos = pQueueCreateInfos_;
6760 return *this;
6761 }
6762
6763 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6764 {
6765 enabledLayerCount = enabledLayerCount_;
6766 return *this;
6767 }
6768
6769 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6770 {
6771 ppEnabledLayerNames = ppEnabledLayerNames_;
6772 return *this;
6773 }
6774
6775 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6776 {
6777 enabledExtensionCount = enabledExtensionCount_;
6778 return *this;
6779 }
6780
6781 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6782 {
6783 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6784 return *this;
6785 }
6786
6787 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6788 {
6789 pEnabledFeatures = pEnabledFeatures_;
6790 return *this;
6791 }
6792
6793 operator const VkDeviceCreateInfo&() const
6794 {
6795 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6796 }
6797
6798 bool operator==( DeviceCreateInfo const& rhs ) const
6799 {
6800 return ( sType == rhs.sType )
6801 && ( pNext == rhs.pNext )
6802 && ( flags == rhs.flags )
6803 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6804 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6805 && ( enabledLayerCount == rhs.enabledLayerCount )
6806 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6807 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6808 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6809 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6810 }
6811
6812 bool operator!=( DeviceCreateInfo const& rhs ) const
6813 {
6814 return !operator==( rhs );
6815 }
6816
6817 private:
6818 StructureType sType;
6819
6820 public:
6821 const void* pNext;
6822 DeviceCreateFlags flags;
6823 uint32_t queueCreateInfoCount;
6824 const DeviceQueueCreateInfo* pQueueCreateInfos;
6825 uint32_t enabledLayerCount;
6826 const char* const* ppEnabledLayerNames;
6827 uint32_t enabledExtensionCount;
6828 const char* const* ppEnabledExtensionNames;
6829 const PhysicalDeviceFeatures* pEnabledFeatures;
6830 };
6831 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6832
6833 struct InstanceCreateInfo
6834 {
6835 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 )
6836 : sType( StructureType::eInstanceCreateInfo )
6837 , pNext( nullptr )
6838 , flags( flags_ )
6839 , pApplicationInfo( pApplicationInfo_ )
6840 , enabledLayerCount( enabledLayerCount_ )
6841 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6842 , enabledExtensionCount( enabledExtensionCount_ )
6843 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6844 {
6845 }
6846
6847 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6848 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006849 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006850 }
6851
6852 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6853 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006854 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006855 return *this;
6856 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006857 InstanceCreateInfo& setPNext( const void* pNext_ )
6858 {
6859 pNext = pNext_;
6860 return *this;
6861 }
6862
6863 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6864 {
6865 flags = flags_;
6866 return *this;
6867 }
6868
6869 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6870 {
6871 pApplicationInfo = pApplicationInfo_;
6872 return *this;
6873 }
6874
6875 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6876 {
6877 enabledLayerCount = enabledLayerCount_;
6878 return *this;
6879 }
6880
6881 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6882 {
6883 ppEnabledLayerNames = ppEnabledLayerNames_;
6884 return *this;
6885 }
6886
6887 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6888 {
6889 enabledExtensionCount = enabledExtensionCount_;
6890 return *this;
6891 }
6892
6893 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6894 {
6895 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6896 return *this;
6897 }
6898
6899 operator const VkInstanceCreateInfo&() const
6900 {
6901 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6902 }
6903
6904 bool operator==( InstanceCreateInfo const& rhs ) const
6905 {
6906 return ( sType == rhs.sType )
6907 && ( pNext == rhs.pNext )
6908 && ( flags == rhs.flags )
6909 && ( pApplicationInfo == rhs.pApplicationInfo )
6910 && ( enabledLayerCount == rhs.enabledLayerCount )
6911 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6912 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6913 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6914 }
6915
6916 bool operator!=( InstanceCreateInfo const& rhs ) const
6917 {
6918 return !operator==( rhs );
6919 }
6920
6921 private:
6922 StructureType sType;
6923
6924 public:
6925 const void* pNext;
6926 InstanceCreateFlags flags;
6927 const ApplicationInfo* pApplicationInfo;
6928 uint32_t enabledLayerCount;
6929 const char* const* ppEnabledLayerNames;
6930 uint32_t enabledExtensionCount;
6931 const char* const* ppEnabledExtensionNames;
6932 };
6933 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6934
6935 struct MemoryAllocateInfo
6936 {
6937 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6938 : sType( StructureType::eMemoryAllocateInfo )
6939 , pNext( nullptr )
6940 , allocationSize( allocationSize_ )
6941 , memoryTypeIndex( memoryTypeIndex_ )
6942 {
6943 }
6944
6945 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6946 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006947 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006948 }
6949
6950 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6951 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006952 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006953 return *this;
6954 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006955 MemoryAllocateInfo& setPNext( const void* pNext_ )
6956 {
6957 pNext = pNext_;
6958 return *this;
6959 }
6960
6961 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6962 {
6963 allocationSize = allocationSize_;
6964 return *this;
6965 }
6966
6967 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6968 {
6969 memoryTypeIndex = memoryTypeIndex_;
6970 return *this;
6971 }
6972
6973 operator const VkMemoryAllocateInfo&() const
6974 {
6975 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6976 }
6977
6978 bool operator==( MemoryAllocateInfo const& rhs ) const
6979 {
6980 return ( sType == rhs.sType )
6981 && ( pNext == rhs.pNext )
6982 && ( allocationSize == rhs.allocationSize )
6983 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6984 }
6985
6986 bool operator!=( MemoryAllocateInfo const& rhs ) const
6987 {
6988 return !operator==( rhs );
6989 }
6990
6991 private:
6992 StructureType sType;
6993
6994 public:
6995 const void* pNext;
6996 DeviceSize allocationSize;
6997 uint32_t memoryTypeIndex;
6998 };
6999 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7000
7001 struct MappedMemoryRange
7002 {
7003 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7004 : sType( StructureType::eMappedMemoryRange )
7005 , pNext( nullptr )
7006 , memory( memory_ )
7007 , offset( offset_ )
7008 , size( size_ )
7009 {
7010 }
7011
7012 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7013 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007014 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007015 }
7016
7017 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007019 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007020 return *this;
7021 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007022 MappedMemoryRange& setPNext( const void* pNext_ )
7023 {
7024 pNext = pNext_;
7025 return *this;
7026 }
7027
7028 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7029 {
7030 memory = memory_;
7031 return *this;
7032 }
7033
7034 MappedMemoryRange& setOffset( DeviceSize offset_ )
7035 {
7036 offset = offset_;
7037 return *this;
7038 }
7039
7040 MappedMemoryRange& setSize( DeviceSize size_ )
7041 {
7042 size = size_;
7043 return *this;
7044 }
7045
7046 operator const VkMappedMemoryRange&() const
7047 {
7048 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7049 }
7050
7051 bool operator==( MappedMemoryRange const& rhs ) const
7052 {
7053 return ( sType == rhs.sType )
7054 && ( pNext == rhs.pNext )
7055 && ( memory == rhs.memory )
7056 && ( offset == rhs.offset )
7057 && ( size == rhs.size );
7058 }
7059
7060 bool operator!=( MappedMemoryRange const& rhs ) const
7061 {
7062 return !operator==( rhs );
7063 }
7064
7065 private:
7066 StructureType sType;
7067
7068 public:
7069 const void* pNext;
7070 DeviceMemory memory;
7071 DeviceSize offset;
7072 DeviceSize size;
7073 };
7074 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7075
7076 struct WriteDescriptorSet
7077 {
7078 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 )
7079 : sType( StructureType::eWriteDescriptorSet )
7080 , pNext( nullptr )
7081 , dstSet( dstSet_ )
7082 , dstBinding( dstBinding_ )
7083 , dstArrayElement( dstArrayElement_ )
7084 , descriptorCount( descriptorCount_ )
7085 , descriptorType( descriptorType_ )
7086 , pImageInfo( pImageInfo_ )
7087 , pBufferInfo( pBufferInfo_ )
7088 , pTexelBufferView( pTexelBufferView_ )
7089 {
7090 }
7091
7092 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7093 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007094 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007095 }
7096
7097 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7098 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007099 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007100 return *this;
7101 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007102 WriteDescriptorSet& setPNext( const void* pNext_ )
7103 {
7104 pNext = pNext_;
7105 return *this;
7106 }
7107
7108 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7109 {
7110 dstSet = dstSet_;
7111 return *this;
7112 }
7113
7114 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7115 {
7116 dstBinding = dstBinding_;
7117 return *this;
7118 }
7119
7120 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7121 {
7122 dstArrayElement = dstArrayElement_;
7123 return *this;
7124 }
7125
7126 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7127 {
7128 descriptorCount = descriptorCount_;
7129 return *this;
7130 }
7131
7132 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7133 {
7134 descriptorType = descriptorType_;
7135 return *this;
7136 }
7137
7138 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7139 {
7140 pImageInfo = pImageInfo_;
7141 return *this;
7142 }
7143
7144 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7145 {
7146 pBufferInfo = pBufferInfo_;
7147 return *this;
7148 }
7149
7150 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7151 {
7152 pTexelBufferView = pTexelBufferView_;
7153 return *this;
7154 }
7155
7156 operator const VkWriteDescriptorSet&() const
7157 {
7158 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7159 }
7160
7161 bool operator==( WriteDescriptorSet const& rhs ) const
7162 {
7163 return ( sType == rhs.sType )
7164 && ( pNext == rhs.pNext )
7165 && ( dstSet == rhs.dstSet )
7166 && ( dstBinding == rhs.dstBinding )
7167 && ( dstArrayElement == rhs.dstArrayElement )
7168 && ( descriptorCount == rhs.descriptorCount )
7169 && ( descriptorType == rhs.descriptorType )
7170 && ( pImageInfo == rhs.pImageInfo )
7171 && ( pBufferInfo == rhs.pBufferInfo )
7172 && ( pTexelBufferView == rhs.pTexelBufferView );
7173 }
7174
7175 bool operator!=( WriteDescriptorSet const& rhs ) const
7176 {
7177 return !operator==( rhs );
7178 }
7179
7180 private:
7181 StructureType sType;
7182
7183 public:
7184 const void* pNext;
7185 DescriptorSet dstSet;
7186 uint32_t dstBinding;
7187 uint32_t dstArrayElement;
7188 uint32_t descriptorCount;
7189 DescriptorType descriptorType;
7190 const DescriptorImageInfo* pImageInfo;
7191 const DescriptorBufferInfo* pBufferInfo;
7192 const BufferView* pTexelBufferView;
7193 };
7194 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7195
7196 struct CopyDescriptorSet
7197 {
7198 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 )
7199 : sType( StructureType::eCopyDescriptorSet )
7200 , pNext( nullptr )
7201 , srcSet( srcSet_ )
7202 , srcBinding( srcBinding_ )
7203 , srcArrayElement( srcArrayElement_ )
7204 , dstSet( dstSet_ )
7205 , dstBinding( dstBinding_ )
7206 , dstArrayElement( dstArrayElement_ )
7207 , descriptorCount( descriptorCount_ )
7208 {
7209 }
7210
7211 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7212 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007213 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007214 }
7215
7216 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7217 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007218 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007219 return *this;
7220 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007221 CopyDescriptorSet& setPNext( const void* pNext_ )
7222 {
7223 pNext = pNext_;
7224 return *this;
7225 }
7226
7227 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7228 {
7229 srcSet = srcSet_;
7230 return *this;
7231 }
7232
7233 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7234 {
7235 srcBinding = srcBinding_;
7236 return *this;
7237 }
7238
7239 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7240 {
7241 srcArrayElement = srcArrayElement_;
7242 return *this;
7243 }
7244
7245 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7246 {
7247 dstSet = dstSet_;
7248 return *this;
7249 }
7250
7251 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7252 {
7253 dstBinding = dstBinding_;
7254 return *this;
7255 }
7256
7257 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7258 {
7259 dstArrayElement = dstArrayElement_;
7260 return *this;
7261 }
7262
7263 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7264 {
7265 descriptorCount = descriptorCount_;
7266 return *this;
7267 }
7268
7269 operator const VkCopyDescriptorSet&() const
7270 {
7271 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7272 }
7273
7274 bool operator==( CopyDescriptorSet const& rhs ) const
7275 {
7276 return ( sType == rhs.sType )
7277 && ( pNext == rhs.pNext )
7278 && ( srcSet == rhs.srcSet )
7279 && ( srcBinding == rhs.srcBinding )
7280 && ( srcArrayElement == rhs.srcArrayElement )
7281 && ( dstSet == rhs.dstSet )
7282 && ( dstBinding == rhs.dstBinding )
7283 && ( dstArrayElement == rhs.dstArrayElement )
7284 && ( descriptorCount == rhs.descriptorCount );
7285 }
7286
7287 bool operator!=( CopyDescriptorSet const& rhs ) const
7288 {
7289 return !operator==( rhs );
7290 }
7291
7292 private:
7293 StructureType sType;
7294
7295 public:
7296 const void* pNext;
7297 DescriptorSet srcSet;
7298 uint32_t srcBinding;
7299 uint32_t srcArrayElement;
7300 DescriptorSet dstSet;
7301 uint32_t dstBinding;
7302 uint32_t dstArrayElement;
7303 uint32_t descriptorCount;
7304 };
7305 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7306
7307 struct BufferViewCreateInfo
7308 {
7309 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7310 : sType( StructureType::eBufferViewCreateInfo )
7311 , pNext( nullptr )
7312 , flags( flags_ )
7313 , buffer( buffer_ )
7314 , format( format_ )
7315 , offset( offset_ )
7316 , range( range_ )
7317 {
7318 }
7319
7320 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007322 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007323 }
7324
7325 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7326 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007327 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007328 return *this;
7329 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007330 BufferViewCreateInfo& setPNext( const void* pNext_ )
7331 {
7332 pNext = pNext_;
7333 return *this;
7334 }
7335
7336 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7337 {
7338 flags = flags_;
7339 return *this;
7340 }
7341
7342 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7343 {
7344 buffer = buffer_;
7345 return *this;
7346 }
7347
7348 BufferViewCreateInfo& setFormat( Format format_ )
7349 {
7350 format = format_;
7351 return *this;
7352 }
7353
7354 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7355 {
7356 offset = offset_;
7357 return *this;
7358 }
7359
7360 BufferViewCreateInfo& setRange( DeviceSize range_ )
7361 {
7362 range = range_;
7363 return *this;
7364 }
7365
7366 operator const VkBufferViewCreateInfo&() const
7367 {
7368 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7369 }
7370
7371 bool operator==( BufferViewCreateInfo const& rhs ) const
7372 {
7373 return ( sType == rhs.sType )
7374 && ( pNext == rhs.pNext )
7375 && ( flags == rhs.flags )
7376 && ( buffer == rhs.buffer )
7377 && ( format == rhs.format )
7378 && ( offset == rhs.offset )
7379 && ( range == rhs.range );
7380 }
7381
7382 bool operator!=( BufferViewCreateInfo const& rhs ) const
7383 {
7384 return !operator==( rhs );
7385 }
7386
7387 private:
7388 StructureType sType;
7389
7390 public:
7391 const void* pNext;
7392 BufferViewCreateFlags flags;
7393 Buffer buffer;
7394 Format format;
7395 DeviceSize offset;
7396 DeviceSize range;
7397 };
7398 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7399
7400 struct ShaderModuleCreateInfo
7401 {
7402 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7403 : sType( StructureType::eShaderModuleCreateInfo )
7404 , pNext( nullptr )
7405 , flags( flags_ )
7406 , codeSize( codeSize_ )
7407 , pCode( pCode_ )
7408 {
7409 }
7410
7411 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7412 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007413 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007414 }
7415
7416 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007418 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007419 return *this;
7420 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007421 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7422 {
7423 pNext = pNext_;
7424 return *this;
7425 }
7426
7427 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7428 {
7429 flags = flags_;
7430 return *this;
7431 }
7432
7433 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7434 {
7435 codeSize = codeSize_;
7436 return *this;
7437 }
7438
7439 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7440 {
7441 pCode = pCode_;
7442 return *this;
7443 }
7444
7445 operator const VkShaderModuleCreateInfo&() const
7446 {
7447 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7448 }
7449
7450 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7451 {
7452 return ( sType == rhs.sType )
7453 && ( pNext == rhs.pNext )
7454 && ( flags == rhs.flags )
7455 && ( codeSize == rhs.codeSize )
7456 && ( pCode == rhs.pCode );
7457 }
7458
7459 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7460 {
7461 return !operator==( rhs );
7462 }
7463
7464 private:
7465 StructureType sType;
7466
7467 public:
7468 const void* pNext;
7469 ShaderModuleCreateFlags flags;
7470 size_t codeSize;
7471 const uint32_t* pCode;
7472 };
7473 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7474
7475 struct DescriptorSetAllocateInfo
7476 {
7477 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7478 : sType( StructureType::eDescriptorSetAllocateInfo )
7479 , pNext( nullptr )
7480 , descriptorPool( descriptorPool_ )
7481 , descriptorSetCount( descriptorSetCount_ )
7482 , pSetLayouts( pSetLayouts_ )
7483 {
7484 }
7485
7486 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7487 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007488 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007489 }
7490
7491 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7492 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007493 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007494 return *this;
7495 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007496 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7497 {
7498 pNext = pNext_;
7499 return *this;
7500 }
7501
7502 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7503 {
7504 descriptorPool = descriptorPool_;
7505 return *this;
7506 }
7507
7508 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7509 {
7510 descriptorSetCount = descriptorSetCount_;
7511 return *this;
7512 }
7513
7514 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7515 {
7516 pSetLayouts = pSetLayouts_;
7517 return *this;
7518 }
7519
7520 operator const VkDescriptorSetAllocateInfo&() const
7521 {
7522 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7523 }
7524
7525 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7526 {
7527 return ( sType == rhs.sType )
7528 && ( pNext == rhs.pNext )
7529 && ( descriptorPool == rhs.descriptorPool )
7530 && ( descriptorSetCount == rhs.descriptorSetCount )
7531 && ( pSetLayouts == rhs.pSetLayouts );
7532 }
7533
7534 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7535 {
7536 return !operator==( rhs );
7537 }
7538
7539 private:
7540 StructureType sType;
7541
7542 public:
7543 const void* pNext;
7544 DescriptorPool descriptorPool;
7545 uint32_t descriptorSetCount;
7546 const DescriptorSetLayout* pSetLayouts;
7547 };
7548 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7549
7550 struct PipelineVertexInputStateCreateInfo
7551 {
7552 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7553 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7554 , pNext( nullptr )
7555 , flags( flags_ )
7556 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7557 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7558 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7559 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7560 {
7561 }
7562
7563 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007565 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007566 }
7567
7568 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7569 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007570 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007571 return *this;
7572 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007573 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7574 {
7575 pNext = pNext_;
7576 return *this;
7577 }
7578
7579 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7580 {
7581 flags = flags_;
7582 return *this;
7583 }
7584
7585 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7586 {
7587 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7588 return *this;
7589 }
7590
7591 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7592 {
7593 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7594 return *this;
7595 }
7596
7597 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7598 {
7599 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7600 return *this;
7601 }
7602
7603 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7604 {
7605 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7606 return *this;
7607 }
7608
7609 operator const VkPipelineVertexInputStateCreateInfo&() const
7610 {
7611 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7612 }
7613
7614 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7615 {
7616 return ( sType == rhs.sType )
7617 && ( pNext == rhs.pNext )
7618 && ( flags == rhs.flags )
7619 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7620 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7621 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7622 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7623 }
7624
7625 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7626 {
7627 return !operator==( rhs );
7628 }
7629
7630 private:
7631 StructureType sType;
7632
7633 public:
7634 const void* pNext;
7635 PipelineVertexInputStateCreateFlags flags;
7636 uint32_t vertexBindingDescriptionCount;
7637 const VertexInputBindingDescription* pVertexBindingDescriptions;
7638 uint32_t vertexAttributeDescriptionCount;
7639 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7640 };
7641 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7642
7643 struct PipelineInputAssemblyStateCreateInfo
7644 {
7645 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7646 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7647 , pNext( nullptr )
7648 , flags( flags_ )
7649 , topology( topology_ )
7650 , primitiveRestartEnable( primitiveRestartEnable_ )
7651 {
7652 }
7653
7654 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7655 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007656 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007657 }
7658
7659 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007661 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007662 return *this;
7663 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007664 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7665 {
7666 pNext = pNext_;
7667 return *this;
7668 }
7669
7670 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7671 {
7672 flags = flags_;
7673 return *this;
7674 }
7675
7676 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7677 {
7678 topology = topology_;
7679 return *this;
7680 }
7681
7682 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7683 {
7684 primitiveRestartEnable = primitiveRestartEnable_;
7685 return *this;
7686 }
7687
7688 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7689 {
7690 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7691 }
7692
7693 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7694 {
7695 return ( sType == rhs.sType )
7696 && ( pNext == rhs.pNext )
7697 && ( flags == rhs.flags )
7698 && ( topology == rhs.topology )
7699 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7700 }
7701
7702 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7703 {
7704 return !operator==( rhs );
7705 }
7706
7707 private:
7708 StructureType sType;
7709
7710 public:
7711 const void* pNext;
7712 PipelineInputAssemblyStateCreateFlags flags;
7713 PrimitiveTopology topology;
7714 Bool32 primitiveRestartEnable;
7715 };
7716 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7717
7718 struct PipelineTessellationStateCreateInfo
7719 {
7720 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7721 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7722 , pNext( nullptr )
7723 , flags( flags_ )
7724 , patchControlPoints( patchControlPoints_ )
7725 {
7726 }
7727
7728 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7729 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007730 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007731 }
7732
7733 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7734 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007735 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007736 return *this;
7737 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007738 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7739 {
7740 pNext = pNext_;
7741 return *this;
7742 }
7743
7744 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7745 {
7746 flags = flags_;
7747 return *this;
7748 }
7749
7750 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7751 {
7752 patchControlPoints = patchControlPoints_;
7753 return *this;
7754 }
7755
7756 operator const VkPipelineTessellationStateCreateInfo&() const
7757 {
7758 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7759 }
7760
7761 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7762 {
7763 return ( sType == rhs.sType )
7764 && ( pNext == rhs.pNext )
7765 && ( flags == rhs.flags )
7766 && ( patchControlPoints == rhs.patchControlPoints );
7767 }
7768
7769 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7770 {
7771 return !operator==( rhs );
7772 }
7773
7774 private:
7775 StructureType sType;
7776
7777 public:
7778 const void* pNext;
7779 PipelineTessellationStateCreateFlags flags;
7780 uint32_t patchControlPoints;
7781 };
7782 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7783
7784 struct PipelineViewportStateCreateInfo
7785 {
7786 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7787 : sType( StructureType::ePipelineViewportStateCreateInfo )
7788 , pNext( nullptr )
7789 , flags( flags_ )
7790 , viewportCount( viewportCount_ )
7791 , pViewports( pViewports_ )
7792 , scissorCount( scissorCount_ )
7793 , pScissors( pScissors_ )
7794 {
7795 }
7796
7797 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7798 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007799 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007800 }
7801
7802 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7803 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007804 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007805 return *this;
7806 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007807 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7808 {
7809 pNext = pNext_;
7810 return *this;
7811 }
7812
7813 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7814 {
7815 flags = flags_;
7816 return *this;
7817 }
7818
7819 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7820 {
7821 viewportCount = viewportCount_;
7822 return *this;
7823 }
7824
7825 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7826 {
7827 pViewports = pViewports_;
7828 return *this;
7829 }
7830
7831 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7832 {
7833 scissorCount = scissorCount_;
7834 return *this;
7835 }
7836
7837 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7838 {
7839 pScissors = pScissors_;
7840 return *this;
7841 }
7842
7843 operator const VkPipelineViewportStateCreateInfo&() const
7844 {
7845 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7846 }
7847
7848 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7849 {
7850 return ( sType == rhs.sType )
7851 && ( pNext == rhs.pNext )
7852 && ( flags == rhs.flags )
7853 && ( viewportCount == rhs.viewportCount )
7854 && ( pViewports == rhs.pViewports )
7855 && ( scissorCount == rhs.scissorCount )
7856 && ( pScissors == rhs.pScissors );
7857 }
7858
7859 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7860 {
7861 return !operator==( rhs );
7862 }
7863
7864 private:
7865 StructureType sType;
7866
7867 public:
7868 const void* pNext;
7869 PipelineViewportStateCreateFlags flags;
7870 uint32_t viewportCount;
7871 const Viewport* pViewports;
7872 uint32_t scissorCount;
7873 const Rect2D* pScissors;
7874 };
7875 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7876
7877 struct PipelineRasterizationStateCreateInfo
7878 {
7879 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 )
7880 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7881 , pNext( nullptr )
7882 , flags( flags_ )
7883 , depthClampEnable( depthClampEnable_ )
7884 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7885 , polygonMode( polygonMode_ )
7886 , cullMode( cullMode_ )
7887 , frontFace( frontFace_ )
7888 , depthBiasEnable( depthBiasEnable_ )
7889 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7890 , depthBiasClamp( depthBiasClamp_ )
7891 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7892 , lineWidth( lineWidth_ )
7893 {
7894 }
7895
7896 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007898 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007899 }
7900
7901 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007903 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007904 return *this;
7905 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007906 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7907 {
7908 pNext = pNext_;
7909 return *this;
7910 }
7911
7912 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7913 {
7914 flags = flags_;
7915 return *this;
7916 }
7917
7918 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7919 {
7920 depthClampEnable = depthClampEnable_;
7921 return *this;
7922 }
7923
7924 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7925 {
7926 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7927 return *this;
7928 }
7929
7930 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7931 {
7932 polygonMode = polygonMode_;
7933 return *this;
7934 }
7935
7936 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7937 {
7938 cullMode = cullMode_;
7939 return *this;
7940 }
7941
7942 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7943 {
7944 frontFace = frontFace_;
7945 return *this;
7946 }
7947
7948 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7949 {
7950 depthBiasEnable = depthBiasEnable_;
7951 return *this;
7952 }
7953
7954 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7955 {
7956 depthBiasConstantFactor = depthBiasConstantFactor_;
7957 return *this;
7958 }
7959
7960 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7961 {
7962 depthBiasClamp = depthBiasClamp_;
7963 return *this;
7964 }
7965
7966 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7967 {
7968 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7969 return *this;
7970 }
7971
7972 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7973 {
7974 lineWidth = lineWidth_;
7975 return *this;
7976 }
7977
7978 operator const VkPipelineRasterizationStateCreateInfo&() const
7979 {
7980 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7981 }
7982
7983 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7984 {
7985 return ( sType == rhs.sType )
7986 && ( pNext == rhs.pNext )
7987 && ( flags == rhs.flags )
7988 && ( depthClampEnable == rhs.depthClampEnable )
7989 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7990 && ( polygonMode == rhs.polygonMode )
7991 && ( cullMode == rhs.cullMode )
7992 && ( frontFace == rhs.frontFace )
7993 && ( depthBiasEnable == rhs.depthBiasEnable )
7994 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7995 && ( depthBiasClamp == rhs.depthBiasClamp )
7996 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7997 && ( lineWidth == rhs.lineWidth );
7998 }
7999
8000 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8001 {
8002 return !operator==( rhs );
8003 }
8004
8005 private:
8006 StructureType sType;
8007
8008 public:
8009 const void* pNext;
8010 PipelineRasterizationStateCreateFlags flags;
8011 Bool32 depthClampEnable;
8012 Bool32 rasterizerDiscardEnable;
8013 PolygonMode polygonMode;
8014 CullModeFlags cullMode;
8015 FrontFace frontFace;
8016 Bool32 depthBiasEnable;
8017 float depthBiasConstantFactor;
8018 float depthBiasClamp;
8019 float depthBiasSlopeFactor;
8020 float lineWidth;
8021 };
8022 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8023
8024 struct PipelineDepthStencilStateCreateInfo
8025 {
8026 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 )
8027 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8028 , pNext( nullptr )
8029 , flags( flags_ )
8030 , depthTestEnable( depthTestEnable_ )
8031 , depthWriteEnable( depthWriteEnable_ )
8032 , depthCompareOp( depthCompareOp_ )
8033 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8034 , stencilTestEnable( stencilTestEnable_ )
8035 , front( front_ )
8036 , back( back_ )
8037 , minDepthBounds( minDepthBounds_ )
8038 , maxDepthBounds( maxDepthBounds_ )
8039 {
8040 }
8041
8042 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8043 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008044 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008045 }
8046
8047 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8048 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008049 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008050 return *this;
8051 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008052 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8053 {
8054 pNext = pNext_;
8055 return *this;
8056 }
8057
8058 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8059 {
8060 flags = flags_;
8061 return *this;
8062 }
8063
8064 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8065 {
8066 depthTestEnable = depthTestEnable_;
8067 return *this;
8068 }
8069
8070 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8071 {
8072 depthWriteEnable = depthWriteEnable_;
8073 return *this;
8074 }
8075
8076 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8077 {
8078 depthCompareOp = depthCompareOp_;
8079 return *this;
8080 }
8081
8082 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8083 {
8084 depthBoundsTestEnable = depthBoundsTestEnable_;
8085 return *this;
8086 }
8087
8088 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8089 {
8090 stencilTestEnable = stencilTestEnable_;
8091 return *this;
8092 }
8093
8094 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8095 {
8096 front = front_;
8097 return *this;
8098 }
8099
8100 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8101 {
8102 back = back_;
8103 return *this;
8104 }
8105
8106 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8107 {
8108 minDepthBounds = minDepthBounds_;
8109 return *this;
8110 }
8111
8112 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8113 {
8114 maxDepthBounds = maxDepthBounds_;
8115 return *this;
8116 }
8117
8118 operator const VkPipelineDepthStencilStateCreateInfo&() const
8119 {
8120 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8121 }
8122
8123 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8124 {
8125 return ( sType == rhs.sType )
8126 && ( pNext == rhs.pNext )
8127 && ( flags == rhs.flags )
8128 && ( depthTestEnable == rhs.depthTestEnable )
8129 && ( depthWriteEnable == rhs.depthWriteEnable )
8130 && ( depthCompareOp == rhs.depthCompareOp )
8131 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8132 && ( stencilTestEnable == rhs.stencilTestEnable )
8133 && ( front == rhs.front )
8134 && ( back == rhs.back )
8135 && ( minDepthBounds == rhs.minDepthBounds )
8136 && ( maxDepthBounds == rhs.maxDepthBounds );
8137 }
8138
8139 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8140 {
8141 return !operator==( rhs );
8142 }
8143
8144 private:
8145 StructureType sType;
8146
8147 public:
8148 const void* pNext;
8149 PipelineDepthStencilStateCreateFlags flags;
8150 Bool32 depthTestEnable;
8151 Bool32 depthWriteEnable;
8152 CompareOp depthCompareOp;
8153 Bool32 depthBoundsTestEnable;
8154 Bool32 stencilTestEnable;
8155 StencilOpState front;
8156 StencilOpState back;
8157 float minDepthBounds;
8158 float maxDepthBounds;
8159 };
8160 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8161
8162 struct PipelineCacheCreateInfo
8163 {
8164 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8165 : sType( StructureType::ePipelineCacheCreateInfo )
8166 , pNext( nullptr )
8167 , flags( flags_ )
8168 , initialDataSize( initialDataSize_ )
8169 , pInitialData( pInitialData_ )
8170 {
8171 }
8172
8173 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8174 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008175 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008176 }
8177
8178 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8179 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008180 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008181 return *this;
8182 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008183 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8184 {
8185 pNext = pNext_;
8186 return *this;
8187 }
8188
8189 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8190 {
8191 flags = flags_;
8192 return *this;
8193 }
8194
8195 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8196 {
8197 initialDataSize = initialDataSize_;
8198 return *this;
8199 }
8200
8201 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8202 {
8203 pInitialData = pInitialData_;
8204 return *this;
8205 }
8206
8207 operator const VkPipelineCacheCreateInfo&() const
8208 {
8209 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8210 }
8211
8212 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8213 {
8214 return ( sType == rhs.sType )
8215 && ( pNext == rhs.pNext )
8216 && ( flags == rhs.flags )
8217 && ( initialDataSize == rhs.initialDataSize )
8218 && ( pInitialData == rhs.pInitialData );
8219 }
8220
8221 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8222 {
8223 return !operator==( rhs );
8224 }
8225
8226 private:
8227 StructureType sType;
8228
8229 public:
8230 const void* pNext;
8231 PipelineCacheCreateFlags flags;
8232 size_t initialDataSize;
8233 const void* pInitialData;
8234 };
8235 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8236
8237 struct SamplerCreateInfo
8238 {
8239 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 )
8240 : sType( StructureType::eSamplerCreateInfo )
8241 , pNext( nullptr )
8242 , flags( flags_ )
8243 , magFilter( magFilter_ )
8244 , minFilter( minFilter_ )
8245 , mipmapMode( mipmapMode_ )
8246 , addressModeU( addressModeU_ )
8247 , addressModeV( addressModeV_ )
8248 , addressModeW( addressModeW_ )
8249 , mipLodBias( mipLodBias_ )
8250 , anisotropyEnable( anisotropyEnable_ )
8251 , maxAnisotropy( maxAnisotropy_ )
8252 , compareEnable( compareEnable_ )
8253 , compareOp( compareOp_ )
8254 , minLod( minLod_ )
8255 , maxLod( maxLod_ )
8256 , borderColor( borderColor_ )
8257 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8258 {
8259 }
8260
8261 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8262 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008263 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008264 }
8265
8266 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8267 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008268 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008269 return *this;
8270 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008271 SamplerCreateInfo& setPNext( const void* pNext_ )
8272 {
8273 pNext = pNext_;
8274 return *this;
8275 }
8276
8277 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8278 {
8279 flags = flags_;
8280 return *this;
8281 }
8282
8283 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8284 {
8285 magFilter = magFilter_;
8286 return *this;
8287 }
8288
8289 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8290 {
8291 minFilter = minFilter_;
8292 return *this;
8293 }
8294
8295 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8296 {
8297 mipmapMode = mipmapMode_;
8298 return *this;
8299 }
8300
8301 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8302 {
8303 addressModeU = addressModeU_;
8304 return *this;
8305 }
8306
8307 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8308 {
8309 addressModeV = addressModeV_;
8310 return *this;
8311 }
8312
8313 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8314 {
8315 addressModeW = addressModeW_;
8316 return *this;
8317 }
8318
8319 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8320 {
8321 mipLodBias = mipLodBias_;
8322 return *this;
8323 }
8324
8325 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8326 {
8327 anisotropyEnable = anisotropyEnable_;
8328 return *this;
8329 }
8330
8331 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8332 {
8333 maxAnisotropy = maxAnisotropy_;
8334 return *this;
8335 }
8336
8337 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8338 {
8339 compareEnable = compareEnable_;
8340 return *this;
8341 }
8342
8343 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8344 {
8345 compareOp = compareOp_;
8346 return *this;
8347 }
8348
8349 SamplerCreateInfo& setMinLod( float minLod_ )
8350 {
8351 minLod = minLod_;
8352 return *this;
8353 }
8354
8355 SamplerCreateInfo& setMaxLod( float maxLod_ )
8356 {
8357 maxLod = maxLod_;
8358 return *this;
8359 }
8360
8361 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8362 {
8363 borderColor = borderColor_;
8364 return *this;
8365 }
8366
8367 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8368 {
8369 unnormalizedCoordinates = unnormalizedCoordinates_;
8370 return *this;
8371 }
8372
8373 operator const VkSamplerCreateInfo&() const
8374 {
8375 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8376 }
8377
8378 bool operator==( SamplerCreateInfo const& rhs ) const
8379 {
8380 return ( sType == rhs.sType )
8381 && ( pNext == rhs.pNext )
8382 && ( flags == rhs.flags )
8383 && ( magFilter == rhs.magFilter )
8384 && ( minFilter == rhs.minFilter )
8385 && ( mipmapMode == rhs.mipmapMode )
8386 && ( addressModeU == rhs.addressModeU )
8387 && ( addressModeV == rhs.addressModeV )
8388 && ( addressModeW == rhs.addressModeW )
8389 && ( mipLodBias == rhs.mipLodBias )
8390 && ( anisotropyEnable == rhs.anisotropyEnable )
8391 && ( maxAnisotropy == rhs.maxAnisotropy )
8392 && ( compareEnable == rhs.compareEnable )
8393 && ( compareOp == rhs.compareOp )
8394 && ( minLod == rhs.minLod )
8395 && ( maxLod == rhs.maxLod )
8396 && ( borderColor == rhs.borderColor )
8397 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8398 }
8399
8400 bool operator!=( SamplerCreateInfo const& rhs ) const
8401 {
8402 return !operator==( rhs );
8403 }
8404
8405 private:
8406 StructureType sType;
8407
8408 public:
8409 const void* pNext;
8410 SamplerCreateFlags flags;
8411 Filter magFilter;
8412 Filter minFilter;
8413 SamplerMipmapMode mipmapMode;
8414 SamplerAddressMode addressModeU;
8415 SamplerAddressMode addressModeV;
8416 SamplerAddressMode addressModeW;
8417 float mipLodBias;
8418 Bool32 anisotropyEnable;
8419 float maxAnisotropy;
8420 Bool32 compareEnable;
8421 CompareOp compareOp;
8422 float minLod;
8423 float maxLod;
8424 BorderColor borderColor;
8425 Bool32 unnormalizedCoordinates;
8426 };
8427 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8428
8429 struct CommandBufferAllocateInfo
8430 {
8431 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8432 : sType( StructureType::eCommandBufferAllocateInfo )
8433 , pNext( nullptr )
8434 , commandPool( commandPool_ )
8435 , level( level_ )
8436 , commandBufferCount( commandBufferCount_ )
8437 {
8438 }
8439
8440 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008442 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008443 }
8444
8445 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008447 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008448 return *this;
8449 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008450 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8451 {
8452 pNext = pNext_;
8453 return *this;
8454 }
8455
8456 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8457 {
8458 commandPool = commandPool_;
8459 return *this;
8460 }
8461
8462 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8463 {
8464 level = level_;
8465 return *this;
8466 }
8467
8468 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8469 {
8470 commandBufferCount = commandBufferCount_;
8471 return *this;
8472 }
8473
8474 operator const VkCommandBufferAllocateInfo&() const
8475 {
8476 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8477 }
8478
8479 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8480 {
8481 return ( sType == rhs.sType )
8482 && ( pNext == rhs.pNext )
8483 && ( commandPool == rhs.commandPool )
8484 && ( level == rhs.level )
8485 && ( commandBufferCount == rhs.commandBufferCount );
8486 }
8487
8488 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8489 {
8490 return !operator==( rhs );
8491 }
8492
8493 private:
8494 StructureType sType;
8495
8496 public:
8497 const void* pNext;
8498 CommandPool commandPool;
8499 CommandBufferLevel level;
8500 uint32_t commandBufferCount;
8501 };
8502 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8503
8504 struct RenderPassBeginInfo
8505 {
8506 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8507 : sType( StructureType::eRenderPassBeginInfo )
8508 , pNext( nullptr )
8509 , renderPass( renderPass_ )
8510 , framebuffer( framebuffer_ )
8511 , renderArea( renderArea_ )
8512 , clearValueCount( clearValueCount_ )
8513 , pClearValues( pClearValues_ )
8514 {
8515 }
8516
8517 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8518 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008519 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008520 }
8521
8522 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8523 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008524 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008525 return *this;
8526 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008527 RenderPassBeginInfo& setPNext( const void* pNext_ )
8528 {
8529 pNext = pNext_;
8530 return *this;
8531 }
8532
8533 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8534 {
8535 renderPass = renderPass_;
8536 return *this;
8537 }
8538
8539 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8540 {
8541 framebuffer = framebuffer_;
8542 return *this;
8543 }
8544
8545 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8546 {
8547 renderArea = renderArea_;
8548 return *this;
8549 }
8550
8551 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8552 {
8553 clearValueCount = clearValueCount_;
8554 return *this;
8555 }
8556
8557 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8558 {
8559 pClearValues = pClearValues_;
8560 return *this;
8561 }
8562
8563 operator const VkRenderPassBeginInfo&() const
8564 {
8565 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8566 }
8567
8568 bool operator==( RenderPassBeginInfo const& rhs ) const
8569 {
8570 return ( sType == rhs.sType )
8571 && ( pNext == rhs.pNext )
8572 && ( renderPass == rhs.renderPass )
8573 && ( framebuffer == rhs.framebuffer )
8574 && ( renderArea == rhs.renderArea )
8575 && ( clearValueCount == rhs.clearValueCount )
8576 && ( pClearValues == rhs.pClearValues );
8577 }
8578
8579 bool operator!=( RenderPassBeginInfo const& rhs ) const
8580 {
8581 return !operator==( rhs );
8582 }
8583
8584 private:
8585 StructureType sType;
8586
8587 public:
8588 const void* pNext;
8589 RenderPass renderPass;
8590 Framebuffer framebuffer;
8591 Rect2D renderArea;
8592 uint32_t clearValueCount;
8593 const ClearValue* pClearValues;
8594 };
8595 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8596
8597 struct EventCreateInfo
8598 {
8599 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8600 : sType( StructureType::eEventCreateInfo )
8601 , pNext( nullptr )
8602 , flags( flags_ )
8603 {
8604 }
8605
8606 EventCreateInfo( VkEventCreateInfo const & rhs )
8607 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008608 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008609 }
8610
8611 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8612 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008613 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008614 return *this;
8615 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008616 EventCreateInfo& setPNext( const void* pNext_ )
8617 {
8618 pNext = pNext_;
8619 return *this;
8620 }
8621
8622 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8623 {
8624 flags = flags_;
8625 return *this;
8626 }
8627
8628 operator const VkEventCreateInfo&() const
8629 {
8630 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8631 }
8632
8633 bool operator==( EventCreateInfo const& rhs ) const
8634 {
8635 return ( sType == rhs.sType )
8636 && ( pNext == rhs.pNext )
8637 && ( flags == rhs.flags );
8638 }
8639
8640 bool operator!=( EventCreateInfo const& rhs ) const
8641 {
8642 return !operator==( rhs );
8643 }
8644
8645 private:
8646 StructureType sType;
8647
8648 public:
8649 const void* pNext;
8650 EventCreateFlags flags;
8651 };
8652 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8653
8654 struct SemaphoreCreateInfo
8655 {
8656 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8657 : sType( StructureType::eSemaphoreCreateInfo )
8658 , pNext( nullptr )
8659 , flags( flags_ )
8660 {
8661 }
8662
8663 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8664 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008665 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008666 }
8667
8668 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8669 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008670 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008671 return *this;
8672 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008673 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8674 {
8675 pNext = pNext_;
8676 return *this;
8677 }
8678
8679 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8680 {
8681 flags = flags_;
8682 return *this;
8683 }
8684
8685 operator const VkSemaphoreCreateInfo&() const
8686 {
8687 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8688 }
8689
8690 bool operator==( SemaphoreCreateInfo const& rhs ) const
8691 {
8692 return ( sType == rhs.sType )
8693 && ( pNext == rhs.pNext )
8694 && ( flags == rhs.flags );
8695 }
8696
8697 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8698 {
8699 return !operator==( rhs );
8700 }
8701
8702 private:
8703 StructureType sType;
8704
8705 public:
8706 const void* pNext;
8707 SemaphoreCreateFlags flags;
8708 };
8709 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8710
8711 struct FramebufferCreateInfo
8712 {
8713 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 )
8714 : sType( StructureType::eFramebufferCreateInfo )
8715 , pNext( nullptr )
8716 , flags( flags_ )
8717 , renderPass( renderPass_ )
8718 , attachmentCount( attachmentCount_ )
8719 , pAttachments( pAttachments_ )
8720 , width( width_ )
8721 , height( height_ )
8722 , layers( layers_ )
8723 {
8724 }
8725
8726 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8727 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008728 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008729 }
8730
8731 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8732 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008733 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008734 return *this;
8735 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008736 FramebufferCreateInfo& setPNext( const void* pNext_ )
8737 {
8738 pNext = pNext_;
8739 return *this;
8740 }
8741
8742 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8743 {
8744 flags = flags_;
8745 return *this;
8746 }
8747
8748 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8749 {
8750 renderPass = renderPass_;
8751 return *this;
8752 }
8753
8754 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8755 {
8756 attachmentCount = attachmentCount_;
8757 return *this;
8758 }
8759
8760 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8761 {
8762 pAttachments = pAttachments_;
8763 return *this;
8764 }
8765
8766 FramebufferCreateInfo& setWidth( uint32_t width_ )
8767 {
8768 width = width_;
8769 return *this;
8770 }
8771
8772 FramebufferCreateInfo& setHeight( uint32_t height_ )
8773 {
8774 height = height_;
8775 return *this;
8776 }
8777
8778 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8779 {
8780 layers = layers_;
8781 return *this;
8782 }
8783
8784 operator const VkFramebufferCreateInfo&() const
8785 {
8786 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8787 }
8788
8789 bool operator==( FramebufferCreateInfo const& rhs ) const
8790 {
8791 return ( sType == rhs.sType )
8792 && ( pNext == rhs.pNext )
8793 && ( flags == rhs.flags )
8794 && ( renderPass == rhs.renderPass )
8795 && ( attachmentCount == rhs.attachmentCount )
8796 && ( pAttachments == rhs.pAttachments )
8797 && ( width == rhs.width )
8798 && ( height == rhs.height )
8799 && ( layers == rhs.layers );
8800 }
8801
8802 bool operator!=( FramebufferCreateInfo const& rhs ) const
8803 {
8804 return !operator==( rhs );
8805 }
8806
8807 private:
8808 StructureType sType;
8809
8810 public:
8811 const void* pNext;
8812 FramebufferCreateFlags flags;
8813 RenderPass renderPass;
8814 uint32_t attachmentCount;
8815 const ImageView* pAttachments;
8816 uint32_t width;
8817 uint32_t height;
8818 uint32_t layers;
8819 };
8820 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8821
8822 struct DisplayModeCreateInfoKHR
8823 {
8824 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8825 : sType( StructureType::eDisplayModeCreateInfoKHR )
8826 , pNext( nullptr )
8827 , flags( flags_ )
8828 , parameters( parameters_ )
8829 {
8830 }
8831
8832 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8833 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008834 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008835 }
8836
8837 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008839 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008840 return *this;
8841 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008842 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8843 {
8844 pNext = pNext_;
8845 return *this;
8846 }
8847
8848 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8849 {
8850 flags = flags_;
8851 return *this;
8852 }
8853
8854 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8855 {
8856 parameters = parameters_;
8857 return *this;
8858 }
8859
8860 operator const VkDisplayModeCreateInfoKHR&() const
8861 {
8862 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8863 }
8864
8865 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8866 {
8867 return ( sType == rhs.sType )
8868 && ( pNext == rhs.pNext )
8869 && ( flags == rhs.flags )
8870 && ( parameters == rhs.parameters );
8871 }
8872
8873 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8874 {
8875 return !operator==( rhs );
8876 }
8877
8878 private:
8879 StructureType sType;
8880
8881 public:
8882 const void* pNext;
8883 DisplayModeCreateFlagsKHR flags;
8884 DisplayModeParametersKHR parameters;
8885 };
8886 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8887
8888 struct DisplayPresentInfoKHR
8889 {
8890 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8891 : sType( StructureType::eDisplayPresentInfoKHR )
8892 , pNext( nullptr )
8893 , srcRect( srcRect_ )
8894 , dstRect( dstRect_ )
8895 , persistent( persistent_ )
8896 {
8897 }
8898
8899 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008901 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008902 }
8903
8904 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8905 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008906 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008907 return *this;
8908 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008909 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8910 {
8911 pNext = pNext_;
8912 return *this;
8913 }
8914
8915 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8916 {
8917 srcRect = srcRect_;
8918 return *this;
8919 }
8920
8921 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8922 {
8923 dstRect = dstRect_;
8924 return *this;
8925 }
8926
8927 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8928 {
8929 persistent = persistent_;
8930 return *this;
8931 }
8932
8933 operator const VkDisplayPresentInfoKHR&() const
8934 {
8935 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8936 }
8937
8938 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8939 {
8940 return ( sType == rhs.sType )
8941 && ( pNext == rhs.pNext )
8942 && ( srcRect == rhs.srcRect )
8943 && ( dstRect == rhs.dstRect )
8944 && ( persistent == rhs.persistent );
8945 }
8946
8947 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8948 {
8949 return !operator==( rhs );
8950 }
8951
8952 private:
8953 StructureType sType;
8954
8955 public:
8956 const void* pNext;
8957 Rect2D srcRect;
8958 Rect2D dstRect;
8959 Bool32 persistent;
8960 };
8961 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8962
8963#ifdef VK_USE_PLATFORM_ANDROID_KHR
8964 struct AndroidSurfaceCreateInfoKHR
8965 {
8966 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8967 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8968 , pNext( nullptr )
8969 , flags( flags_ )
8970 , window( window_ )
8971 {
8972 }
8973
8974 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008976 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008977 }
8978
8979 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8980 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008981 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008982 return *this;
8983 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008984 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8985 {
8986 pNext = pNext_;
8987 return *this;
8988 }
8989
8990 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8991 {
8992 flags = flags_;
8993 return *this;
8994 }
8995
8996 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8997 {
8998 window = window_;
8999 return *this;
9000 }
9001
9002 operator const VkAndroidSurfaceCreateInfoKHR&() const
9003 {
9004 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9005 }
9006
9007 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9008 {
9009 return ( sType == rhs.sType )
9010 && ( pNext == rhs.pNext )
9011 && ( flags == rhs.flags )
9012 && ( window == rhs.window );
9013 }
9014
9015 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9016 {
9017 return !operator==( rhs );
9018 }
9019
9020 private:
9021 StructureType sType;
9022
9023 public:
9024 const void* pNext;
9025 AndroidSurfaceCreateFlagsKHR flags;
9026 ANativeWindow* window;
9027 };
9028 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9029#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9030
9031#ifdef VK_USE_PLATFORM_MIR_KHR
9032 struct MirSurfaceCreateInfoKHR
9033 {
9034 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9035 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9036 , pNext( nullptr )
9037 , flags( flags_ )
9038 , connection( connection_ )
9039 , mirSurface( mirSurface_ )
9040 {
9041 }
9042
9043 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9044 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009045 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009046 }
9047
9048 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9049 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009050 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009051 return *this;
9052 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009053 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9054 {
9055 pNext = pNext_;
9056 return *this;
9057 }
9058
9059 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9060 {
9061 flags = flags_;
9062 return *this;
9063 }
9064
9065 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9066 {
9067 connection = connection_;
9068 return *this;
9069 }
9070
9071 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9072 {
9073 mirSurface = mirSurface_;
9074 return *this;
9075 }
9076
9077 operator const VkMirSurfaceCreateInfoKHR&() const
9078 {
9079 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9080 }
9081
9082 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9083 {
9084 return ( sType == rhs.sType )
9085 && ( pNext == rhs.pNext )
9086 && ( flags == rhs.flags )
9087 && ( connection == rhs.connection )
9088 && ( mirSurface == rhs.mirSurface );
9089 }
9090
9091 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9092 {
9093 return !operator==( rhs );
9094 }
9095
9096 private:
9097 StructureType sType;
9098
9099 public:
9100 const void* pNext;
9101 MirSurfaceCreateFlagsKHR flags;
9102 MirConnection* connection;
9103 MirSurface* mirSurface;
9104 };
9105 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9106#endif /*VK_USE_PLATFORM_MIR_KHR*/
9107
Mark Young39389872017-01-19 21:10:49 -07009108#ifdef VK_USE_PLATFORM_VI_NN
9109 struct ViSurfaceCreateInfoNN
9110 {
9111 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9112 : sType( StructureType::eViSurfaceCreateInfoNN )
9113 , pNext( nullptr )
9114 , flags( flags_ )
9115 , window( window_ )
9116 {
9117 }
9118
9119 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009121 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009122 }
9123
9124 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009126 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009127 return *this;
9128 }
Mark Young39389872017-01-19 21:10:49 -07009129 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9130 {
9131 pNext = pNext_;
9132 return *this;
9133 }
9134
9135 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9136 {
9137 flags = flags_;
9138 return *this;
9139 }
9140
9141 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9142 {
9143 window = window_;
9144 return *this;
9145 }
9146
9147 operator const VkViSurfaceCreateInfoNN&() const
9148 {
9149 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9150 }
9151
9152 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9153 {
9154 return ( sType == rhs.sType )
9155 && ( pNext == rhs.pNext )
9156 && ( flags == rhs.flags )
9157 && ( window == rhs.window );
9158 }
9159
9160 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9161 {
9162 return !operator==( rhs );
9163 }
9164
9165 private:
9166 StructureType sType;
9167
9168 public:
9169 const void* pNext;
9170 ViSurfaceCreateFlagsNN flags;
9171 void* window;
9172 };
9173 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9174#endif /*VK_USE_PLATFORM_VI_NN*/
9175
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009176#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9177 struct WaylandSurfaceCreateInfoKHR
9178 {
9179 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9180 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9181 , pNext( nullptr )
9182 , flags( flags_ )
9183 , display( display_ )
9184 , surface( surface_ )
9185 {
9186 }
9187
9188 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009190 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009191 }
9192
9193 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009195 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009196 return *this;
9197 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009198 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9199 {
9200 pNext = pNext_;
9201 return *this;
9202 }
9203
9204 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9205 {
9206 flags = flags_;
9207 return *this;
9208 }
9209
9210 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9211 {
9212 display = display_;
9213 return *this;
9214 }
9215
9216 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9217 {
9218 surface = surface_;
9219 return *this;
9220 }
9221
9222 operator const VkWaylandSurfaceCreateInfoKHR&() const
9223 {
9224 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9225 }
9226
9227 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9228 {
9229 return ( sType == rhs.sType )
9230 && ( pNext == rhs.pNext )
9231 && ( flags == rhs.flags )
9232 && ( display == rhs.display )
9233 && ( surface == rhs.surface );
9234 }
9235
9236 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9237 {
9238 return !operator==( rhs );
9239 }
9240
9241 private:
9242 StructureType sType;
9243
9244 public:
9245 const void* pNext;
9246 WaylandSurfaceCreateFlagsKHR flags;
9247 struct wl_display* display;
9248 struct wl_surface* surface;
9249 };
9250 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9251#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9252
9253#ifdef VK_USE_PLATFORM_WIN32_KHR
9254 struct Win32SurfaceCreateInfoKHR
9255 {
9256 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9257 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9258 , pNext( nullptr )
9259 , flags( flags_ )
9260 , hinstance( hinstance_ )
9261 , hwnd( hwnd_ )
9262 {
9263 }
9264
9265 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009267 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009268 }
9269
9270 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9271 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009272 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009273 return *this;
9274 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009275 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9276 {
9277 pNext = pNext_;
9278 return *this;
9279 }
9280
9281 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9282 {
9283 flags = flags_;
9284 return *this;
9285 }
9286
9287 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9288 {
9289 hinstance = hinstance_;
9290 return *this;
9291 }
9292
9293 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9294 {
9295 hwnd = hwnd_;
9296 return *this;
9297 }
9298
9299 operator const VkWin32SurfaceCreateInfoKHR&() const
9300 {
9301 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9302 }
9303
9304 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9305 {
9306 return ( sType == rhs.sType )
9307 && ( pNext == rhs.pNext )
9308 && ( flags == rhs.flags )
9309 && ( hinstance == rhs.hinstance )
9310 && ( hwnd == rhs.hwnd );
9311 }
9312
9313 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9314 {
9315 return !operator==( rhs );
9316 }
9317
9318 private:
9319 StructureType sType;
9320
9321 public:
9322 const void* pNext;
9323 Win32SurfaceCreateFlagsKHR flags;
9324 HINSTANCE hinstance;
9325 HWND hwnd;
9326 };
9327 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9328#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9329
9330#ifdef VK_USE_PLATFORM_XLIB_KHR
9331 struct XlibSurfaceCreateInfoKHR
9332 {
9333 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9334 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9335 , pNext( nullptr )
9336 , flags( flags_ )
9337 , dpy( dpy_ )
9338 , window( window_ )
9339 {
9340 }
9341
9342 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009344 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009345 }
9346
9347 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009349 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009350 return *this;
9351 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009352 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9353 {
9354 pNext = pNext_;
9355 return *this;
9356 }
9357
9358 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9359 {
9360 flags = flags_;
9361 return *this;
9362 }
9363
9364 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9365 {
9366 dpy = dpy_;
9367 return *this;
9368 }
9369
9370 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9371 {
9372 window = window_;
9373 return *this;
9374 }
9375
9376 operator const VkXlibSurfaceCreateInfoKHR&() const
9377 {
9378 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9379 }
9380
9381 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9382 {
9383 return ( sType == rhs.sType )
9384 && ( pNext == rhs.pNext )
9385 && ( flags == rhs.flags )
9386 && ( dpy == rhs.dpy )
9387 && ( window == rhs.window );
9388 }
9389
9390 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9391 {
9392 return !operator==( rhs );
9393 }
9394
9395 private:
9396 StructureType sType;
9397
9398 public:
9399 const void* pNext;
9400 XlibSurfaceCreateFlagsKHR flags;
9401 Display* dpy;
9402 Window window;
9403 };
9404 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9405#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9406
9407#ifdef VK_USE_PLATFORM_XCB_KHR
9408 struct XcbSurfaceCreateInfoKHR
9409 {
9410 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9411 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9412 , pNext( nullptr )
9413 , flags( flags_ )
9414 , connection( connection_ )
9415 , window( window_ )
9416 {
9417 }
9418
9419 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9420 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009421 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009422 }
9423
9424 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9425 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009426 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009427 return *this;
9428 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009429 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9430 {
9431 pNext = pNext_;
9432 return *this;
9433 }
9434
9435 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9436 {
9437 flags = flags_;
9438 return *this;
9439 }
9440
9441 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9442 {
9443 connection = connection_;
9444 return *this;
9445 }
9446
9447 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9448 {
9449 window = window_;
9450 return *this;
9451 }
9452
9453 operator const VkXcbSurfaceCreateInfoKHR&() const
9454 {
9455 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9456 }
9457
9458 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9459 {
9460 return ( sType == rhs.sType )
9461 && ( pNext == rhs.pNext )
9462 && ( flags == rhs.flags )
9463 && ( connection == rhs.connection )
9464 && ( window == rhs.window );
9465 }
9466
9467 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9468 {
9469 return !operator==( rhs );
9470 }
9471
9472 private:
9473 StructureType sType;
9474
9475 public:
9476 const void* pNext;
9477 XcbSurfaceCreateFlagsKHR flags;
9478 xcb_connection_t* connection;
9479 xcb_window_t window;
9480 };
9481 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9482#endif /*VK_USE_PLATFORM_XCB_KHR*/
9483
9484 struct DebugMarkerMarkerInfoEXT
9485 {
9486 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9487 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9488 , pNext( nullptr )
9489 , pMarkerName( pMarkerName_ )
9490 {
9491 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9492 }
9493
9494 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9495 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009496 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009497 }
9498
9499 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9500 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009501 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009502 return *this;
9503 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009504 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9505 {
9506 pNext = pNext_;
9507 return *this;
9508 }
9509
9510 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9511 {
9512 pMarkerName = pMarkerName_;
9513 return *this;
9514 }
9515
9516 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9517 {
9518 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9519 return *this;
9520 }
9521
9522 operator const VkDebugMarkerMarkerInfoEXT&() const
9523 {
9524 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9525 }
9526
9527 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9528 {
9529 return ( sType == rhs.sType )
9530 && ( pNext == rhs.pNext )
9531 && ( pMarkerName == rhs.pMarkerName )
9532 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9533 }
9534
9535 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9536 {
9537 return !operator==( rhs );
9538 }
9539
9540 private:
9541 StructureType sType;
9542
9543 public:
9544 const void* pNext;
9545 const char* pMarkerName;
9546 float color[4];
9547 };
9548 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9549
9550 struct DedicatedAllocationImageCreateInfoNV
9551 {
9552 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9553 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9554 , pNext( nullptr )
9555 , dedicatedAllocation( dedicatedAllocation_ )
9556 {
9557 }
9558
9559 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9560 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009561 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009562 }
9563
9564 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9565 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009566 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009567 return *this;
9568 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009569 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9570 {
9571 pNext = pNext_;
9572 return *this;
9573 }
9574
9575 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9576 {
9577 dedicatedAllocation = dedicatedAllocation_;
9578 return *this;
9579 }
9580
9581 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9582 {
9583 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9584 }
9585
9586 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9587 {
9588 return ( sType == rhs.sType )
9589 && ( pNext == rhs.pNext )
9590 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9591 }
9592
9593 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9594 {
9595 return !operator==( rhs );
9596 }
9597
9598 private:
9599 StructureType sType;
9600
9601 public:
9602 const void* pNext;
9603 Bool32 dedicatedAllocation;
9604 };
9605 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9606
9607 struct DedicatedAllocationBufferCreateInfoNV
9608 {
9609 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9610 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9611 , pNext( nullptr )
9612 , dedicatedAllocation( dedicatedAllocation_ )
9613 {
9614 }
9615
9616 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9617 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009618 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009619 }
9620
9621 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9622 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009623 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009624 return *this;
9625 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009626 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9627 {
9628 pNext = pNext_;
9629 return *this;
9630 }
9631
9632 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9633 {
9634 dedicatedAllocation = dedicatedAllocation_;
9635 return *this;
9636 }
9637
9638 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9639 {
9640 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9641 }
9642
9643 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9644 {
9645 return ( sType == rhs.sType )
9646 && ( pNext == rhs.pNext )
9647 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9648 }
9649
9650 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9651 {
9652 return !operator==( rhs );
9653 }
9654
9655 private:
9656 StructureType sType;
9657
9658 public:
9659 const void* pNext;
9660 Bool32 dedicatedAllocation;
9661 };
9662 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9663
9664 struct DedicatedAllocationMemoryAllocateInfoNV
9665 {
9666 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9667 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9668 , pNext( nullptr )
9669 , image( image_ )
9670 , buffer( buffer_ )
9671 {
9672 }
9673
9674 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9675 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009676 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009677 }
9678
9679 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9680 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009681 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009682 return *this;
9683 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009684 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9685 {
9686 pNext = pNext_;
9687 return *this;
9688 }
9689
9690 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9691 {
9692 image = image_;
9693 return *this;
9694 }
9695
9696 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9697 {
9698 buffer = buffer_;
9699 return *this;
9700 }
9701
9702 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9703 {
9704 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9705 }
9706
9707 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9708 {
9709 return ( sType == rhs.sType )
9710 && ( pNext == rhs.pNext )
9711 && ( image == rhs.image )
9712 && ( buffer == rhs.buffer );
9713 }
9714
9715 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9716 {
9717 return !operator==( rhs );
9718 }
9719
9720 private:
9721 StructureType sType;
9722
9723 public:
9724 const void* pNext;
9725 Image image;
9726 Buffer buffer;
9727 };
9728 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9729
Lenny Komow6501c122016-08-31 15:03:49 -06009730#ifdef VK_USE_PLATFORM_WIN32_KHR
9731 struct ExportMemoryWin32HandleInfoNV
9732 {
9733 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9734 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9735 , pNext( nullptr )
9736 , pAttributes( pAttributes_ )
9737 , dwAccess( dwAccess_ )
9738 {
9739 }
9740
9741 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9742 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009743 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009744 }
9745
9746 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9747 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009748 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009749 return *this;
9750 }
Lenny Komow6501c122016-08-31 15:03:49 -06009751 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9752 {
9753 pNext = pNext_;
9754 return *this;
9755 }
9756
9757 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9758 {
9759 pAttributes = pAttributes_;
9760 return *this;
9761 }
9762
9763 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9764 {
9765 dwAccess = dwAccess_;
9766 return *this;
9767 }
9768
9769 operator const VkExportMemoryWin32HandleInfoNV&() const
9770 {
9771 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9772 }
9773
9774 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9775 {
9776 return ( sType == rhs.sType )
9777 && ( pNext == rhs.pNext )
9778 && ( pAttributes == rhs.pAttributes )
9779 && ( dwAccess == rhs.dwAccess );
9780 }
9781
9782 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9783 {
9784 return !operator==( rhs );
9785 }
9786
9787 private:
9788 StructureType sType;
9789
9790 public:
9791 const void* pNext;
9792 const SECURITY_ATTRIBUTES* pAttributes;
9793 DWORD dwAccess;
9794 };
9795 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9796#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9797
9798#ifdef VK_USE_PLATFORM_WIN32_KHR
9799 struct Win32KeyedMutexAcquireReleaseInfoNV
9800 {
9801 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 )
9802 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9803 , pNext( nullptr )
9804 , acquireCount( acquireCount_ )
9805 , pAcquireSyncs( pAcquireSyncs_ )
9806 , pAcquireKeys( pAcquireKeys_ )
9807 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9808 , releaseCount( releaseCount_ )
9809 , pReleaseSyncs( pReleaseSyncs_ )
9810 , pReleaseKeys( pReleaseKeys_ )
9811 {
9812 }
9813
9814 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009816 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009817 }
9818
9819 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009821 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009822 return *this;
9823 }
Lenny Komow6501c122016-08-31 15:03:49 -06009824 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9825 {
9826 pNext = pNext_;
9827 return *this;
9828 }
9829
9830 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9831 {
9832 acquireCount = acquireCount_;
9833 return *this;
9834 }
9835
9836 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9837 {
9838 pAcquireSyncs = pAcquireSyncs_;
9839 return *this;
9840 }
9841
9842 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9843 {
9844 pAcquireKeys = pAcquireKeys_;
9845 return *this;
9846 }
9847
9848 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9849 {
9850 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9851 return *this;
9852 }
9853
9854 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9855 {
9856 releaseCount = releaseCount_;
9857 return *this;
9858 }
9859
9860 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9861 {
9862 pReleaseSyncs = pReleaseSyncs_;
9863 return *this;
9864 }
9865
9866 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9867 {
9868 pReleaseKeys = pReleaseKeys_;
9869 return *this;
9870 }
9871
9872 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9873 {
9874 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9875 }
9876
9877 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9878 {
9879 return ( sType == rhs.sType )
9880 && ( pNext == rhs.pNext )
9881 && ( acquireCount == rhs.acquireCount )
9882 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9883 && ( pAcquireKeys == rhs.pAcquireKeys )
9884 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9885 && ( releaseCount == rhs.releaseCount )
9886 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9887 && ( pReleaseKeys == rhs.pReleaseKeys );
9888 }
9889
9890 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9891 {
9892 return !operator==( rhs );
9893 }
9894
9895 private:
9896 StructureType sType;
9897
9898 public:
9899 const void* pNext;
9900 uint32_t acquireCount;
9901 const DeviceMemory* pAcquireSyncs;
9902 const uint64_t* pAcquireKeys;
9903 const uint32_t* pAcquireTimeoutMilliseconds;
9904 uint32_t releaseCount;
9905 const DeviceMemory* pReleaseSyncs;
9906 const uint64_t* pReleaseKeys;
9907 };
9908 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9909#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9910
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009911 struct DeviceGeneratedCommandsFeaturesNVX
9912 {
9913 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9914 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9915 , pNext( nullptr )
9916 , computeBindingPointSupport( computeBindingPointSupport_ )
9917 {
9918 }
9919
9920 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009922 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009923 }
9924
9925 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009927 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009928 return *this;
9929 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009930 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9931 {
9932 pNext = pNext_;
9933 return *this;
9934 }
9935
9936 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9937 {
9938 computeBindingPointSupport = computeBindingPointSupport_;
9939 return *this;
9940 }
9941
9942 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9943 {
9944 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9945 }
9946
9947 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9948 {
9949 return ( sType == rhs.sType )
9950 && ( pNext == rhs.pNext )
9951 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9952 }
9953
9954 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9955 {
9956 return !operator==( rhs );
9957 }
9958
9959 private:
9960 StructureType sType;
9961
9962 public:
9963 const void* pNext;
9964 Bool32 computeBindingPointSupport;
9965 };
9966 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9967
9968 struct DeviceGeneratedCommandsLimitsNVX
9969 {
9970 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9971 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9972 , pNext( nullptr )
9973 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9974 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9975 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9976 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9977 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9978 {
9979 }
9980
9981 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9982 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009983 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009984 }
9985
9986 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9987 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009988 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009989 return *this;
9990 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009991 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9992 {
9993 pNext = pNext_;
9994 return *this;
9995 }
9996
9997 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9998 {
9999 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10000 return *this;
10001 }
10002
10003 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10004 {
10005 maxObjectEntryCounts = maxObjectEntryCounts_;
10006 return *this;
10007 }
10008
10009 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10010 {
10011 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10012 return *this;
10013 }
10014
10015 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10016 {
10017 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10018 return *this;
10019 }
10020
10021 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10022 {
10023 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10024 return *this;
10025 }
10026
10027 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10028 {
10029 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10030 }
10031
10032 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10033 {
10034 return ( sType == rhs.sType )
10035 && ( pNext == rhs.pNext )
10036 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10037 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10038 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10039 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10040 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10041 }
10042
10043 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10044 {
10045 return !operator==( rhs );
10046 }
10047
10048 private:
10049 StructureType sType;
10050
10051 public:
10052 const void* pNext;
10053 uint32_t maxIndirectCommandsLayoutTokenCount;
10054 uint32_t maxObjectEntryCounts;
10055 uint32_t minSequenceCountBufferOffsetAlignment;
10056 uint32_t minSequenceIndexBufferOffsetAlignment;
10057 uint32_t minCommandsTokenBufferOffsetAlignment;
10058 };
10059 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10060
10061 struct CmdReserveSpaceForCommandsInfoNVX
10062 {
10063 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10064 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10065 , pNext( nullptr )
10066 , objectTable( objectTable_ )
10067 , indirectCommandsLayout( indirectCommandsLayout_ )
10068 , maxSequencesCount( maxSequencesCount_ )
10069 {
10070 }
10071
10072 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10073 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010074 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010075 }
10076
10077 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010079 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010080 return *this;
10081 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010082 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10083 {
10084 pNext = pNext_;
10085 return *this;
10086 }
10087
10088 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10089 {
10090 objectTable = objectTable_;
10091 return *this;
10092 }
10093
10094 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10095 {
10096 indirectCommandsLayout = indirectCommandsLayout_;
10097 return *this;
10098 }
10099
10100 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10101 {
10102 maxSequencesCount = maxSequencesCount_;
10103 return *this;
10104 }
10105
10106 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10107 {
10108 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10109 }
10110
10111 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10112 {
10113 return ( sType == rhs.sType )
10114 && ( pNext == rhs.pNext )
10115 && ( objectTable == rhs.objectTable )
10116 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10117 && ( maxSequencesCount == rhs.maxSequencesCount );
10118 }
10119
10120 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10121 {
10122 return !operator==( rhs );
10123 }
10124
10125 private:
10126 StructureType sType;
10127
10128 public:
10129 const void* pNext;
10130 ObjectTableNVX objectTable;
10131 IndirectCommandsLayoutNVX indirectCommandsLayout;
10132 uint32_t maxSequencesCount;
10133 };
10134 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10135
Mark Young39389872017-01-19 21:10:49 -070010136 struct PhysicalDeviceFeatures2KHR
10137 {
10138 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10139 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10140 , pNext( nullptr )
10141 , features( features_ )
10142 {
10143 }
10144
10145 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10146 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010147 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010148 }
10149
10150 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10151 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010152 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010153 return *this;
10154 }
Mark Young39389872017-01-19 21:10:49 -070010155 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10156 {
10157 pNext = pNext_;
10158 return *this;
10159 }
10160
10161 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10162 {
10163 features = features_;
10164 return *this;
10165 }
10166
10167 operator const VkPhysicalDeviceFeatures2KHR&() const
10168 {
10169 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10170 }
10171
10172 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10173 {
10174 return ( sType == rhs.sType )
10175 && ( pNext == rhs.pNext )
10176 && ( features == rhs.features );
10177 }
10178
10179 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10180 {
10181 return !operator==( rhs );
10182 }
10183
10184 private:
10185 StructureType sType;
10186
10187 public:
10188 void* pNext;
10189 PhysicalDeviceFeatures features;
10190 };
10191 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10192
Mark Young0f183a82017-02-28 09:58:04 -070010193 struct PhysicalDevicePushDescriptorPropertiesKHR
10194 {
10195 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10196 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10197 , pNext( nullptr )
10198 , maxPushDescriptors( maxPushDescriptors_ )
10199 {
10200 }
10201
10202 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010204 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010205 }
10206
10207 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010209 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010210 return *this;
10211 }
Mark Young0f183a82017-02-28 09:58:04 -070010212 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10213 {
10214 pNext = pNext_;
10215 return *this;
10216 }
10217
10218 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10219 {
10220 maxPushDescriptors = maxPushDescriptors_;
10221 return *this;
10222 }
10223
10224 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10225 {
10226 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10227 }
10228
10229 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10230 {
10231 return ( sType == rhs.sType )
10232 && ( pNext == rhs.pNext )
10233 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10234 }
10235
10236 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10237 {
10238 return !operator==( rhs );
10239 }
10240
10241 private:
10242 StructureType sType;
10243
10244 public:
10245 void* pNext;
10246 uint32_t maxPushDescriptors;
10247 };
10248 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10249
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010250 struct PresentRegionsKHR
10251 {
10252 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10253 : sType( StructureType::ePresentRegionsKHR )
10254 , pNext( nullptr )
10255 , swapchainCount( swapchainCount_ )
10256 , pRegions( pRegions_ )
10257 {
10258 }
10259
10260 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010262 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010263 }
10264
10265 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010267 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010268 return *this;
10269 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010270 PresentRegionsKHR& setPNext( const void* pNext_ )
10271 {
10272 pNext = pNext_;
10273 return *this;
10274 }
10275
10276 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10277 {
10278 swapchainCount = swapchainCount_;
10279 return *this;
10280 }
10281
10282 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10283 {
10284 pRegions = pRegions_;
10285 return *this;
10286 }
10287
10288 operator const VkPresentRegionsKHR&() const
10289 {
10290 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10291 }
10292
10293 bool operator==( PresentRegionsKHR const& rhs ) const
10294 {
10295 return ( sType == rhs.sType )
10296 && ( pNext == rhs.pNext )
10297 && ( swapchainCount == rhs.swapchainCount )
10298 && ( pRegions == rhs.pRegions );
10299 }
10300
10301 bool operator!=( PresentRegionsKHR const& rhs ) const
10302 {
10303 return !operator==( rhs );
10304 }
10305
10306 private:
10307 StructureType sType;
10308
10309 public:
10310 const void* pNext;
10311 uint32_t swapchainCount;
10312 const PresentRegionKHR* pRegions;
10313 };
10314 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10315
Mark Young0f183a82017-02-28 09:58:04 -070010316 struct PhysicalDeviceIDPropertiesKHX
10317 {
10318 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10319 {
10320 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10321 }
10322
10323 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10324 {
10325 return ( sType == rhs.sType )
10326 && ( pNext == rhs.pNext )
10327 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10328 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10329 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10330 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10331 }
10332
10333 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10334 {
10335 return !operator==( rhs );
10336 }
10337
10338 private:
10339 StructureType sType;
10340
10341 public:
10342 void* pNext;
10343 uint8_t deviceUUID[VK_UUID_SIZE];
10344 uint8_t driverUUID[VK_UUID_SIZE];
10345 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10346 Bool32 deviceLUIDValid;
10347 };
10348 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10349
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010350#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010351 struct ExportMemoryWin32HandleInfoKHX
10352 {
10353 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10354 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10355 , pNext( nullptr )
10356 , pAttributes( pAttributes_ )
10357 , dwAccess( dwAccess_ )
10358 , name( name_ )
10359 {
10360 }
10361
10362 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10363 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010364 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010365 }
10366
10367 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10368 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010369 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010370 return *this;
10371 }
Mark Young0f183a82017-02-28 09:58:04 -070010372 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10373 {
10374 pNext = pNext_;
10375 return *this;
10376 }
10377
10378 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10379 {
10380 pAttributes = pAttributes_;
10381 return *this;
10382 }
10383
10384 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10385 {
10386 dwAccess = dwAccess_;
10387 return *this;
10388 }
10389
10390 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10391 {
10392 name = name_;
10393 return *this;
10394 }
10395
10396 operator const VkExportMemoryWin32HandleInfoKHX&() const
10397 {
10398 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10399 }
10400
10401 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10402 {
10403 return ( sType == rhs.sType )
10404 && ( pNext == rhs.pNext )
10405 && ( pAttributes == rhs.pAttributes )
10406 && ( dwAccess == rhs.dwAccess )
10407 && ( name == rhs.name );
10408 }
10409
10410 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10411 {
10412 return !operator==( rhs );
10413 }
10414
10415 private:
10416 StructureType sType;
10417
10418 public:
10419 const void* pNext;
10420 const SECURITY_ATTRIBUTES* pAttributes;
10421 DWORD dwAccess;
10422 LPCWSTR name;
10423 };
10424 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010425#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010426
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010427#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010428 struct MemoryWin32HandlePropertiesKHX
10429 {
10430 operator const VkMemoryWin32HandlePropertiesKHX&() const
10431 {
10432 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10433 }
10434
10435 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10436 {
10437 return ( sType == rhs.sType )
10438 && ( pNext == rhs.pNext )
10439 && ( memoryTypeBits == rhs.memoryTypeBits );
10440 }
10441
10442 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10443 {
10444 return !operator==( rhs );
10445 }
10446
10447 private:
10448 StructureType sType;
10449
10450 public:
10451 void* pNext;
10452 uint32_t memoryTypeBits;
10453 };
10454 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010455#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010456
10457 struct MemoryFdPropertiesKHX
10458 {
10459 operator const VkMemoryFdPropertiesKHX&() const
10460 {
10461 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10462 }
10463
10464 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10465 {
10466 return ( sType == rhs.sType )
10467 && ( pNext == rhs.pNext )
10468 && ( memoryTypeBits == rhs.memoryTypeBits );
10469 }
10470
10471 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10472 {
10473 return !operator==( rhs );
10474 }
10475
10476 private:
10477 StructureType sType;
10478
10479 public:
10480 void* pNext;
10481 uint32_t memoryTypeBits;
10482 };
10483 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10484
10485#ifdef VK_USE_PLATFORM_WIN32_KHR
10486 struct Win32KeyedMutexAcquireReleaseInfoKHX
10487 {
10488 Win32KeyedMutexAcquireReleaseInfoKHX( 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 )
10489 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10490 , pNext( nullptr )
10491 , acquireCount( acquireCount_ )
10492 , pAcquireSyncs( pAcquireSyncs_ )
10493 , pAcquireKeys( pAcquireKeys_ )
10494 , pAcquireTimeouts( pAcquireTimeouts_ )
10495 , releaseCount( releaseCount_ )
10496 , pReleaseSyncs( pReleaseSyncs_ )
10497 , pReleaseKeys( pReleaseKeys_ )
10498 {
10499 }
10500
10501 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10502 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010503 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010504 }
10505
10506 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010508 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010509 return *this;
10510 }
Mark Young0f183a82017-02-28 09:58:04 -070010511 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10512 {
10513 pNext = pNext_;
10514 return *this;
10515 }
10516
10517 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10518 {
10519 acquireCount = acquireCount_;
10520 return *this;
10521 }
10522
10523 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10524 {
10525 pAcquireSyncs = pAcquireSyncs_;
10526 return *this;
10527 }
10528
10529 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10530 {
10531 pAcquireKeys = pAcquireKeys_;
10532 return *this;
10533 }
10534
10535 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10536 {
10537 pAcquireTimeouts = pAcquireTimeouts_;
10538 return *this;
10539 }
10540
10541 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10542 {
10543 releaseCount = releaseCount_;
10544 return *this;
10545 }
10546
10547 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10548 {
10549 pReleaseSyncs = pReleaseSyncs_;
10550 return *this;
10551 }
10552
10553 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10554 {
10555 pReleaseKeys = pReleaseKeys_;
10556 return *this;
10557 }
10558
10559 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10560 {
10561 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10562 }
10563
10564 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10565 {
10566 return ( sType == rhs.sType )
10567 && ( pNext == rhs.pNext )
10568 && ( acquireCount == rhs.acquireCount )
10569 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10570 && ( pAcquireKeys == rhs.pAcquireKeys )
10571 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10572 && ( releaseCount == rhs.releaseCount )
10573 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10574 && ( pReleaseKeys == rhs.pReleaseKeys );
10575 }
10576
10577 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10578 {
10579 return !operator==( rhs );
10580 }
10581
10582 private:
10583 StructureType sType;
10584
10585 public:
10586 const void* pNext;
10587 uint32_t acquireCount;
10588 const DeviceMemory* pAcquireSyncs;
10589 const uint64_t* pAcquireKeys;
10590 const uint32_t* pAcquireTimeouts;
10591 uint32_t releaseCount;
10592 const DeviceMemory* pReleaseSyncs;
10593 const uint64_t* pReleaseKeys;
10594 };
10595 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10596#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10597
10598#ifdef VK_USE_PLATFORM_WIN32_KHX
10599 struct ExportSemaphoreWin32HandleInfoKHX
10600 {
10601 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10602 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10603 , pNext( nullptr )
10604 , pAttributes( pAttributes_ )
10605 , dwAccess( dwAccess_ )
10606 , name( name_ )
10607 {
10608 }
10609
10610 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10611 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010612 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010613 }
10614
10615 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10616 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010617 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010618 return *this;
10619 }
Mark Young0f183a82017-02-28 09:58:04 -070010620 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10621 {
10622 pNext = pNext_;
10623 return *this;
10624 }
10625
10626 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10627 {
10628 pAttributes = pAttributes_;
10629 return *this;
10630 }
10631
10632 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10633 {
10634 dwAccess = dwAccess_;
10635 return *this;
10636 }
10637
10638 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10639 {
10640 name = name_;
10641 return *this;
10642 }
10643
10644 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10645 {
10646 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10647 }
10648
10649 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10650 {
10651 return ( sType == rhs.sType )
10652 && ( pNext == rhs.pNext )
10653 && ( pAttributes == rhs.pAttributes )
10654 && ( dwAccess == rhs.dwAccess )
10655 && ( name == rhs.name );
10656 }
10657
10658 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10659 {
10660 return !operator==( rhs );
10661 }
10662
10663 private:
10664 StructureType sType;
10665
10666 public:
10667 const void* pNext;
10668 const SECURITY_ATTRIBUTES* pAttributes;
10669 DWORD dwAccess;
10670 LPCWSTR name;
10671 };
10672 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10673#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10674
10675#ifdef VK_USE_PLATFORM_WIN32_KHX
10676 struct D3D12FenceSubmitInfoKHX
10677 {
10678 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10679 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10680 , pNext( nullptr )
10681 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10682 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10683 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10684 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10685 {
10686 }
10687
10688 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10689 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010690 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010691 }
10692
10693 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010695 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010696 return *this;
10697 }
Mark Young0f183a82017-02-28 09:58:04 -070010698 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10699 {
10700 pNext = pNext_;
10701 return *this;
10702 }
10703
10704 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10705 {
10706 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10707 return *this;
10708 }
10709
10710 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10711 {
10712 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10713 return *this;
10714 }
10715
10716 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10717 {
10718 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10719 return *this;
10720 }
10721
10722 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10723 {
10724 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10725 return *this;
10726 }
10727
10728 operator const VkD3D12FenceSubmitInfoKHX&() const
10729 {
10730 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10731 }
10732
10733 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10734 {
10735 return ( sType == rhs.sType )
10736 && ( pNext == rhs.pNext )
10737 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10738 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10739 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10740 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10741 }
10742
10743 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10744 {
10745 return !operator==( rhs );
10746 }
10747
10748 private:
10749 StructureType sType;
10750
10751 public:
10752 const void* pNext;
10753 uint32_t waitSemaphoreValuesCount;
10754 const uint64_t* pWaitSemaphoreValues;
10755 uint32_t signalSemaphoreValuesCount;
10756 const uint64_t* pSignalSemaphoreValues;
10757 };
10758 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10759#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10760
10761 struct PhysicalDeviceMultiviewFeaturesKHX
10762 {
10763 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10764 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10765 , pNext( nullptr )
10766 , multiview( multiview_ )
10767 , multiviewGeometryShader( multiviewGeometryShader_ )
10768 , multiviewTessellationShader( multiviewTessellationShader_ )
10769 {
10770 }
10771
10772 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10773 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010774 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010775 }
10776
10777 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10778 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010779 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010780 return *this;
10781 }
Mark Young0f183a82017-02-28 09:58:04 -070010782 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10783 {
10784 pNext = pNext_;
10785 return *this;
10786 }
10787
10788 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10789 {
10790 multiview = multiview_;
10791 return *this;
10792 }
10793
10794 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10795 {
10796 multiviewGeometryShader = multiviewGeometryShader_;
10797 return *this;
10798 }
10799
10800 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10801 {
10802 multiviewTessellationShader = multiviewTessellationShader_;
10803 return *this;
10804 }
10805
10806 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10807 {
10808 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10809 }
10810
10811 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10812 {
10813 return ( sType == rhs.sType )
10814 && ( pNext == rhs.pNext )
10815 && ( multiview == rhs.multiview )
10816 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10817 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10818 }
10819
10820 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10821 {
10822 return !operator==( rhs );
10823 }
10824
10825 private:
10826 StructureType sType;
10827
10828 public:
10829 void* pNext;
10830 Bool32 multiview;
10831 Bool32 multiviewGeometryShader;
10832 Bool32 multiviewTessellationShader;
10833 };
10834 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10835
10836 struct PhysicalDeviceMultiviewPropertiesKHX
10837 {
10838 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10839 {
10840 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10841 }
10842
10843 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10844 {
10845 return ( sType == rhs.sType )
10846 && ( pNext == rhs.pNext )
10847 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10848 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10849 }
10850
10851 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10852 {
10853 return !operator==( rhs );
10854 }
10855
10856 private:
10857 StructureType sType;
10858
10859 public:
10860 void* pNext;
10861 uint32_t maxMultiviewViewCount;
10862 uint32_t maxMultiviewInstanceIndex;
10863 };
10864 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10865
10866 struct RenderPassMultiviewCreateInfoKHX
10867 {
10868 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 )
10869 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10870 , pNext( nullptr )
10871 , subpassCount( subpassCount_ )
10872 , pViewMasks( pViewMasks_ )
10873 , dependencyCount( dependencyCount_ )
10874 , pViewOffsets( pViewOffsets_ )
10875 , correlationMaskCount( correlationMaskCount_ )
10876 , pCorrelationMasks( pCorrelationMasks_ )
10877 {
10878 }
10879
10880 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10881 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010882 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010883 }
10884
10885 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10886 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010887 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010888 return *this;
10889 }
Mark Young0f183a82017-02-28 09:58:04 -070010890 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10891 {
10892 pNext = pNext_;
10893 return *this;
10894 }
10895
10896 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10897 {
10898 subpassCount = subpassCount_;
10899 return *this;
10900 }
10901
10902 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10903 {
10904 pViewMasks = pViewMasks_;
10905 return *this;
10906 }
10907
10908 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10909 {
10910 dependencyCount = dependencyCount_;
10911 return *this;
10912 }
10913
10914 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10915 {
10916 pViewOffsets = pViewOffsets_;
10917 return *this;
10918 }
10919
10920 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10921 {
10922 correlationMaskCount = correlationMaskCount_;
10923 return *this;
10924 }
10925
10926 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10927 {
10928 pCorrelationMasks = pCorrelationMasks_;
10929 return *this;
10930 }
10931
10932 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10933 {
10934 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10935 }
10936
10937 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10938 {
10939 return ( sType == rhs.sType )
10940 && ( pNext == rhs.pNext )
10941 && ( subpassCount == rhs.subpassCount )
10942 && ( pViewMasks == rhs.pViewMasks )
10943 && ( dependencyCount == rhs.dependencyCount )
10944 && ( pViewOffsets == rhs.pViewOffsets )
10945 && ( correlationMaskCount == rhs.correlationMaskCount )
10946 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10947 }
10948
10949 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10950 {
10951 return !operator==( rhs );
10952 }
10953
10954 private:
10955 StructureType sType;
10956
10957 public:
10958 const void* pNext;
10959 uint32_t subpassCount;
10960 const uint32_t* pViewMasks;
10961 uint32_t dependencyCount;
10962 const int32_t* pViewOffsets;
10963 uint32_t correlationMaskCount;
10964 const uint32_t* pCorrelationMasks;
10965 };
10966 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10967
10968 struct BindBufferMemoryInfoKHX
10969 {
10970 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10971 : sType( StructureType::eBindBufferMemoryInfoKHX )
10972 , pNext( nullptr )
10973 , buffer( buffer_ )
10974 , memory( memory_ )
10975 , memoryOffset( memoryOffset_ )
10976 , deviceIndexCount( deviceIndexCount_ )
10977 , pDeviceIndices( pDeviceIndices_ )
10978 {
10979 }
10980
10981 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10982 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010983 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010984 }
10985
10986 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10987 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010988 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010989 return *this;
10990 }
Mark Young0f183a82017-02-28 09:58:04 -070010991 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10992 {
10993 pNext = pNext_;
10994 return *this;
10995 }
10996
10997 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10998 {
10999 buffer = buffer_;
11000 return *this;
11001 }
11002
11003 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11004 {
11005 memory = memory_;
11006 return *this;
11007 }
11008
11009 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11010 {
11011 memoryOffset = memoryOffset_;
11012 return *this;
11013 }
11014
11015 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11016 {
11017 deviceIndexCount = deviceIndexCount_;
11018 return *this;
11019 }
11020
11021 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11022 {
11023 pDeviceIndices = pDeviceIndices_;
11024 return *this;
11025 }
11026
11027 operator const VkBindBufferMemoryInfoKHX&() const
11028 {
11029 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
11030 }
11031
11032 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
11033 {
11034 return ( sType == rhs.sType )
11035 && ( pNext == rhs.pNext )
11036 && ( buffer == rhs.buffer )
11037 && ( memory == rhs.memory )
11038 && ( memoryOffset == rhs.memoryOffset )
11039 && ( deviceIndexCount == rhs.deviceIndexCount )
11040 && ( pDeviceIndices == rhs.pDeviceIndices );
11041 }
11042
11043 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
11044 {
11045 return !operator==( rhs );
11046 }
11047
11048 private:
11049 StructureType sType;
11050
11051 public:
11052 const void* pNext;
11053 Buffer buffer;
11054 DeviceMemory memory;
11055 DeviceSize memoryOffset;
11056 uint32_t deviceIndexCount;
11057 const uint32_t* pDeviceIndices;
11058 };
11059 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
11060
11061 struct BindImageMemoryInfoKHX
11062 {
11063 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 )
11064 : sType( StructureType::eBindImageMemoryInfoKHX )
11065 , pNext( nullptr )
11066 , image( image_ )
11067 , memory( memory_ )
11068 , memoryOffset( memoryOffset_ )
11069 , deviceIndexCount( deviceIndexCount_ )
11070 , pDeviceIndices( pDeviceIndices_ )
11071 , SFRRectCount( SFRRectCount_ )
11072 , pSFRRects( pSFRRects_ )
11073 {
11074 }
11075
11076 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
11077 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011078 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011079 }
11080
11081 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
11082 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011083 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011084 return *this;
11085 }
Mark Young0f183a82017-02-28 09:58:04 -070011086 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
11087 {
11088 pNext = pNext_;
11089 return *this;
11090 }
11091
11092 BindImageMemoryInfoKHX& setImage( Image image_ )
11093 {
11094 image = image_;
11095 return *this;
11096 }
11097
11098 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11099 {
11100 memory = memory_;
11101 return *this;
11102 }
11103
11104 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11105 {
11106 memoryOffset = memoryOffset_;
11107 return *this;
11108 }
11109
11110 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11111 {
11112 deviceIndexCount = deviceIndexCount_;
11113 return *this;
11114 }
11115
11116 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11117 {
11118 pDeviceIndices = pDeviceIndices_;
11119 return *this;
11120 }
11121
11122 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11123 {
11124 SFRRectCount = SFRRectCount_;
11125 return *this;
11126 }
11127
11128 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11129 {
11130 pSFRRects = pSFRRects_;
11131 return *this;
11132 }
11133
11134 operator const VkBindImageMemoryInfoKHX&() const
11135 {
11136 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11137 }
11138
11139 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11140 {
11141 return ( sType == rhs.sType )
11142 && ( pNext == rhs.pNext )
11143 && ( image == rhs.image )
11144 && ( memory == rhs.memory )
11145 && ( memoryOffset == rhs.memoryOffset )
11146 && ( deviceIndexCount == rhs.deviceIndexCount )
11147 && ( pDeviceIndices == rhs.pDeviceIndices )
11148 && ( SFRRectCount == rhs.SFRRectCount )
11149 && ( pSFRRects == rhs.pSFRRects );
11150 }
11151
11152 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11153 {
11154 return !operator==( rhs );
11155 }
11156
11157 private:
11158 StructureType sType;
11159
11160 public:
11161 const void* pNext;
11162 Image image;
11163 DeviceMemory memory;
11164 DeviceSize memoryOffset;
11165 uint32_t deviceIndexCount;
11166 const uint32_t* pDeviceIndices;
11167 uint32_t SFRRectCount;
11168 const Rect2D* pSFRRects;
11169 };
11170 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11171
11172 struct DeviceGroupRenderPassBeginInfoKHX
11173 {
11174 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11175 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11176 , pNext( nullptr )
11177 , deviceMask( deviceMask_ )
11178 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11179 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11180 {
11181 }
11182
11183 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11184 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011185 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011186 }
11187
11188 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011190 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011191 return *this;
11192 }
Mark Young0f183a82017-02-28 09:58:04 -070011193 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11194 {
11195 pNext = pNext_;
11196 return *this;
11197 }
11198
11199 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11200 {
11201 deviceMask = deviceMask_;
11202 return *this;
11203 }
11204
11205 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11206 {
11207 deviceRenderAreaCount = deviceRenderAreaCount_;
11208 return *this;
11209 }
11210
11211 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11212 {
11213 pDeviceRenderAreas = pDeviceRenderAreas_;
11214 return *this;
11215 }
11216
11217 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11218 {
11219 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11220 }
11221
11222 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11223 {
11224 return ( sType == rhs.sType )
11225 && ( pNext == rhs.pNext )
11226 && ( deviceMask == rhs.deviceMask )
11227 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11228 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11229 }
11230
11231 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11232 {
11233 return !operator==( rhs );
11234 }
11235
11236 private:
11237 StructureType sType;
11238
11239 public:
11240 const void* pNext;
11241 uint32_t deviceMask;
11242 uint32_t deviceRenderAreaCount;
11243 const Rect2D* pDeviceRenderAreas;
11244 };
11245 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11246
11247 struct DeviceGroupCommandBufferBeginInfoKHX
11248 {
11249 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11250 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11251 , pNext( nullptr )
11252 , deviceMask( deviceMask_ )
11253 {
11254 }
11255
11256 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11257 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011258 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011259 }
11260
11261 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11262 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011263 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011264 return *this;
11265 }
Mark Young0f183a82017-02-28 09:58:04 -070011266 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11267 {
11268 pNext = pNext_;
11269 return *this;
11270 }
11271
11272 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11273 {
11274 deviceMask = deviceMask_;
11275 return *this;
11276 }
11277
11278 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11279 {
11280 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11281 }
11282
11283 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11284 {
11285 return ( sType == rhs.sType )
11286 && ( pNext == rhs.pNext )
11287 && ( deviceMask == rhs.deviceMask );
11288 }
11289
11290 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11291 {
11292 return !operator==( rhs );
11293 }
11294
11295 private:
11296 StructureType sType;
11297
11298 public:
11299 const void* pNext;
11300 uint32_t deviceMask;
11301 };
11302 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11303
11304 struct DeviceGroupSubmitInfoKHX
11305 {
11306 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 )
11307 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11308 , pNext( nullptr )
11309 , waitSemaphoreCount( waitSemaphoreCount_ )
11310 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11311 , commandBufferCount( commandBufferCount_ )
11312 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11313 , signalSemaphoreCount( signalSemaphoreCount_ )
11314 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11315 {
11316 }
11317
11318 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011320 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011321 }
11322
11323 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11324 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011325 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011326 return *this;
11327 }
Mark Young0f183a82017-02-28 09:58:04 -070011328 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11329 {
11330 pNext = pNext_;
11331 return *this;
11332 }
11333
11334 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11335 {
11336 waitSemaphoreCount = waitSemaphoreCount_;
11337 return *this;
11338 }
11339
11340 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11341 {
11342 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11343 return *this;
11344 }
11345
11346 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11347 {
11348 commandBufferCount = commandBufferCount_;
11349 return *this;
11350 }
11351
11352 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11353 {
11354 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11355 return *this;
11356 }
11357
11358 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11359 {
11360 signalSemaphoreCount = signalSemaphoreCount_;
11361 return *this;
11362 }
11363
11364 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11365 {
11366 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11367 return *this;
11368 }
11369
11370 operator const VkDeviceGroupSubmitInfoKHX&() const
11371 {
11372 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11373 }
11374
11375 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11376 {
11377 return ( sType == rhs.sType )
11378 && ( pNext == rhs.pNext )
11379 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11380 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11381 && ( commandBufferCount == rhs.commandBufferCount )
11382 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11383 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11384 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11385 }
11386
11387 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11388 {
11389 return !operator==( rhs );
11390 }
11391
11392 private:
11393 StructureType sType;
11394
11395 public:
11396 const void* pNext;
11397 uint32_t waitSemaphoreCount;
11398 const uint32_t* pWaitSemaphoreDeviceIndices;
11399 uint32_t commandBufferCount;
11400 const uint32_t* pCommandBufferDeviceMasks;
11401 uint32_t signalSemaphoreCount;
11402 const uint32_t* pSignalSemaphoreDeviceIndices;
11403 };
11404 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11405
11406 struct DeviceGroupBindSparseInfoKHX
11407 {
11408 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11409 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11410 , pNext( nullptr )
11411 , resourceDeviceIndex( resourceDeviceIndex_ )
11412 , memoryDeviceIndex( memoryDeviceIndex_ )
11413 {
11414 }
11415
11416 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011418 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011419 }
11420
11421 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11422 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011423 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011424 return *this;
11425 }
Mark Young0f183a82017-02-28 09:58:04 -070011426 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11427 {
11428 pNext = pNext_;
11429 return *this;
11430 }
11431
11432 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11433 {
11434 resourceDeviceIndex = resourceDeviceIndex_;
11435 return *this;
11436 }
11437
11438 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11439 {
11440 memoryDeviceIndex = memoryDeviceIndex_;
11441 return *this;
11442 }
11443
11444 operator const VkDeviceGroupBindSparseInfoKHX&() const
11445 {
11446 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11447 }
11448
11449 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11450 {
11451 return ( sType == rhs.sType )
11452 && ( pNext == rhs.pNext )
11453 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11454 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11455 }
11456
11457 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11458 {
11459 return !operator==( rhs );
11460 }
11461
11462 private:
11463 StructureType sType;
11464
11465 public:
11466 const void* pNext;
11467 uint32_t resourceDeviceIndex;
11468 uint32_t memoryDeviceIndex;
11469 };
11470 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11471
11472 struct ImageSwapchainCreateInfoKHX
11473 {
11474 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11475 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11476 , pNext( nullptr )
11477 , swapchain( swapchain_ )
11478 {
11479 }
11480
11481 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11482 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011483 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011484 }
11485
11486 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11487 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011488 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011489 return *this;
11490 }
Mark Young0f183a82017-02-28 09:58:04 -070011491 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11492 {
11493 pNext = pNext_;
11494 return *this;
11495 }
11496
11497 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11498 {
11499 swapchain = swapchain_;
11500 return *this;
11501 }
11502
11503 operator const VkImageSwapchainCreateInfoKHX&() const
11504 {
11505 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11506 }
11507
11508 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11509 {
11510 return ( sType == rhs.sType )
11511 && ( pNext == rhs.pNext )
11512 && ( swapchain == rhs.swapchain );
11513 }
11514
11515 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11516 {
11517 return !operator==( rhs );
11518 }
11519
11520 private:
11521 StructureType sType;
11522
11523 public:
11524 const void* pNext;
11525 SwapchainKHR swapchain;
11526 };
11527 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11528
11529 struct BindImageMemorySwapchainInfoKHX
11530 {
11531 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11532 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11533 , pNext( nullptr )
11534 , swapchain( swapchain_ )
11535 , imageIndex( imageIndex_ )
11536 {
11537 }
11538
11539 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11540 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011541 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011542 }
11543
11544 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11545 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011546 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011547 return *this;
11548 }
Mark Young0f183a82017-02-28 09:58:04 -070011549 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11550 {
11551 pNext = pNext_;
11552 return *this;
11553 }
11554
11555 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11556 {
11557 swapchain = swapchain_;
11558 return *this;
11559 }
11560
11561 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11562 {
11563 imageIndex = imageIndex_;
11564 return *this;
11565 }
11566
11567 operator const VkBindImageMemorySwapchainInfoKHX&() const
11568 {
11569 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11570 }
11571
11572 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11573 {
11574 return ( sType == rhs.sType )
11575 && ( pNext == rhs.pNext )
11576 && ( swapchain == rhs.swapchain )
11577 && ( imageIndex == rhs.imageIndex );
11578 }
11579
11580 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11581 {
11582 return !operator==( rhs );
11583 }
11584
11585 private:
11586 StructureType sType;
11587
11588 public:
11589 const void* pNext;
11590 SwapchainKHR swapchain;
11591 uint32_t imageIndex;
11592 };
11593 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11594
11595 struct AcquireNextImageInfoKHX
11596 {
11597 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11598 : sType( StructureType::eAcquireNextImageInfoKHX )
11599 , pNext( nullptr )
11600 , swapchain( swapchain_ )
11601 , timeout( timeout_ )
11602 , semaphore( semaphore_ )
11603 , fence( fence_ )
11604 , deviceMask( deviceMask_ )
11605 {
11606 }
11607
11608 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11609 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011610 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011611 }
11612
11613 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11614 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011615 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011616 return *this;
11617 }
Mark Young0f183a82017-02-28 09:58:04 -070011618 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11619 {
11620 pNext = pNext_;
11621 return *this;
11622 }
11623
11624 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11625 {
11626 swapchain = swapchain_;
11627 return *this;
11628 }
11629
11630 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11631 {
11632 timeout = timeout_;
11633 return *this;
11634 }
11635
11636 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11637 {
11638 semaphore = semaphore_;
11639 return *this;
11640 }
11641
11642 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11643 {
11644 fence = fence_;
11645 return *this;
11646 }
11647
11648 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11649 {
11650 deviceMask = deviceMask_;
11651 return *this;
11652 }
11653
11654 operator const VkAcquireNextImageInfoKHX&() const
11655 {
11656 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11657 }
11658
11659 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11660 {
11661 return ( sType == rhs.sType )
11662 && ( pNext == rhs.pNext )
11663 && ( swapchain == rhs.swapchain )
11664 && ( timeout == rhs.timeout )
11665 && ( semaphore == rhs.semaphore )
11666 && ( fence == rhs.fence )
11667 && ( deviceMask == rhs.deviceMask );
11668 }
11669
11670 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11671 {
11672 return !operator==( rhs );
11673 }
11674
11675 private:
11676 StructureType sType;
11677
11678 public:
11679 const void* pNext;
11680 SwapchainKHR swapchain;
11681 uint64_t timeout;
11682 Semaphore semaphore;
11683 Fence fence;
11684 uint32_t deviceMask;
11685 };
11686 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11687
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011688 struct HdrMetadataEXT
11689 {
11690 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 )
11691 : sType( StructureType::eHdrMetadataEXT )
11692 , pNext( nullptr )
11693 , displayPrimaryRed( displayPrimaryRed_ )
11694 , displayPrimaryGreen( displayPrimaryGreen_ )
11695 , displayPrimaryBlue( displayPrimaryBlue_ )
11696 , whitePoint( whitePoint_ )
11697 , maxLuminance( maxLuminance_ )
11698 , minLuminance( minLuminance_ )
11699 , maxContentLightLevel( maxContentLightLevel_ )
11700 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11701 {
11702 }
11703
11704 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11705 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011706 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011707 }
11708
11709 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11710 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011711 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011712 return *this;
11713 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011714 HdrMetadataEXT& setPNext( const void* pNext_ )
11715 {
11716 pNext = pNext_;
11717 return *this;
11718 }
11719
11720 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11721 {
11722 displayPrimaryRed = displayPrimaryRed_;
11723 return *this;
11724 }
11725
11726 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11727 {
11728 displayPrimaryGreen = displayPrimaryGreen_;
11729 return *this;
11730 }
11731
11732 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11733 {
11734 displayPrimaryBlue = displayPrimaryBlue_;
11735 return *this;
11736 }
11737
11738 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11739 {
11740 whitePoint = whitePoint_;
11741 return *this;
11742 }
11743
11744 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11745 {
11746 maxLuminance = maxLuminance_;
11747 return *this;
11748 }
11749
11750 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11751 {
11752 minLuminance = minLuminance_;
11753 return *this;
11754 }
11755
11756 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11757 {
11758 maxContentLightLevel = maxContentLightLevel_;
11759 return *this;
11760 }
11761
11762 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11763 {
11764 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11765 return *this;
11766 }
11767
11768 operator const VkHdrMetadataEXT&() const
11769 {
11770 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11771 }
11772
11773 bool operator==( HdrMetadataEXT const& rhs ) const
11774 {
11775 return ( sType == rhs.sType )
11776 && ( pNext == rhs.pNext )
11777 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11778 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11779 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11780 && ( whitePoint == rhs.whitePoint )
11781 && ( maxLuminance == rhs.maxLuminance )
11782 && ( minLuminance == rhs.minLuminance )
11783 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11784 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11785 }
11786
11787 bool operator!=( HdrMetadataEXT const& rhs ) const
11788 {
11789 return !operator==( rhs );
11790 }
11791
11792 private:
11793 StructureType sType;
11794
11795 public:
11796 const void* pNext;
11797 XYColorEXT displayPrimaryRed;
11798 XYColorEXT displayPrimaryGreen;
11799 XYColorEXT displayPrimaryBlue;
11800 XYColorEXT whitePoint;
11801 float maxLuminance;
11802 float minLuminance;
11803 float maxContentLightLevel;
11804 float maxFrameAverageLightLevel;
11805 };
11806 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11807
11808 struct PresentTimesInfoGOOGLE
11809 {
11810 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11811 : sType( StructureType::ePresentTimesInfoGOOGLE )
11812 , pNext( nullptr )
11813 , swapchainCount( swapchainCount_ )
11814 , pTimes( pTimes_ )
11815 {
11816 }
11817
11818 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11819 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011820 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011821 }
11822
11823 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011825 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011826 return *this;
11827 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011828 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11829 {
11830 pNext = pNext_;
11831 return *this;
11832 }
11833
11834 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11835 {
11836 swapchainCount = swapchainCount_;
11837 return *this;
11838 }
11839
11840 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11841 {
11842 pTimes = pTimes_;
11843 return *this;
11844 }
11845
11846 operator const VkPresentTimesInfoGOOGLE&() const
11847 {
11848 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11849 }
11850
11851 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11852 {
11853 return ( sType == rhs.sType )
11854 && ( pNext == rhs.pNext )
11855 && ( swapchainCount == rhs.swapchainCount )
11856 && ( pTimes == rhs.pTimes );
11857 }
11858
11859 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11860 {
11861 return !operator==( rhs );
11862 }
11863
11864 private:
11865 StructureType sType;
11866
11867 public:
11868 const void* pNext;
11869 uint32_t swapchainCount;
11870 const PresentTimeGOOGLE* pTimes;
11871 };
11872 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11873
Mark Young0f183a82017-02-28 09:58:04 -070011874#ifdef VK_USE_PLATFORM_IOS_MVK
11875 struct IOSSurfaceCreateInfoMVK
11876 {
11877 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11878 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11879 , pNext( nullptr )
11880 , flags( flags_ )
11881 , pView( pView_ )
11882 {
11883 }
11884
11885 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11886 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011887 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011888 }
11889
11890 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11891 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011892 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011893 return *this;
11894 }
Mark Young0f183a82017-02-28 09:58:04 -070011895 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11896 {
11897 pNext = pNext_;
11898 return *this;
11899 }
11900
11901 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11902 {
11903 flags = flags_;
11904 return *this;
11905 }
11906
11907 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11908 {
11909 pView = pView_;
11910 return *this;
11911 }
11912
11913 operator const VkIOSSurfaceCreateInfoMVK&() const
11914 {
11915 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11916 }
11917
11918 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11919 {
11920 return ( sType == rhs.sType )
11921 && ( pNext == rhs.pNext )
11922 && ( flags == rhs.flags )
11923 && ( pView == rhs.pView );
11924 }
11925
11926 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11927 {
11928 return !operator==( rhs );
11929 }
11930
11931 private:
11932 StructureType sType;
11933
11934 public:
11935 const void* pNext;
11936 IOSSurfaceCreateFlagsMVK flags;
11937 const void* pView;
11938 };
11939 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11940#endif /*VK_USE_PLATFORM_IOS_MVK*/
11941
11942#ifdef VK_USE_PLATFORM_MACOS_MVK
11943 struct MacOSSurfaceCreateInfoMVK
11944 {
11945 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11946 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11947 , pNext( nullptr )
11948 , flags( flags_ )
11949 , pView( pView_ )
11950 {
11951 }
11952
11953 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011955 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011956 }
11957
11958 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011960 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011961 return *this;
11962 }
Mark Young0f183a82017-02-28 09:58:04 -070011963 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11964 {
11965 pNext = pNext_;
11966 return *this;
11967 }
11968
11969 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11970 {
11971 flags = flags_;
11972 return *this;
11973 }
11974
11975 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11976 {
11977 pView = pView_;
11978 return *this;
11979 }
11980
11981 operator const VkMacOSSurfaceCreateInfoMVK&() const
11982 {
11983 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11984 }
11985
11986 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11987 {
11988 return ( sType == rhs.sType )
11989 && ( pNext == rhs.pNext )
11990 && ( flags == rhs.flags )
11991 && ( pView == rhs.pView );
11992 }
11993
11994 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11995 {
11996 return !operator==( rhs );
11997 }
11998
11999 private:
12000 StructureType sType;
12001
12002 public:
12003 const void* pNext;
12004 MacOSSurfaceCreateFlagsMVK flags;
12005 const void* pView;
12006 };
12007 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12008#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12009
12010 struct PipelineViewportWScalingStateCreateInfoNV
12011 {
12012 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12013 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12014 , pNext( nullptr )
12015 , viewportWScalingEnable( viewportWScalingEnable_ )
12016 , viewportCount( viewportCount_ )
12017 , pViewportWScalings( pViewportWScalings_ )
12018 {
12019 }
12020
12021 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12022 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012023 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012024 }
12025
12026 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12027 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012028 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012029 return *this;
12030 }
Mark Young0f183a82017-02-28 09:58:04 -070012031 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12032 {
12033 pNext = pNext_;
12034 return *this;
12035 }
12036
12037 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12038 {
12039 viewportWScalingEnable = viewportWScalingEnable_;
12040 return *this;
12041 }
12042
12043 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12044 {
12045 viewportCount = viewportCount_;
12046 return *this;
12047 }
12048
12049 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12050 {
12051 pViewportWScalings = pViewportWScalings_;
12052 return *this;
12053 }
12054
12055 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12056 {
12057 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12058 }
12059
12060 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12061 {
12062 return ( sType == rhs.sType )
12063 && ( pNext == rhs.pNext )
12064 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12065 && ( viewportCount == rhs.viewportCount )
12066 && ( pViewportWScalings == rhs.pViewportWScalings );
12067 }
12068
12069 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12070 {
12071 return !operator==( rhs );
12072 }
12073
12074 private:
12075 StructureType sType;
12076
12077 public:
12078 const void* pNext;
12079 Bool32 viewportWScalingEnable;
12080 uint32_t viewportCount;
12081 const ViewportWScalingNV* pViewportWScalings;
12082 };
12083 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12084
12085 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12086 {
12087 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12088 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12089 , pNext( nullptr )
12090 , maxDiscardRectangles( maxDiscardRectangles_ )
12091 {
12092 }
12093
12094 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12095 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012096 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012097 }
12098
12099 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12100 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012101 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012102 return *this;
12103 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012104 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012105 {
12106 pNext = pNext_;
12107 return *this;
12108 }
12109
12110 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12111 {
12112 maxDiscardRectangles = maxDiscardRectangles_;
12113 return *this;
12114 }
12115
12116 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12117 {
12118 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12119 }
12120
12121 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12122 {
12123 return ( sType == rhs.sType )
12124 && ( pNext == rhs.pNext )
12125 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12126 }
12127
12128 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12129 {
12130 return !operator==( rhs );
12131 }
12132
12133 private:
12134 StructureType sType;
12135
12136 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012137 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012138 uint32_t maxDiscardRectangles;
12139 };
12140 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12141
12142 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12143 {
12144 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12145 {
12146 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12147 }
12148
12149 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12150 {
12151 return ( sType == rhs.sType )
12152 && ( pNext == rhs.pNext )
12153 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12154 }
12155
12156 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12157 {
12158 return !operator==( rhs );
12159 }
12160
12161 private:
12162 StructureType sType;
12163
12164 public:
12165 void* pNext;
12166 Bool32 perViewPositionAllComponents;
12167 };
12168 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12169
Mark Lobodzinski54385432017-05-15 10:27:52 -060012170 struct PhysicalDeviceSurfaceInfo2KHR
12171 {
12172 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12173 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12174 , pNext( nullptr )
12175 , surface( surface_ )
12176 {
12177 }
12178
12179 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12180 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012181 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012182 }
12183
12184 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12185 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012186 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012187 return *this;
12188 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012189 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12190 {
12191 pNext = pNext_;
12192 return *this;
12193 }
12194
12195 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12196 {
12197 surface = surface_;
12198 return *this;
12199 }
12200
12201 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12202 {
12203 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12204 }
12205
12206 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12207 {
12208 return ( sType == rhs.sType )
12209 && ( pNext == rhs.pNext )
12210 && ( surface == rhs.surface );
12211 }
12212
12213 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12214 {
12215 return !operator==( rhs );
12216 }
12217
12218 private:
12219 StructureType sType;
12220
12221 public:
12222 const void* pNext;
12223 SurfaceKHR surface;
12224 };
12225 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12226
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012227 struct TextureLODGatherFormatPropertiesAMD
12228 {
12229 operator const VkTextureLODGatherFormatPropertiesAMD&() const
12230 {
12231 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
12232 }
12233
12234 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12235 {
12236 return ( sType == rhs.sType )
12237 && ( pNext == rhs.pNext )
12238 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
12239 }
12240
12241 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12242 {
12243 return !operator==( rhs );
12244 }
12245
12246 private:
12247 StructureType sType;
12248
12249 public:
12250 void* pNext;
12251 Bool32 supportsTextureGatherLODBiasAMD;
12252 };
12253 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
12254
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060012255 struct PipelineCoverageToColorStateCreateInfoNV
12256 {
12257 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
12258 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
12259 , pNext( nullptr )
12260 , flags( flags_ )
12261 , coverageToColorEnable( coverageToColorEnable_ )
12262 , coverageToColorLocation( coverageToColorLocation_ )
12263 {
12264 }
12265
12266 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12267 {
12268 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12269 }
12270
12271 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
12272 {
12273 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
12274 return *this;
12275 }
12276 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
12277 {
12278 pNext = pNext_;
12279 return *this;
12280 }
12281
12282 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
12283 {
12284 flags = flags_;
12285 return *this;
12286 }
12287
12288 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
12289 {
12290 coverageToColorEnable = coverageToColorEnable_;
12291 return *this;
12292 }
12293
12294 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
12295 {
12296 coverageToColorLocation = coverageToColorLocation_;
12297 return *this;
12298 }
12299
12300 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
12301 {
12302 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
12303 }
12304
12305 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12306 {
12307 return ( sType == rhs.sType )
12308 && ( pNext == rhs.pNext )
12309 && ( flags == rhs.flags )
12310 && ( coverageToColorEnable == rhs.coverageToColorEnable )
12311 && ( coverageToColorLocation == rhs.coverageToColorLocation );
12312 }
12313
12314 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
12315 {
12316 return !operator==( rhs );
12317 }
12318
12319 private:
12320 StructureType sType;
12321
12322 public:
12323 const void* pNext;
12324 PipelineCoverageToColorStateCreateFlagsNV flags;
12325 Bool32 coverageToColorEnable;
12326 uint32_t coverageToColorLocation;
12327 };
12328 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
12329
12330 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
12331 {
12332 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
12333 {
12334 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
12335 }
12336
12337 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12338 {
12339 return ( sType == rhs.sType )
12340 && ( pNext == rhs.pNext )
12341 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
12342 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
12343 }
12344
12345 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
12346 {
12347 return !operator==( rhs );
12348 }
12349
12350 private:
12351 StructureType sType;
12352
12353 public:
12354 void* pNext;
12355 Bool32 filterMinmaxSingleComponentFormats;
12356 Bool32 filterMinmaxImageComponentMapping;
12357 };
12358 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
12359
12360 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
12361 {
12362 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
12363 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
12364 , pNext( nullptr )
12365 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
12366 {
12367 }
12368
12369 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12370 {
12371 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12372 }
12373
12374 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
12375 {
12376 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
12377 return *this;
12378 }
12379 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
12380 {
12381 pNext = pNext_;
12382 return *this;
12383 }
12384
12385 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
12386 {
12387 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
12388 return *this;
12389 }
12390
12391 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
12392 {
12393 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
12394 }
12395
12396 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12397 {
12398 return ( sType == rhs.sType )
12399 && ( pNext == rhs.pNext )
12400 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
12401 }
12402
12403 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
12404 {
12405 return !operator==( rhs );
12406 }
12407
12408 private:
12409 StructureType sType;
12410
12411 public:
12412 void* pNext;
12413 Bool32 advancedBlendCoherentOperations;
12414 };
12415 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
12416
12417 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
12418 {
12419 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
12420 {
12421 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
12422 }
12423
12424 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12425 {
12426 return ( sType == rhs.sType )
12427 && ( pNext == rhs.pNext )
12428 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
12429 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
12430 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
12431 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
12432 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
12433 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
12434 }
12435
12436 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
12437 {
12438 return !operator==( rhs );
12439 }
12440
12441 private:
12442 StructureType sType;
12443
12444 public:
12445 void* pNext;
12446 uint32_t advancedBlendMaxColorAttachments;
12447 Bool32 advancedBlendIndependentBlend;
12448 Bool32 advancedBlendNonPremultipliedSrcColor;
12449 Bool32 advancedBlendNonPremultipliedDstColor;
12450 Bool32 advancedBlendCorrelatedOverlap;
12451 Bool32 advancedBlendAllOperations;
12452 };
12453 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
12454
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012455 enum class SubpassContents
12456 {
12457 eInline = VK_SUBPASS_CONTENTS_INLINE,
12458 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
12459 };
12460
12461 struct PresentInfoKHR
12462 {
12463 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 )
12464 : sType( StructureType::ePresentInfoKHR )
12465 , pNext( nullptr )
12466 , waitSemaphoreCount( waitSemaphoreCount_ )
12467 , pWaitSemaphores( pWaitSemaphores_ )
12468 , swapchainCount( swapchainCount_ )
12469 , pSwapchains( pSwapchains_ )
12470 , pImageIndices( pImageIndices_ )
12471 , pResults( pResults_ )
12472 {
12473 }
12474
12475 PresentInfoKHR( VkPresentInfoKHR const & rhs )
12476 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012477 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012478 }
12479
12480 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
12481 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012482 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012483 return *this;
12484 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012485 PresentInfoKHR& setPNext( const void* pNext_ )
12486 {
12487 pNext = pNext_;
12488 return *this;
12489 }
12490
12491 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
12492 {
12493 waitSemaphoreCount = waitSemaphoreCount_;
12494 return *this;
12495 }
12496
12497 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
12498 {
12499 pWaitSemaphores = pWaitSemaphores_;
12500 return *this;
12501 }
12502
12503 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
12504 {
12505 swapchainCount = swapchainCount_;
12506 return *this;
12507 }
12508
12509 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
12510 {
12511 pSwapchains = pSwapchains_;
12512 return *this;
12513 }
12514
12515 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
12516 {
12517 pImageIndices = pImageIndices_;
12518 return *this;
12519 }
12520
12521 PresentInfoKHR& setPResults( Result* pResults_ )
12522 {
12523 pResults = pResults_;
12524 return *this;
12525 }
12526
12527 operator const VkPresentInfoKHR&() const
12528 {
12529 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
12530 }
12531
12532 bool operator==( PresentInfoKHR const& rhs ) const
12533 {
12534 return ( sType == rhs.sType )
12535 && ( pNext == rhs.pNext )
12536 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12537 && ( pWaitSemaphores == rhs.pWaitSemaphores )
12538 && ( swapchainCount == rhs.swapchainCount )
12539 && ( pSwapchains == rhs.pSwapchains )
12540 && ( pImageIndices == rhs.pImageIndices )
12541 && ( pResults == rhs.pResults );
12542 }
12543
12544 bool operator!=( PresentInfoKHR const& rhs ) const
12545 {
12546 return !operator==( rhs );
12547 }
12548
12549 private:
12550 StructureType sType;
12551
12552 public:
12553 const void* pNext;
12554 uint32_t waitSemaphoreCount;
12555 const Semaphore* pWaitSemaphores;
12556 uint32_t swapchainCount;
12557 const SwapchainKHR* pSwapchains;
12558 const uint32_t* pImageIndices;
12559 Result* pResults;
12560 };
12561 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12562
12563 enum class DynamicState
12564 {
12565 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12566 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12567 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12568 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12569 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12570 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12571 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12572 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012573 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12574 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12575 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012576 };
12577
12578 struct PipelineDynamicStateCreateInfo
12579 {
12580 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12581 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12582 , pNext( nullptr )
12583 , flags( flags_ )
12584 , dynamicStateCount( dynamicStateCount_ )
12585 , pDynamicStates( pDynamicStates_ )
12586 {
12587 }
12588
12589 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012591 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012592 }
12593
12594 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012596 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012597 return *this;
12598 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012599 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12600 {
12601 pNext = pNext_;
12602 return *this;
12603 }
12604
12605 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12606 {
12607 flags = flags_;
12608 return *this;
12609 }
12610
12611 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12612 {
12613 dynamicStateCount = dynamicStateCount_;
12614 return *this;
12615 }
12616
12617 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12618 {
12619 pDynamicStates = pDynamicStates_;
12620 return *this;
12621 }
12622
12623 operator const VkPipelineDynamicStateCreateInfo&() const
12624 {
12625 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12626 }
12627
12628 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12629 {
12630 return ( sType == rhs.sType )
12631 && ( pNext == rhs.pNext )
12632 && ( flags == rhs.flags )
12633 && ( dynamicStateCount == rhs.dynamicStateCount )
12634 && ( pDynamicStates == rhs.pDynamicStates );
12635 }
12636
12637 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12638 {
12639 return !operator==( rhs );
12640 }
12641
12642 private:
12643 StructureType sType;
12644
12645 public:
12646 const void* pNext;
12647 PipelineDynamicStateCreateFlags flags;
12648 uint32_t dynamicStateCount;
12649 const DynamicState* pDynamicStates;
12650 };
12651 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12652
Mark Young0f183a82017-02-28 09:58:04 -070012653 enum class DescriptorUpdateTemplateTypeKHR
12654 {
12655 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12656 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12657 };
12658
12659 struct DescriptorUpdateTemplateCreateInfoKHR
12660 {
12661 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 )
12662 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12663 , pNext( nullptr )
12664 , flags( flags_ )
12665 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12666 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12667 , templateType( templateType_ )
12668 , descriptorSetLayout( descriptorSetLayout_ )
12669 , pipelineBindPoint( pipelineBindPoint_ )
12670 , pipelineLayout( pipelineLayout_ )
12671 , set( set_ )
12672 {
12673 }
12674
12675 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012677 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070012678 }
12679
12680 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12681 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012682 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070012683 return *this;
12684 }
Mark Young0f183a82017-02-28 09:58:04 -070012685 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12686 {
12687 pNext = pNext_;
12688 return *this;
12689 }
12690
12691 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12692 {
12693 flags = flags_;
12694 return *this;
12695 }
12696
12697 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12698 {
12699 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12700 return *this;
12701 }
12702
12703 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12704 {
12705 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12706 return *this;
12707 }
12708
12709 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12710 {
12711 templateType = templateType_;
12712 return *this;
12713 }
12714
12715 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12716 {
12717 descriptorSetLayout = descriptorSetLayout_;
12718 return *this;
12719 }
12720
12721 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12722 {
12723 pipelineBindPoint = pipelineBindPoint_;
12724 return *this;
12725 }
12726
12727 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12728 {
12729 pipelineLayout = pipelineLayout_;
12730 return *this;
12731 }
12732
12733 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12734 {
12735 set = set_;
12736 return *this;
12737 }
12738
12739 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12740 {
12741 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12742 }
12743
12744 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12745 {
12746 return ( sType == rhs.sType )
12747 && ( pNext == rhs.pNext )
12748 && ( flags == rhs.flags )
12749 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12750 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12751 && ( templateType == rhs.templateType )
12752 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12753 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12754 && ( pipelineLayout == rhs.pipelineLayout )
12755 && ( set == rhs.set );
12756 }
12757
12758 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12759 {
12760 return !operator==( rhs );
12761 }
12762
12763 private:
12764 StructureType sType;
12765
12766 public:
12767 void* pNext;
12768 DescriptorUpdateTemplateCreateFlagsKHR flags;
12769 uint32_t descriptorUpdateEntryCount;
12770 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12771 DescriptorUpdateTemplateTypeKHR templateType;
12772 DescriptorSetLayout descriptorSetLayout;
12773 PipelineBindPoint pipelineBindPoint;
12774 PipelineLayout pipelineLayout;
12775 uint32_t set;
12776 };
12777 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12778
Mark Lobodzinski54385432017-05-15 10:27:52 -060012779 enum class ObjectType
12780 {
12781 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
12782 eInstance = VK_OBJECT_TYPE_INSTANCE,
12783 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
12784 eDevice = VK_OBJECT_TYPE_DEVICE,
12785 eQueue = VK_OBJECT_TYPE_QUEUE,
12786 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
12787 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
12788 eFence = VK_OBJECT_TYPE_FENCE,
12789 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
12790 eBuffer = VK_OBJECT_TYPE_BUFFER,
12791 eImage = VK_OBJECT_TYPE_IMAGE,
12792 eEvent = VK_OBJECT_TYPE_EVENT,
12793 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
12794 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
12795 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
12796 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
12797 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
12798 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
12799 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
12800 ePipeline = VK_OBJECT_TYPE_PIPELINE,
12801 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
12802 eSampler = VK_OBJECT_TYPE_SAMPLER,
12803 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
12804 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
12805 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
12806 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
12807 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
12808 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
12809 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
12810 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
12811 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
12812 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
12813 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
12814 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
12815 };
12816
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012817 enum class QueueFlagBits
12818 {
12819 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12820 eCompute = VK_QUEUE_COMPUTE_BIT,
12821 eTransfer = VK_QUEUE_TRANSFER_BIT,
12822 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12823 };
12824
12825 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12826
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012827 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012828 {
12829 return QueueFlags( bit0 ) | bit1;
12830 }
12831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012832 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12833 {
12834 return ~( QueueFlags( bits ) );
12835 }
12836
12837 template <> struct FlagTraits<QueueFlagBits>
12838 {
12839 enum
12840 {
12841 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12842 };
12843 };
12844
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012845 struct QueueFamilyProperties
12846 {
12847 operator const VkQueueFamilyProperties&() const
12848 {
12849 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12850 }
12851
12852 bool operator==( QueueFamilyProperties const& rhs ) const
12853 {
12854 return ( queueFlags == rhs.queueFlags )
12855 && ( queueCount == rhs.queueCount )
12856 && ( timestampValidBits == rhs.timestampValidBits )
12857 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12858 }
12859
12860 bool operator!=( QueueFamilyProperties const& rhs ) const
12861 {
12862 return !operator==( rhs );
12863 }
12864
12865 QueueFlags queueFlags;
12866 uint32_t queueCount;
12867 uint32_t timestampValidBits;
12868 Extent3D minImageTransferGranularity;
12869 };
12870 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12871
Mark Young39389872017-01-19 21:10:49 -070012872 struct QueueFamilyProperties2KHR
12873 {
12874 operator const VkQueueFamilyProperties2KHR&() const
12875 {
12876 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12877 }
12878
12879 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12880 {
12881 return ( sType == rhs.sType )
12882 && ( pNext == rhs.pNext )
12883 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12884 }
12885
12886 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12887 {
12888 return !operator==( rhs );
12889 }
12890
12891 private:
12892 StructureType sType;
12893
12894 public:
12895 void* pNext;
12896 QueueFamilyProperties queueFamilyProperties;
12897 };
12898 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12899
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012900 enum class MemoryPropertyFlagBits
12901 {
12902 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12903 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12904 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12905 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12906 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12907 };
12908
12909 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12910
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012911 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012912 {
12913 return MemoryPropertyFlags( bit0 ) | bit1;
12914 }
12915
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012916 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12917 {
12918 return ~( MemoryPropertyFlags( bits ) );
12919 }
12920
12921 template <> struct FlagTraits<MemoryPropertyFlagBits>
12922 {
12923 enum
12924 {
12925 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12926 };
12927 };
12928
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012929 struct MemoryType
12930 {
12931 operator const VkMemoryType&() const
12932 {
12933 return *reinterpret_cast<const VkMemoryType*>(this);
12934 }
12935
12936 bool operator==( MemoryType const& rhs ) const
12937 {
12938 return ( propertyFlags == rhs.propertyFlags )
12939 && ( heapIndex == rhs.heapIndex );
12940 }
12941
12942 bool operator!=( MemoryType const& rhs ) const
12943 {
12944 return !operator==( rhs );
12945 }
12946
12947 MemoryPropertyFlags propertyFlags;
12948 uint32_t heapIndex;
12949 };
12950 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12951
12952 enum class MemoryHeapFlagBits
12953 {
Mark Young0f183a82017-02-28 09:58:04 -070012954 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12955 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012956 };
12957
12958 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12959
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012960 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012961 {
12962 return MemoryHeapFlags( bit0 ) | bit1;
12963 }
12964
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012965 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12966 {
12967 return ~( MemoryHeapFlags( bits ) );
12968 }
12969
12970 template <> struct FlagTraits<MemoryHeapFlagBits>
12971 {
12972 enum
12973 {
Mark Young0f183a82017-02-28 09:58:04 -070012974 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012975 };
12976 };
12977
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012978 struct MemoryHeap
12979 {
12980 operator const VkMemoryHeap&() const
12981 {
12982 return *reinterpret_cast<const VkMemoryHeap*>(this);
12983 }
12984
12985 bool operator==( MemoryHeap const& rhs ) const
12986 {
12987 return ( size == rhs.size )
12988 && ( flags == rhs.flags );
12989 }
12990
12991 bool operator!=( MemoryHeap const& rhs ) const
12992 {
12993 return !operator==( rhs );
12994 }
12995
12996 DeviceSize size;
12997 MemoryHeapFlags flags;
12998 };
12999 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
13000
13001 struct PhysicalDeviceMemoryProperties
13002 {
13003 operator const VkPhysicalDeviceMemoryProperties&() const
13004 {
13005 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
13006 }
13007
13008 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
13009 {
13010 return ( memoryTypeCount == rhs.memoryTypeCount )
13011 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
13012 && ( memoryHeapCount == rhs.memoryHeapCount )
13013 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
13014 }
13015
13016 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
13017 {
13018 return !operator==( rhs );
13019 }
13020
13021 uint32_t memoryTypeCount;
13022 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
13023 uint32_t memoryHeapCount;
13024 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
13025 };
13026 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
13027
Mark Young39389872017-01-19 21:10:49 -070013028 struct PhysicalDeviceMemoryProperties2KHR
13029 {
13030 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
13031 {
13032 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
13033 }
13034
13035 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13036 {
13037 return ( sType == rhs.sType )
13038 && ( pNext == rhs.pNext )
13039 && ( memoryProperties == rhs.memoryProperties );
13040 }
13041
13042 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13043 {
13044 return !operator==( rhs );
13045 }
13046
13047 private:
13048 StructureType sType;
13049
13050 public:
13051 void* pNext;
13052 PhysicalDeviceMemoryProperties memoryProperties;
13053 };
13054 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
13055
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013056 enum class AccessFlagBits
13057 {
13058 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
13059 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
13060 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
13061 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
13062 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
13063 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
13064 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
13065 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
13066 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
13067 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
13068 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
13069 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
13070 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
13071 eHostRead = VK_ACCESS_HOST_READ_BIT,
13072 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
13073 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013074 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
13075 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013076 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
13077 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013078 };
13079
13080 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
13081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013082 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013083 {
13084 return AccessFlags( bit0 ) | bit1;
13085 }
13086
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013087 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
13088 {
13089 return ~( AccessFlags( bits ) );
13090 }
13091
13092 template <> struct FlagTraits<AccessFlagBits>
13093 {
13094 enum
13095 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013096 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 -070013097 };
13098 };
13099
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013100 struct MemoryBarrier
13101 {
13102 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
13103 : sType( StructureType::eMemoryBarrier )
13104 , pNext( nullptr )
13105 , srcAccessMask( srcAccessMask_ )
13106 , dstAccessMask( dstAccessMask_ )
13107 {
13108 }
13109
13110 MemoryBarrier( VkMemoryBarrier const & rhs )
13111 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013112 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013113 }
13114
13115 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
13116 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013117 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013118 return *this;
13119 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013120 MemoryBarrier& setPNext( const void* pNext_ )
13121 {
13122 pNext = pNext_;
13123 return *this;
13124 }
13125
13126 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13127 {
13128 srcAccessMask = srcAccessMask_;
13129 return *this;
13130 }
13131
13132 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13133 {
13134 dstAccessMask = dstAccessMask_;
13135 return *this;
13136 }
13137
13138 operator const VkMemoryBarrier&() const
13139 {
13140 return *reinterpret_cast<const VkMemoryBarrier*>(this);
13141 }
13142
13143 bool operator==( MemoryBarrier const& rhs ) const
13144 {
13145 return ( sType == rhs.sType )
13146 && ( pNext == rhs.pNext )
13147 && ( srcAccessMask == rhs.srcAccessMask )
13148 && ( dstAccessMask == rhs.dstAccessMask );
13149 }
13150
13151 bool operator!=( MemoryBarrier const& rhs ) const
13152 {
13153 return !operator==( rhs );
13154 }
13155
13156 private:
13157 StructureType sType;
13158
13159 public:
13160 const void* pNext;
13161 AccessFlags srcAccessMask;
13162 AccessFlags dstAccessMask;
13163 };
13164 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
13165
13166 struct BufferMemoryBarrier
13167 {
13168 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
13169 : sType( StructureType::eBufferMemoryBarrier )
13170 , pNext( nullptr )
13171 , srcAccessMask( srcAccessMask_ )
13172 , dstAccessMask( dstAccessMask_ )
13173 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
13174 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
13175 , buffer( buffer_ )
13176 , offset( offset_ )
13177 , size( size_ )
13178 {
13179 }
13180
13181 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
13182 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013183 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013184 }
13185
13186 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
13187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013188 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013189 return *this;
13190 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013191 BufferMemoryBarrier& setPNext( const void* pNext_ )
13192 {
13193 pNext = pNext_;
13194 return *this;
13195 }
13196
13197 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
13198 {
13199 srcAccessMask = srcAccessMask_;
13200 return *this;
13201 }
13202
13203 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
13204 {
13205 dstAccessMask = dstAccessMask_;
13206 return *this;
13207 }
13208
13209 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
13210 {
13211 srcQueueFamilyIndex = srcQueueFamilyIndex_;
13212 return *this;
13213 }
13214
13215 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
13216 {
13217 dstQueueFamilyIndex = dstQueueFamilyIndex_;
13218 return *this;
13219 }
13220
13221 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
13222 {
13223 buffer = buffer_;
13224 return *this;
13225 }
13226
13227 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
13228 {
13229 offset = offset_;
13230 return *this;
13231 }
13232
13233 BufferMemoryBarrier& setSize( DeviceSize size_ )
13234 {
13235 size = size_;
13236 return *this;
13237 }
13238
13239 operator const VkBufferMemoryBarrier&() const
13240 {
13241 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
13242 }
13243
13244 bool operator==( BufferMemoryBarrier const& rhs ) const
13245 {
13246 return ( sType == rhs.sType )
13247 && ( pNext == rhs.pNext )
13248 && ( srcAccessMask == rhs.srcAccessMask )
13249 && ( dstAccessMask == rhs.dstAccessMask )
13250 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
13251 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
13252 && ( buffer == rhs.buffer )
13253 && ( offset == rhs.offset )
13254 && ( size == rhs.size );
13255 }
13256
13257 bool operator!=( BufferMemoryBarrier const& rhs ) const
13258 {
13259 return !operator==( rhs );
13260 }
13261
13262 private:
13263 StructureType sType;
13264
13265 public:
13266 const void* pNext;
13267 AccessFlags srcAccessMask;
13268 AccessFlags dstAccessMask;
13269 uint32_t srcQueueFamilyIndex;
13270 uint32_t dstQueueFamilyIndex;
13271 Buffer buffer;
13272 DeviceSize offset;
13273 DeviceSize size;
13274 };
13275 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
13276
13277 enum class BufferUsageFlagBits
13278 {
13279 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
13280 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
13281 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
13282 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
13283 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
13284 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
13285 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
13286 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
13287 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
13288 };
13289
13290 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
13291
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013292 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013293 {
13294 return BufferUsageFlags( bit0 ) | bit1;
13295 }
13296
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013297 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
13298 {
13299 return ~( BufferUsageFlags( bits ) );
13300 }
13301
13302 template <> struct FlagTraits<BufferUsageFlagBits>
13303 {
13304 enum
13305 {
13306 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)
13307 };
13308 };
13309
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013310 enum class BufferCreateFlagBits
13311 {
13312 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
13313 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
13314 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
13315 };
13316
13317 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
13318
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013319 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013320 {
13321 return BufferCreateFlags( bit0 ) | bit1;
13322 }
13323
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013324 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
13325 {
13326 return ~( BufferCreateFlags( bits ) );
13327 }
13328
13329 template <> struct FlagTraits<BufferCreateFlagBits>
13330 {
13331 enum
13332 {
13333 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
13334 };
13335 };
13336
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013337 struct BufferCreateInfo
13338 {
13339 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
13340 : sType( StructureType::eBufferCreateInfo )
13341 , pNext( nullptr )
13342 , flags( flags_ )
13343 , size( size_ )
13344 , usage( usage_ )
13345 , sharingMode( sharingMode_ )
13346 , queueFamilyIndexCount( queueFamilyIndexCount_ )
13347 , pQueueFamilyIndices( pQueueFamilyIndices_ )
13348 {
13349 }
13350
13351 BufferCreateInfo( VkBufferCreateInfo const & rhs )
13352 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013353 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013354 }
13355
13356 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
13357 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013358 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013359 return *this;
13360 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013361 BufferCreateInfo& setPNext( const void* pNext_ )
13362 {
13363 pNext = pNext_;
13364 return *this;
13365 }
13366
13367 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
13368 {
13369 flags = flags_;
13370 return *this;
13371 }
13372
13373 BufferCreateInfo& setSize( DeviceSize size_ )
13374 {
13375 size = size_;
13376 return *this;
13377 }
13378
13379 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
13380 {
13381 usage = usage_;
13382 return *this;
13383 }
13384
13385 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
13386 {
13387 sharingMode = sharingMode_;
13388 return *this;
13389 }
13390
13391 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
13392 {
13393 queueFamilyIndexCount = queueFamilyIndexCount_;
13394 return *this;
13395 }
13396
13397 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
13398 {
13399 pQueueFamilyIndices = pQueueFamilyIndices_;
13400 return *this;
13401 }
13402
13403 operator const VkBufferCreateInfo&() const
13404 {
13405 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13406 }
13407
13408 bool operator==( BufferCreateInfo const& rhs ) const
13409 {
13410 return ( sType == rhs.sType )
13411 && ( pNext == rhs.pNext )
13412 && ( flags == rhs.flags )
13413 && ( size == rhs.size )
13414 && ( usage == rhs.usage )
13415 && ( sharingMode == rhs.sharingMode )
13416 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13417 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13418 }
13419
13420 bool operator!=( BufferCreateInfo const& rhs ) const
13421 {
13422 return !operator==( rhs );
13423 }
13424
13425 private:
13426 StructureType sType;
13427
13428 public:
13429 const void* pNext;
13430 BufferCreateFlags flags;
13431 DeviceSize size;
13432 BufferUsageFlags usage;
13433 SharingMode sharingMode;
13434 uint32_t queueFamilyIndexCount;
13435 const uint32_t* pQueueFamilyIndices;
13436 };
13437 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13438
13439 enum class ShaderStageFlagBits
13440 {
13441 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13442 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13443 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13444 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13445 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13446 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13447 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13448 eAll = VK_SHADER_STAGE_ALL
13449 };
13450
13451 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13452
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013453 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013454 {
13455 return ShaderStageFlags( bit0 ) | bit1;
13456 }
13457
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013458 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
13459 {
13460 return ~( ShaderStageFlags( bits ) );
13461 }
13462
13463 template <> struct FlagTraits<ShaderStageFlagBits>
13464 {
13465 enum
13466 {
13467 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)
13468 };
13469 };
13470
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013471 struct DescriptorSetLayoutBinding
13472 {
13473 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
13474 : binding( binding_ )
13475 , descriptorType( descriptorType_ )
13476 , descriptorCount( descriptorCount_ )
13477 , stageFlags( stageFlags_ )
13478 , pImmutableSamplers( pImmutableSamplers_ )
13479 {
13480 }
13481
13482 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
13483 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013484 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013485 }
13486
13487 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
13488 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013489 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013490 return *this;
13491 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013492 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
13493 {
13494 binding = binding_;
13495 return *this;
13496 }
13497
13498 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
13499 {
13500 descriptorType = descriptorType_;
13501 return *this;
13502 }
13503
13504 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
13505 {
13506 descriptorCount = descriptorCount_;
13507 return *this;
13508 }
13509
13510 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
13511 {
13512 stageFlags = stageFlags_;
13513 return *this;
13514 }
13515
13516 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
13517 {
13518 pImmutableSamplers = pImmutableSamplers_;
13519 return *this;
13520 }
13521
13522 operator const VkDescriptorSetLayoutBinding&() const
13523 {
13524 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
13525 }
13526
13527 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
13528 {
13529 return ( binding == rhs.binding )
13530 && ( descriptorType == rhs.descriptorType )
13531 && ( descriptorCount == rhs.descriptorCount )
13532 && ( stageFlags == rhs.stageFlags )
13533 && ( pImmutableSamplers == rhs.pImmutableSamplers );
13534 }
13535
13536 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
13537 {
13538 return !operator==( rhs );
13539 }
13540
13541 uint32_t binding;
13542 DescriptorType descriptorType;
13543 uint32_t descriptorCount;
13544 ShaderStageFlags stageFlags;
13545 const Sampler* pImmutableSamplers;
13546 };
13547 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
13548
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013549 struct PipelineShaderStageCreateInfo
13550 {
13551 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
13552 : sType( StructureType::ePipelineShaderStageCreateInfo )
13553 , pNext( nullptr )
13554 , flags( flags_ )
13555 , stage( stage_ )
13556 , module( module_ )
13557 , pName( pName_ )
13558 , pSpecializationInfo( pSpecializationInfo_ )
13559 {
13560 }
13561
13562 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
13563 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013564 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013565 }
13566
13567 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
13568 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013569 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013570 return *this;
13571 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013572 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
13573 {
13574 pNext = pNext_;
13575 return *this;
13576 }
13577
13578 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13579 {
13580 flags = flags_;
13581 return *this;
13582 }
13583
13584 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13585 {
13586 stage = stage_;
13587 return *this;
13588 }
13589
13590 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13591 {
13592 module = module_;
13593 return *this;
13594 }
13595
13596 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13597 {
13598 pName = pName_;
13599 return *this;
13600 }
13601
13602 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13603 {
13604 pSpecializationInfo = pSpecializationInfo_;
13605 return *this;
13606 }
13607
13608 operator const VkPipelineShaderStageCreateInfo&() const
13609 {
13610 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13611 }
13612
13613 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13614 {
13615 return ( sType == rhs.sType )
13616 && ( pNext == rhs.pNext )
13617 && ( flags == rhs.flags )
13618 && ( stage == rhs.stage )
13619 && ( module == rhs.module )
13620 && ( pName == rhs.pName )
13621 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13622 }
13623
13624 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13625 {
13626 return !operator==( rhs );
13627 }
13628
13629 private:
13630 StructureType sType;
13631
13632 public:
13633 const void* pNext;
13634 PipelineShaderStageCreateFlags flags;
13635 ShaderStageFlagBits stage;
13636 ShaderModule module;
13637 const char* pName;
13638 const SpecializationInfo* pSpecializationInfo;
13639 };
13640 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13641
13642 struct PushConstantRange
13643 {
13644 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13645 : stageFlags( stageFlags_ )
13646 , offset( offset_ )
13647 , size( size_ )
13648 {
13649 }
13650
13651 PushConstantRange( VkPushConstantRange const & rhs )
13652 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013653 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013654 }
13655
13656 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13657 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013658 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013659 return *this;
13660 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013661 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13662 {
13663 stageFlags = stageFlags_;
13664 return *this;
13665 }
13666
13667 PushConstantRange& setOffset( uint32_t offset_ )
13668 {
13669 offset = offset_;
13670 return *this;
13671 }
13672
13673 PushConstantRange& setSize( uint32_t size_ )
13674 {
13675 size = size_;
13676 return *this;
13677 }
13678
13679 operator const VkPushConstantRange&() const
13680 {
13681 return *reinterpret_cast<const VkPushConstantRange*>(this);
13682 }
13683
13684 bool operator==( PushConstantRange const& rhs ) const
13685 {
13686 return ( stageFlags == rhs.stageFlags )
13687 && ( offset == rhs.offset )
13688 && ( size == rhs.size );
13689 }
13690
13691 bool operator!=( PushConstantRange const& rhs ) const
13692 {
13693 return !operator==( rhs );
13694 }
13695
13696 ShaderStageFlags stageFlags;
13697 uint32_t offset;
13698 uint32_t size;
13699 };
13700 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13701
13702 struct PipelineLayoutCreateInfo
13703 {
13704 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13705 : sType( StructureType::ePipelineLayoutCreateInfo )
13706 , pNext( nullptr )
13707 , flags( flags_ )
13708 , setLayoutCount( setLayoutCount_ )
13709 , pSetLayouts( pSetLayouts_ )
13710 , pushConstantRangeCount( pushConstantRangeCount_ )
13711 , pPushConstantRanges( pPushConstantRanges_ )
13712 {
13713 }
13714
13715 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13716 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013717 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013718 }
13719
13720 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13721 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013722 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013723 return *this;
13724 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013725 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13726 {
13727 pNext = pNext_;
13728 return *this;
13729 }
13730
13731 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13732 {
13733 flags = flags_;
13734 return *this;
13735 }
13736
13737 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13738 {
13739 setLayoutCount = setLayoutCount_;
13740 return *this;
13741 }
13742
13743 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13744 {
13745 pSetLayouts = pSetLayouts_;
13746 return *this;
13747 }
13748
13749 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13750 {
13751 pushConstantRangeCount = pushConstantRangeCount_;
13752 return *this;
13753 }
13754
13755 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13756 {
13757 pPushConstantRanges = pPushConstantRanges_;
13758 return *this;
13759 }
13760
13761 operator const VkPipelineLayoutCreateInfo&() const
13762 {
13763 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13764 }
13765
13766 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13767 {
13768 return ( sType == rhs.sType )
13769 && ( pNext == rhs.pNext )
13770 && ( flags == rhs.flags )
13771 && ( setLayoutCount == rhs.setLayoutCount )
13772 && ( pSetLayouts == rhs.pSetLayouts )
13773 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13774 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13775 }
13776
13777 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13778 {
13779 return !operator==( rhs );
13780 }
13781
13782 private:
13783 StructureType sType;
13784
13785 public:
13786 const void* pNext;
13787 PipelineLayoutCreateFlags flags;
13788 uint32_t setLayoutCount;
13789 const DescriptorSetLayout* pSetLayouts;
13790 uint32_t pushConstantRangeCount;
13791 const PushConstantRange* pPushConstantRanges;
13792 };
13793 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13794
13795 enum class ImageUsageFlagBits
13796 {
13797 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13798 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13799 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13800 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13801 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13802 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13803 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13804 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13805 };
13806
13807 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13808
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013809 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013810 {
13811 return ImageUsageFlags( bit0 ) | bit1;
13812 }
13813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013814 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13815 {
13816 return ~( ImageUsageFlags( bits ) );
13817 }
13818
13819 template <> struct FlagTraits<ImageUsageFlagBits>
13820 {
13821 enum
13822 {
13823 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)
13824 };
13825 };
13826
Mark Lobodzinski54385432017-05-15 10:27:52 -060013827 struct SharedPresentSurfaceCapabilitiesKHR
13828 {
13829 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
13830 {
13831 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
13832 }
13833
13834 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13835 {
13836 return ( sType == rhs.sType )
13837 && ( pNext == rhs.pNext )
13838 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
13839 }
13840
13841 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13842 {
13843 return !operator==( rhs );
13844 }
13845
13846 private:
13847 StructureType sType;
13848
13849 public:
13850 void* pNext;
13851 ImageUsageFlags sharedPresentSupportedUsageFlags;
13852 };
13853 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
13854
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013855 enum class ImageCreateFlagBits
13856 {
13857 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13858 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13859 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13860 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013861 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013862 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013863 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013864 };
13865
13866 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13867
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013868 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013869 {
13870 return ImageCreateFlags( bit0 ) | bit1;
13871 }
13872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013873 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13874 {
13875 return ~( ImageCreateFlags( bits ) );
13876 }
13877
13878 template <> struct FlagTraits<ImageCreateFlagBits>
13879 {
13880 enum
13881 {
Mark Young0f183a82017-02-28 09:58:04 -070013882 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 -070013883 };
13884 };
13885
Mark Young39389872017-01-19 21:10:49 -070013886 struct PhysicalDeviceImageFormatInfo2KHR
13887 {
13888 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13889 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13890 , pNext( nullptr )
13891 , format( format_ )
13892 , type( type_ )
13893 , tiling( tiling_ )
13894 , usage( usage_ )
13895 , flags( flags_ )
13896 {
13897 }
13898
13899 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013901 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070013902 }
13903
13904 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13905 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013906 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070013907 return *this;
13908 }
Mark Young39389872017-01-19 21:10:49 -070013909 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13910 {
13911 pNext = pNext_;
13912 return *this;
13913 }
13914
13915 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13916 {
13917 format = format_;
13918 return *this;
13919 }
13920
13921 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13922 {
13923 type = type_;
13924 return *this;
13925 }
13926
13927 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13928 {
13929 tiling = tiling_;
13930 return *this;
13931 }
13932
13933 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13934 {
13935 usage = usage_;
13936 return *this;
13937 }
13938
13939 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13940 {
13941 flags = flags_;
13942 return *this;
13943 }
13944
13945 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13946 {
13947 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13948 }
13949
13950 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13951 {
13952 return ( sType == rhs.sType )
13953 && ( pNext == rhs.pNext )
13954 && ( format == rhs.format )
13955 && ( type == rhs.type )
13956 && ( tiling == rhs.tiling )
13957 && ( usage == rhs.usage )
13958 && ( flags == rhs.flags );
13959 }
13960
13961 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13962 {
13963 return !operator==( rhs );
13964 }
13965
13966 private:
13967 StructureType sType;
13968
13969 public:
13970 const void* pNext;
13971 Format format;
13972 ImageType type;
13973 ImageTiling tiling;
13974 ImageUsageFlags usage;
13975 ImageCreateFlags flags;
13976 };
13977 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13978
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013979 enum class PipelineCreateFlagBits
13980 {
13981 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13982 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013983 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13984 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13985 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013986 };
13987
13988 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13989
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013990 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013991 {
13992 return PipelineCreateFlags( bit0 ) | bit1;
13993 }
13994
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013995 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13996 {
13997 return ~( PipelineCreateFlags( bits ) );
13998 }
13999
14000 template <> struct FlagTraits<PipelineCreateFlagBits>
14001 {
14002 enum
14003 {
Mark Young0f183a82017-02-28 09:58:04 -070014004 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014005 };
14006 };
14007
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014008 struct ComputePipelineCreateInfo
14009 {
14010 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
14011 : sType( StructureType::eComputePipelineCreateInfo )
14012 , pNext( nullptr )
14013 , flags( flags_ )
14014 , stage( stage_ )
14015 , layout( layout_ )
14016 , basePipelineHandle( basePipelineHandle_ )
14017 , basePipelineIndex( basePipelineIndex_ )
14018 {
14019 }
14020
14021 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
14022 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014023 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014024 }
14025
14026 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
14027 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014028 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014029 return *this;
14030 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014031 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
14032 {
14033 pNext = pNext_;
14034 return *this;
14035 }
14036
14037 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
14038 {
14039 flags = flags_;
14040 return *this;
14041 }
14042
14043 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
14044 {
14045 stage = stage_;
14046 return *this;
14047 }
14048
14049 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
14050 {
14051 layout = layout_;
14052 return *this;
14053 }
14054
14055 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
14056 {
14057 basePipelineHandle = basePipelineHandle_;
14058 return *this;
14059 }
14060
14061 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
14062 {
14063 basePipelineIndex = basePipelineIndex_;
14064 return *this;
14065 }
14066
14067 operator const VkComputePipelineCreateInfo&() const
14068 {
14069 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
14070 }
14071
14072 bool operator==( ComputePipelineCreateInfo const& rhs ) const
14073 {
14074 return ( sType == rhs.sType )
14075 && ( pNext == rhs.pNext )
14076 && ( flags == rhs.flags )
14077 && ( stage == rhs.stage )
14078 && ( layout == rhs.layout )
14079 && ( basePipelineHandle == rhs.basePipelineHandle )
14080 && ( basePipelineIndex == rhs.basePipelineIndex );
14081 }
14082
14083 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
14084 {
14085 return !operator==( rhs );
14086 }
14087
14088 private:
14089 StructureType sType;
14090
14091 public:
14092 const void* pNext;
14093 PipelineCreateFlags flags;
14094 PipelineShaderStageCreateInfo stage;
14095 PipelineLayout layout;
14096 Pipeline basePipelineHandle;
14097 int32_t basePipelineIndex;
14098 };
14099 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
14100
14101 enum class ColorComponentFlagBits
14102 {
14103 eR = VK_COLOR_COMPONENT_R_BIT,
14104 eG = VK_COLOR_COMPONENT_G_BIT,
14105 eB = VK_COLOR_COMPONENT_B_BIT,
14106 eA = VK_COLOR_COMPONENT_A_BIT
14107 };
14108
14109 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
14110
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014111 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014112 {
14113 return ColorComponentFlags( bit0 ) | bit1;
14114 }
14115
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014116 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
14117 {
14118 return ~( ColorComponentFlags( bits ) );
14119 }
14120
14121 template <> struct FlagTraits<ColorComponentFlagBits>
14122 {
14123 enum
14124 {
14125 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
14126 };
14127 };
14128
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014129 struct PipelineColorBlendAttachmentState
14130 {
14131 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() )
14132 : blendEnable( blendEnable_ )
14133 , srcColorBlendFactor( srcColorBlendFactor_ )
14134 , dstColorBlendFactor( dstColorBlendFactor_ )
14135 , colorBlendOp( colorBlendOp_ )
14136 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
14137 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
14138 , alphaBlendOp( alphaBlendOp_ )
14139 , colorWriteMask( colorWriteMask_ )
14140 {
14141 }
14142
14143 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
14144 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014145 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014146 }
14147
14148 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
14149 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014150 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014151 return *this;
14152 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014153 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
14154 {
14155 blendEnable = blendEnable_;
14156 return *this;
14157 }
14158
14159 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
14160 {
14161 srcColorBlendFactor = srcColorBlendFactor_;
14162 return *this;
14163 }
14164
14165 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
14166 {
14167 dstColorBlendFactor = dstColorBlendFactor_;
14168 return *this;
14169 }
14170
14171 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
14172 {
14173 colorBlendOp = colorBlendOp_;
14174 return *this;
14175 }
14176
14177 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
14178 {
14179 srcAlphaBlendFactor = srcAlphaBlendFactor_;
14180 return *this;
14181 }
14182
14183 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
14184 {
14185 dstAlphaBlendFactor = dstAlphaBlendFactor_;
14186 return *this;
14187 }
14188
14189 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
14190 {
14191 alphaBlendOp = alphaBlendOp_;
14192 return *this;
14193 }
14194
14195 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
14196 {
14197 colorWriteMask = colorWriteMask_;
14198 return *this;
14199 }
14200
14201 operator const VkPipelineColorBlendAttachmentState&() const
14202 {
14203 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
14204 }
14205
14206 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
14207 {
14208 return ( blendEnable == rhs.blendEnable )
14209 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
14210 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
14211 && ( colorBlendOp == rhs.colorBlendOp )
14212 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
14213 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
14214 && ( alphaBlendOp == rhs.alphaBlendOp )
14215 && ( colorWriteMask == rhs.colorWriteMask );
14216 }
14217
14218 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
14219 {
14220 return !operator==( rhs );
14221 }
14222
14223 Bool32 blendEnable;
14224 BlendFactor srcColorBlendFactor;
14225 BlendFactor dstColorBlendFactor;
14226 BlendOp colorBlendOp;
14227 BlendFactor srcAlphaBlendFactor;
14228 BlendFactor dstAlphaBlendFactor;
14229 BlendOp alphaBlendOp;
14230 ColorComponentFlags colorWriteMask;
14231 };
14232 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
14233
14234 struct PipelineColorBlendStateCreateInfo
14235 {
14236 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 } } )
14237 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
14238 , pNext( nullptr )
14239 , flags( flags_ )
14240 , logicOpEnable( logicOpEnable_ )
14241 , logicOp( logicOp_ )
14242 , attachmentCount( attachmentCount_ )
14243 , pAttachments( pAttachments_ )
14244 {
14245 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14246 }
14247
14248 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
14249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014250 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014251 }
14252
14253 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
14254 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014255 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014256 return *this;
14257 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014258 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
14259 {
14260 pNext = pNext_;
14261 return *this;
14262 }
14263
14264 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
14265 {
14266 flags = flags_;
14267 return *this;
14268 }
14269
14270 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
14271 {
14272 logicOpEnable = logicOpEnable_;
14273 return *this;
14274 }
14275
14276 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
14277 {
14278 logicOp = logicOp_;
14279 return *this;
14280 }
14281
14282 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
14283 {
14284 attachmentCount = attachmentCount_;
14285 return *this;
14286 }
14287
14288 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
14289 {
14290 pAttachments = pAttachments_;
14291 return *this;
14292 }
14293
14294 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
14295 {
14296 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14297 return *this;
14298 }
14299
14300 operator const VkPipelineColorBlendStateCreateInfo&() const
14301 {
14302 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
14303 }
14304
14305 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
14306 {
14307 return ( sType == rhs.sType )
14308 && ( pNext == rhs.pNext )
14309 && ( flags == rhs.flags )
14310 && ( logicOpEnable == rhs.logicOpEnable )
14311 && ( logicOp == rhs.logicOp )
14312 && ( attachmentCount == rhs.attachmentCount )
14313 && ( pAttachments == rhs.pAttachments )
14314 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
14315 }
14316
14317 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
14318 {
14319 return !operator==( rhs );
14320 }
14321
14322 private:
14323 StructureType sType;
14324
14325 public:
14326 const void* pNext;
14327 PipelineColorBlendStateCreateFlags flags;
14328 Bool32 logicOpEnable;
14329 LogicOp logicOp;
14330 uint32_t attachmentCount;
14331 const PipelineColorBlendAttachmentState* pAttachments;
14332 float blendConstants[4];
14333 };
14334 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
14335
14336 enum class FenceCreateFlagBits
14337 {
14338 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
14339 };
14340
14341 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
14342
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014343 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014344 {
14345 return FenceCreateFlags( bit0 ) | bit1;
14346 }
14347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014348 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
14349 {
14350 return ~( FenceCreateFlags( bits ) );
14351 }
14352
14353 template <> struct FlagTraits<FenceCreateFlagBits>
14354 {
14355 enum
14356 {
14357 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
14358 };
14359 };
14360
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014361 struct FenceCreateInfo
14362 {
14363 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
14364 : sType( StructureType::eFenceCreateInfo )
14365 , pNext( nullptr )
14366 , flags( flags_ )
14367 {
14368 }
14369
14370 FenceCreateInfo( VkFenceCreateInfo const & rhs )
14371 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014372 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014373 }
14374
14375 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
14376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014377 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014378 return *this;
14379 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014380 FenceCreateInfo& setPNext( const void* pNext_ )
14381 {
14382 pNext = pNext_;
14383 return *this;
14384 }
14385
14386 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
14387 {
14388 flags = flags_;
14389 return *this;
14390 }
14391
14392 operator const VkFenceCreateInfo&() const
14393 {
14394 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
14395 }
14396
14397 bool operator==( FenceCreateInfo const& rhs ) const
14398 {
14399 return ( sType == rhs.sType )
14400 && ( pNext == rhs.pNext )
14401 && ( flags == rhs.flags );
14402 }
14403
14404 bool operator!=( FenceCreateInfo const& rhs ) const
14405 {
14406 return !operator==( rhs );
14407 }
14408
14409 private:
14410 StructureType sType;
14411
14412 public:
14413 const void* pNext;
14414 FenceCreateFlags flags;
14415 };
14416 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
14417
14418 enum class FormatFeatureFlagBits
14419 {
14420 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14421 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14422 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14423 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14424 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14425 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14426 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14427 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14428 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14429 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14430 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14431 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14432 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014433 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14434 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014435 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
14436 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014437 };
14438
14439 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14440
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014441 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014442 {
14443 return FormatFeatureFlags( bit0 ) | bit1;
14444 }
14445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014446 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14447 {
14448 return ~( FormatFeatureFlags( bits ) );
14449 }
14450
14451 template <> struct FlagTraits<FormatFeatureFlagBits>
14452 {
14453 enum
14454 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014455 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 -070014456 };
14457 };
14458
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014459 struct FormatProperties
14460 {
14461 operator const VkFormatProperties&() const
14462 {
14463 return *reinterpret_cast<const VkFormatProperties*>(this);
14464 }
14465
14466 bool operator==( FormatProperties const& rhs ) const
14467 {
14468 return ( linearTilingFeatures == rhs.linearTilingFeatures )
14469 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
14470 && ( bufferFeatures == rhs.bufferFeatures );
14471 }
14472
14473 bool operator!=( FormatProperties const& rhs ) const
14474 {
14475 return !operator==( rhs );
14476 }
14477
14478 FormatFeatureFlags linearTilingFeatures;
14479 FormatFeatureFlags optimalTilingFeatures;
14480 FormatFeatureFlags bufferFeatures;
14481 };
14482 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
14483
Mark Young39389872017-01-19 21:10:49 -070014484 struct FormatProperties2KHR
14485 {
14486 operator const VkFormatProperties2KHR&() const
14487 {
14488 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
14489 }
14490
14491 bool operator==( FormatProperties2KHR const& rhs ) const
14492 {
14493 return ( sType == rhs.sType )
14494 && ( pNext == rhs.pNext )
14495 && ( formatProperties == rhs.formatProperties );
14496 }
14497
14498 bool operator!=( FormatProperties2KHR const& rhs ) const
14499 {
14500 return !operator==( rhs );
14501 }
14502
14503 private:
14504 StructureType sType;
14505
14506 public:
14507 void* pNext;
14508 FormatProperties formatProperties;
14509 };
14510 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
14511
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014512 enum class QueryControlFlagBits
14513 {
14514 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
14515 };
14516
14517 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
14518
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014519 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014520 {
14521 return QueryControlFlags( bit0 ) | bit1;
14522 }
14523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014524 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
14525 {
14526 return ~( QueryControlFlags( bits ) );
14527 }
14528
14529 template <> struct FlagTraits<QueryControlFlagBits>
14530 {
14531 enum
14532 {
14533 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
14534 };
14535 };
14536
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014537 enum class QueryResultFlagBits
14538 {
14539 e64 = VK_QUERY_RESULT_64_BIT,
14540 eWait = VK_QUERY_RESULT_WAIT_BIT,
14541 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
14542 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
14543 };
14544
14545 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
14546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014547 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014548 {
14549 return QueryResultFlags( bit0 ) | bit1;
14550 }
14551
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014552 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
14553 {
14554 return ~( QueryResultFlags( bits ) );
14555 }
14556
14557 template <> struct FlagTraits<QueryResultFlagBits>
14558 {
14559 enum
14560 {
14561 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
14562 };
14563 };
14564
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014565 enum class CommandBufferUsageFlagBits
14566 {
14567 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
14568 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
14569 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
14570 };
14571
14572 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
14573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014574 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014575 {
14576 return CommandBufferUsageFlags( bit0 ) | bit1;
14577 }
14578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014579 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
14580 {
14581 return ~( CommandBufferUsageFlags( bits ) );
14582 }
14583
14584 template <> struct FlagTraits<CommandBufferUsageFlagBits>
14585 {
14586 enum
14587 {
14588 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
14589 };
14590 };
14591
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014592 enum class QueryPipelineStatisticFlagBits
14593 {
14594 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
14595 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
14596 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
14597 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
14598 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
14599 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14600 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14601 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14602 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14603 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14604 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14605 };
14606
14607 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014609 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014610 {
14611 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14612 }
14613
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014614 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14615 {
14616 return ~( QueryPipelineStatisticFlags( bits ) );
14617 }
14618
14619 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14620 {
14621 enum
14622 {
14623 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)
14624 };
14625 };
14626
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014627 struct CommandBufferInheritanceInfo
14628 {
14629 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14630 : sType( StructureType::eCommandBufferInheritanceInfo )
14631 , pNext( nullptr )
14632 , renderPass( renderPass_ )
14633 , subpass( subpass_ )
14634 , framebuffer( framebuffer_ )
14635 , occlusionQueryEnable( occlusionQueryEnable_ )
14636 , queryFlags( queryFlags_ )
14637 , pipelineStatistics( pipelineStatistics_ )
14638 {
14639 }
14640
14641 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14642 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014643 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014644 }
14645
14646 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014648 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014649 return *this;
14650 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014651 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14652 {
14653 pNext = pNext_;
14654 return *this;
14655 }
14656
14657 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14658 {
14659 renderPass = renderPass_;
14660 return *this;
14661 }
14662
14663 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14664 {
14665 subpass = subpass_;
14666 return *this;
14667 }
14668
14669 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14670 {
14671 framebuffer = framebuffer_;
14672 return *this;
14673 }
14674
14675 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14676 {
14677 occlusionQueryEnable = occlusionQueryEnable_;
14678 return *this;
14679 }
14680
14681 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14682 {
14683 queryFlags = queryFlags_;
14684 return *this;
14685 }
14686
14687 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14688 {
14689 pipelineStatistics = pipelineStatistics_;
14690 return *this;
14691 }
14692
14693 operator const VkCommandBufferInheritanceInfo&() const
14694 {
14695 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14696 }
14697
14698 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14699 {
14700 return ( sType == rhs.sType )
14701 && ( pNext == rhs.pNext )
14702 && ( renderPass == rhs.renderPass )
14703 && ( subpass == rhs.subpass )
14704 && ( framebuffer == rhs.framebuffer )
14705 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14706 && ( queryFlags == rhs.queryFlags )
14707 && ( pipelineStatistics == rhs.pipelineStatistics );
14708 }
14709
14710 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14711 {
14712 return !operator==( rhs );
14713 }
14714
14715 private:
14716 StructureType sType;
14717
14718 public:
14719 const void* pNext;
14720 RenderPass renderPass;
14721 uint32_t subpass;
14722 Framebuffer framebuffer;
14723 Bool32 occlusionQueryEnable;
14724 QueryControlFlags queryFlags;
14725 QueryPipelineStatisticFlags pipelineStatistics;
14726 };
14727 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14728
14729 struct CommandBufferBeginInfo
14730 {
14731 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14732 : sType( StructureType::eCommandBufferBeginInfo )
14733 , pNext( nullptr )
14734 , flags( flags_ )
14735 , pInheritanceInfo( pInheritanceInfo_ )
14736 {
14737 }
14738
14739 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14740 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014741 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014742 }
14743
14744 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14745 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014746 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014747 return *this;
14748 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014749 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14750 {
14751 pNext = pNext_;
14752 return *this;
14753 }
14754
14755 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14756 {
14757 flags = flags_;
14758 return *this;
14759 }
14760
14761 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14762 {
14763 pInheritanceInfo = pInheritanceInfo_;
14764 return *this;
14765 }
14766
14767 operator const VkCommandBufferBeginInfo&() const
14768 {
14769 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14770 }
14771
14772 bool operator==( CommandBufferBeginInfo const& rhs ) const
14773 {
14774 return ( sType == rhs.sType )
14775 && ( pNext == rhs.pNext )
14776 && ( flags == rhs.flags )
14777 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14778 }
14779
14780 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14781 {
14782 return !operator==( rhs );
14783 }
14784
14785 private:
14786 StructureType sType;
14787
14788 public:
14789 const void* pNext;
14790 CommandBufferUsageFlags flags;
14791 const CommandBufferInheritanceInfo* pInheritanceInfo;
14792 };
14793 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14794
14795 struct QueryPoolCreateInfo
14796 {
14797 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14798 : sType( StructureType::eQueryPoolCreateInfo )
14799 , pNext( nullptr )
14800 , flags( flags_ )
14801 , queryType( queryType_ )
14802 , queryCount( queryCount_ )
14803 , pipelineStatistics( pipelineStatistics_ )
14804 {
14805 }
14806
14807 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14808 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014809 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014810 }
14811
14812 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14813 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014814 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014815 return *this;
14816 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014817 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14818 {
14819 pNext = pNext_;
14820 return *this;
14821 }
14822
14823 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14824 {
14825 flags = flags_;
14826 return *this;
14827 }
14828
14829 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14830 {
14831 queryType = queryType_;
14832 return *this;
14833 }
14834
14835 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14836 {
14837 queryCount = queryCount_;
14838 return *this;
14839 }
14840
14841 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14842 {
14843 pipelineStatistics = pipelineStatistics_;
14844 return *this;
14845 }
14846
14847 operator const VkQueryPoolCreateInfo&() const
14848 {
14849 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14850 }
14851
14852 bool operator==( QueryPoolCreateInfo const& rhs ) const
14853 {
14854 return ( sType == rhs.sType )
14855 && ( pNext == rhs.pNext )
14856 && ( flags == rhs.flags )
14857 && ( queryType == rhs.queryType )
14858 && ( queryCount == rhs.queryCount )
14859 && ( pipelineStatistics == rhs.pipelineStatistics );
14860 }
14861
14862 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14863 {
14864 return !operator==( rhs );
14865 }
14866
14867 private:
14868 StructureType sType;
14869
14870 public:
14871 const void* pNext;
14872 QueryPoolCreateFlags flags;
14873 QueryType queryType;
14874 uint32_t queryCount;
14875 QueryPipelineStatisticFlags pipelineStatistics;
14876 };
14877 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14878
14879 enum class ImageAspectFlagBits
14880 {
14881 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14882 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14883 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14884 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14885 };
14886
14887 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014889 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014890 {
14891 return ImageAspectFlags( bit0 ) | bit1;
14892 }
14893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014894 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14895 {
14896 return ~( ImageAspectFlags( bits ) );
14897 }
14898
14899 template <> struct FlagTraits<ImageAspectFlagBits>
14900 {
14901 enum
14902 {
14903 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14904 };
14905 };
14906
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014907 struct ImageSubresource
14908 {
14909 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14910 : aspectMask( aspectMask_ )
14911 , mipLevel( mipLevel_ )
14912 , arrayLayer( arrayLayer_ )
14913 {
14914 }
14915
14916 ImageSubresource( VkImageSubresource const & rhs )
14917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014918 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014919 }
14920
14921 ImageSubresource& operator=( VkImageSubresource const & rhs )
14922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014923 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014924 return *this;
14925 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014926 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14927 {
14928 aspectMask = aspectMask_;
14929 return *this;
14930 }
14931
14932 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14933 {
14934 mipLevel = mipLevel_;
14935 return *this;
14936 }
14937
14938 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14939 {
14940 arrayLayer = arrayLayer_;
14941 return *this;
14942 }
14943
14944 operator const VkImageSubresource&() const
14945 {
14946 return *reinterpret_cast<const VkImageSubresource*>(this);
14947 }
14948
14949 bool operator==( ImageSubresource const& rhs ) const
14950 {
14951 return ( aspectMask == rhs.aspectMask )
14952 && ( mipLevel == rhs.mipLevel )
14953 && ( arrayLayer == rhs.arrayLayer );
14954 }
14955
14956 bool operator!=( ImageSubresource const& rhs ) const
14957 {
14958 return !operator==( rhs );
14959 }
14960
14961 ImageAspectFlags aspectMask;
14962 uint32_t mipLevel;
14963 uint32_t arrayLayer;
14964 };
14965 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14966
14967 struct ImageSubresourceLayers
14968 {
14969 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14970 : aspectMask( aspectMask_ )
14971 , mipLevel( mipLevel_ )
14972 , baseArrayLayer( baseArrayLayer_ )
14973 , layerCount( layerCount_ )
14974 {
14975 }
14976
14977 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14978 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014979 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014980 }
14981
14982 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14983 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014984 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014985 return *this;
14986 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014987 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14988 {
14989 aspectMask = aspectMask_;
14990 return *this;
14991 }
14992
14993 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14994 {
14995 mipLevel = mipLevel_;
14996 return *this;
14997 }
14998
14999 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15000 {
15001 baseArrayLayer = baseArrayLayer_;
15002 return *this;
15003 }
15004
15005 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
15006 {
15007 layerCount = layerCount_;
15008 return *this;
15009 }
15010
15011 operator const VkImageSubresourceLayers&() const
15012 {
15013 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
15014 }
15015
15016 bool operator==( ImageSubresourceLayers const& rhs ) const
15017 {
15018 return ( aspectMask == rhs.aspectMask )
15019 && ( mipLevel == rhs.mipLevel )
15020 && ( baseArrayLayer == rhs.baseArrayLayer )
15021 && ( layerCount == rhs.layerCount );
15022 }
15023
15024 bool operator!=( ImageSubresourceLayers const& rhs ) const
15025 {
15026 return !operator==( rhs );
15027 }
15028
15029 ImageAspectFlags aspectMask;
15030 uint32_t mipLevel;
15031 uint32_t baseArrayLayer;
15032 uint32_t layerCount;
15033 };
15034 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
15035
15036 struct ImageSubresourceRange
15037 {
15038 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15039 : aspectMask( aspectMask_ )
15040 , baseMipLevel( baseMipLevel_ )
15041 , levelCount( levelCount_ )
15042 , baseArrayLayer( baseArrayLayer_ )
15043 , layerCount( layerCount_ )
15044 {
15045 }
15046
15047 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
15048 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015049 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015050 }
15051
15052 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
15053 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015054 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015055 return *this;
15056 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015057 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
15058 {
15059 aspectMask = aspectMask_;
15060 return *this;
15061 }
15062
15063 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
15064 {
15065 baseMipLevel = baseMipLevel_;
15066 return *this;
15067 }
15068
15069 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
15070 {
15071 levelCount = levelCount_;
15072 return *this;
15073 }
15074
15075 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15076 {
15077 baseArrayLayer = baseArrayLayer_;
15078 return *this;
15079 }
15080
15081 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
15082 {
15083 layerCount = layerCount_;
15084 return *this;
15085 }
15086
15087 operator const VkImageSubresourceRange&() const
15088 {
15089 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
15090 }
15091
15092 bool operator==( ImageSubresourceRange const& rhs ) const
15093 {
15094 return ( aspectMask == rhs.aspectMask )
15095 && ( baseMipLevel == rhs.baseMipLevel )
15096 && ( levelCount == rhs.levelCount )
15097 && ( baseArrayLayer == rhs.baseArrayLayer )
15098 && ( layerCount == rhs.layerCount );
15099 }
15100
15101 bool operator!=( ImageSubresourceRange const& rhs ) const
15102 {
15103 return !operator==( rhs );
15104 }
15105
15106 ImageAspectFlags aspectMask;
15107 uint32_t baseMipLevel;
15108 uint32_t levelCount;
15109 uint32_t baseArrayLayer;
15110 uint32_t layerCount;
15111 };
15112 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
15113
15114 struct ImageMemoryBarrier
15115 {
15116 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() )
15117 : sType( StructureType::eImageMemoryBarrier )
15118 , pNext( nullptr )
15119 , srcAccessMask( srcAccessMask_ )
15120 , dstAccessMask( dstAccessMask_ )
15121 , oldLayout( oldLayout_ )
15122 , newLayout( newLayout_ )
15123 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
15124 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
15125 , image( image_ )
15126 , subresourceRange( subresourceRange_ )
15127 {
15128 }
15129
15130 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
15131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015132 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015133 }
15134
15135 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
15136 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015137 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015138 return *this;
15139 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015140 ImageMemoryBarrier& setPNext( const void* pNext_ )
15141 {
15142 pNext = pNext_;
15143 return *this;
15144 }
15145
15146 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
15147 {
15148 srcAccessMask = srcAccessMask_;
15149 return *this;
15150 }
15151
15152 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
15153 {
15154 dstAccessMask = dstAccessMask_;
15155 return *this;
15156 }
15157
15158 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
15159 {
15160 oldLayout = oldLayout_;
15161 return *this;
15162 }
15163
15164 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
15165 {
15166 newLayout = newLayout_;
15167 return *this;
15168 }
15169
15170 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
15171 {
15172 srcQueueFamilyIndex = srcQueueFamilyIndex_;
15173 return *this;
15174 }
15175
15176 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
15177 {
15178 dstQueueFamilyIndex = dstQueueFamilyIndex_;
15179 return *this;
15180 }
15181
15182 ImageMemoryBarrier& setImage( Image image_ )
15183 {
15184 image = image_;
15185 return *this;
15186 }
15187
15188 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15189 {
15190 subresourceRange = subresourceRange_;
15191 return *this;
15192 }
15193
15194 operator const VkImageMemoryBarrier&() const
15195 {
15196 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
15197 }
15198
15199 bool operator==( ImageMemoryBarrier const& rhs ) const
15200 {
15201 return ( sType == rhs.sType )
15202 && ( pNext == rhs.pNext )
15203 && ( srcAccessMask == rhs.srcAccessMask )
15204 && ( dstAccessMask == rhs.dstAccessMask )
15205 && ( oldLayout == rhs.oldLayout )
15206 && ( newLayout == rhs.newLayout )
15207 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
15208 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
15209 && ( image == rhs.image )
15210 && ( subresourceRange == rhs.subresourceRange );
15211 }
15212
15213 bool operator!=( ImageMemoryBarrier const& rhs ) const
15214 {
15215 return !operator==( rhs );
15216 }
15217
15218 private:
15219 StructureType sType;
15220
15221 public:
15222 const void* pNext;
15223 AccessFlags srcAccessMask;
15224 AccessFlags dstAccessMask;
15225 ImageLayout oldLayout;
15226 ImageLayout newLayout;
15227 uint32_t srcQueueFamilyIndex;
15228 uint32_t dstQueueFamilyIndex;
15229 Image image;
15230 ImageSubresourceRange subresourceRange;
15231 };
15232 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
15233
15234 struct ImageViewCreateInfo
15235 {
15236 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
15237 : sType( StructureType::eImageViewCreateInfo )
15238 , pNext( nullptr )
15239 , flags( flags_ )
15240 , image( image_ )
15241 , viewType( viewType_ )
15242 , format( format_ )
15243 , components( components_ )
15244 , subresourceRange( subresourceRange_ )
15245 {
15246 }
15247
15248 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
15249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015250 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015251 }
15252
15253 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
15254 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015255 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015256 return *this;
15257 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015258 ImageViewCreateInfo& setPNext( const void* pNext_ )
15259 {
15260 pNext = pNext_;
15261 return *this;
15262 }
15263
15264 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
15265 {
15266 flags = flags_;
15267 return *this;
15268 }
15269
15270 ImageViewCreateInfo& setImage( Image image_ )
15271 {
15272 image = image_;
15273 return *this;
15274 }
15275
15276 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
15277 {
15278 viewType = viewType_;
15279 return *this;
15280 }
15281
15282 ImageViewCreateInfo& setFormat( Format format_ )
15283 {
15284 format = format_;
15285 return *this;
15286 }
15287
15288 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
15289 {
15290 components = components_;
15291 return *this;
15292 }
15293
15294 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15295 {
15296 subresourceRange = subresourceRange_;
15297 return *this;
15298 }
15299
15300 operator const VkImageViewCreateInfo&() const
15301 {
15302 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
15303 }
15304
15305 bool operator==( ImageViewCreateInfo const& rhs ) const
15306 {
15307 return ( sType == rhs.sType )
15308 && ( pNext == rhs.pNext )
15309 && ( flags == rhs.flags )
15310 && ( image == rhs.image )
15311 && ( viewType == rhs.viewType )
15312 && ( format == rhs.format )
15313 && ( components == rhs.components )
15314 && ( subresourceRange == rhs.subresourceRange );
15315 }
15316
15317 bool operator!=( ImageViewCreateInfo const& rhs ) const
15318 {
15319 return !operator==( rhs );
15320 }
15321
15322 private:
15323 StructureType sType;
15324
15325 public:
15326 const void* pNext;
15327 ImageViewCreateFlags flags;
15328 Image image;
15329 ImageViewType viewType;
15330 Format format;
15331 ComponentMapping components;
15332 ImageSubresourceRange subresourceRange;
15333 };
15334 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
15335
15336 struct ImageCopy
15337 {
15338 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15339 : srcSubresource( srcSubresource_ )
15340 , srcOffset( srcOffset_ )
15341 , dstSubresource( dstSubresource_ )
15342 , dstOffset( dstOffset_ )
15343 , extent( extent_ )
15344 {
15345 }
15346
15347 ImageCopy( VkImageCopy const & rhs )
15348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015349 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015350 }
15351
15352 ImageCopy& operator=( VkImageCopy const & rhs )
15353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015354 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015355 return *this;
15356 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015357 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15358 {
15359 srcSubresource = srcSubresource_;
15360 return *this;
15361 }
15362
15363 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
15364 {
15365 srcOffset = srcOffset_;
15366 return *this;
15367 }
15368
15369 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15370 {
15371 dstSubresource = dstSubresource_;
15372 return *this;
15373 }
15374
15375 ImageCopy& setDstOffset( Offset3D dstOffset_ )
15376 {
15377 dstOffset = dstOffset_;
15378 return *this;
15379 }
15380
15381 ImageCopy& setExtent( Extent3D extent_ )
15382 {
15383 extent = extent_;
15384 return *this;
15385 }
15386
15387 operator const VkImageCopy&() const
15388 {
15389 return *reinterpret_cast<const VkImageCopy*>(this);
15390 }
15391
15392 bool operator==( ImageCopy const& rhs ) const
15393 {
15394 return ( srcSubresource == rhs.srcSubresource )
15395 && ( srcOffset == rhs.srcOffset )
15396 && ( dstSubresource == rhs.dstSubresource )
15397 && ( dstOffset == rhs.dstOffset )
15398 && ( extent == rhs.extent );
15399 }
15400
15401 bool operator!=( ImageCopy const& rhs ) const
15402 {
15403 return !operator==( rhs );
15404 }
15405
15406 ImageSubresourceLayers srcSubresource;
15407 Offset3D srcOffset;
15408 ImageSubresourceLayers dstSubresource;
15409 Offset3D dstOffset;
15410 Extent3D extent;
15411 };
15412 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15413
15414 struct ImageBlit
15415 {
15416 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15417 : srcSubresource( srcSubresource_ )
15418 , dstSubresource( dstSubresource_ )
15419 {
15420 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15421 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15422 }
15423
15424 ImageBlit( VkImageBlit const & rhs )
15425 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015426 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015427 }
15428
15429 ImageBlit& operator=( VkImageBlit const & rhs )
15430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015431 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015432 return *this;
15433 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015434 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15435 {
15436 srcSubresource = srcSubresource_;
15437 return *this;
15438 }
15439
15440 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15441 {
15442 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15443 return *this;
15444 }
15445
15446 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15447 {
15448 dstSubresource = dstSubresource_;
15449 return *this;
15450 }
15451
15452 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15453 {
15454 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15455 return *this;
15456 }
15457
15458 operator const VkImageBlit&() const
15459 {
15460 return *reinterpret_cast<const VkImageBlit*>(this);
15461 }
15462
15463 bool operator==( ImageBlit const& rhs ) const
15464 {
15465 return ( srcSubresource == rhs.srcSubresource )
15466 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
15467 && ( dstSubresource == rhs.dstSubresource )
15468 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
15469 }
15470
15471 bool operator!=( ImageBlit const& rhs ) const
15472 {
15473 return !operator==( rhs );
15474 }
15475
15476 ImageSubresourceLayers srcSubresource;
15477 Offset3D srcOffsets[2];
15478 ImageSubresourceLayers dstSubresource;
15479 Offset3D dstOffsets[2];
15480 };
15481 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
15482
15483 struct BufferImageCopy
15484 {
15485 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
15486 : bufferOffset( bufferOffset_ )
15487 , bufferRowLength( bufferRowLength_ )
15488 , bufferImageHeight( bufferImageHeight_ )
15489 , imageSubresource( imageSubresource_ )
15490 , imageOffset( imageOffset_ )
15491 , imageExtent( imageExtent_ )
15492 {
15493 }
15494
15495 BufferImageCopy( VkBufferImageCopy const & rhs )
15496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015497 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015498 }
15499
15500 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
15501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015502 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015503 return *this;
15504 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015505 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
15506 {
15507 bufferOffset = bufferOffset_;
15508 return *this;
15509 }
15510
15511 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
15512 {
15513 bufferRowLength = bufferRowLength_;
15514 return *this;
15515 }
15516
15517 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
15518 {
15519 bufferImageHeight = bufferImageHeight_;
15520 return *this;
15521 }
15522
15523 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
15524 {
15525 imageSubresource = imageSubresource_;
15526 return *this;
15527 }
15528
15529 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
15530 {
15531 imageOffset = imageOffset_;
15532 return *this;
15533 }
15534
15535 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
15536 {
15537 imageExtent = imageExtent_;
15538 return *this;
15539 }
15540
15541 operator const VkBufferImageCopy&() const
15542 {
15543 return *reinterpret_cast<const VkBufferImageCopy*>(this);
15544 }
15545
15546 bool operator==( BufferImageCopy const& rhs ) const
15547 {
15548 return ( bufferOffset == rhs.bufferOffset )
15549 && ( bufferRowLength == rhs.bufferRowLength )
15550 && ( bufferImageHeight == rhs.bufferImageHeight )
15551 && ( imageSubresource == rhs.imageSubresource )
15552 && ( imageOffset == rhs.imageOffset )
15553 && ( imageExtent == rhs.imageExtent );
15554 }
15555
15556 bool operator!=( BufferImageCopy const& rhs ) const
15557 {
15558 return !operator==( rhs );
15559 }
15560
15561 DeviceSize bufferOffset;
15562 uint32_t bufferRowLength;
15563 uint32_t bufferImageHeight;
15564 ImageSubresourceLayers imageSubresource;
15565 Offset3D imageOffset;
15566 Extent3D imageExtent;
15567 };
15568 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
15569
15570 struct ImageResolve
15571 {
15572 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15573 : srcSubresource( srcSubresource_ )
15574 , srcOffset( srcOffset_ )
15575 , dstSubresource( dstSubresource_ )
15576 , dstOffset( dstOffset_ )
15577 , extent( extent_ )
15578 {
15579 }
15580
15581 ImageResolve( VkImageResolve const & rhs )
15582 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015583 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015584 }
15585
15586 ImageResolve& operator=( VkImageResolve const & rhs )
15587 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015588 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015589 return *this;
15590 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015591 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15592 {
15593 srcSubresource = srcSubresource_;
15594 return *this;
15595 }
15596
15597 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15598 {
15599 srcOffset = srcOffset_;
15600 return *this;
15601 }
15602
15603 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15604 {
15605 dstSubresource = dstSubresource_;
15606 return *this;
15607 }
15608
15609 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15610 {
15611 dstOffset = dstOffset_;
15612 return *this;
15613 }
15614
15615 ImageResolve& setExtent( Extent3D extent_ )
15616 {
15617 extent = extent_;
15618 return *this;
15619 }
15620
15621 operator const VkImageResolve&() const
15622 {
15623 return *reinterpret_cast<const VkImageResolve*>(this);
15624 }
15625
15626 bool operator==( ImageResolve const& rhs ) const
15627 {
15628 return ( srcSubresource == rhs.srcSubresource )
15629 && ( srcOffset == rhs.srcOffset )
15630 && ( dstSubresource == rhs.dstSubresource )
15631 && ( dstOffset == rhs.dstOffset )
15632 && ( extent == rhs.extent );
15633 }
15634
15635 bool operator!=( ImageResolve const& rhs ) const
15636 {
15637 return !operator==( rhs );
15638 }
15639
15640 ImageSubresourceLayers srcSubresource;
15641 Offset3D srcOffset;
15642 ImageSubresourceLayers dstSubresource;
15643 Offset3D dstOffset;
15644 Extent3D extent;
15645 };
15646 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15647
15648 struct ClearAttachment
15649 {
15650 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15651 : aspectMask( aspectMask_ )
15652 , colorAttachment( colorAttachment_ )
15653 , clearValue( clearValue_ )
15654 {
15655 }
15656
15657 ClearAttachment( VkClearAttachment const & rhs )
15658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015659 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015660 }
15661
15662 ClearAttachment& operator=( VkClearAttachment const & rhs )
15663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015664 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015665 return *this;
15666 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015667 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15668 {
15669 aspectMask = aspectMask_;
15670 return *this;
15671 }
15672
15673 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15674 {
15675 colorAttachment = colorAttachment_;
15676 return *this;
15677 }
15678
15679 ClearAttachment& setClearValue( ClearValue clearValue_ )
15680 {
15681 clearValue = clearValue_;
15682 return *this;
15683 }
15684
15685 operator const VkClearAttachment&() const
15686 {
15687 return *reinterpret_cast<const VkClearAttachment*>(this);
15688 }
15689
15690 ImageAspectFlags aspectMask;
15691 uint32_t colorAttachment;
15692 ClearValue clearValue;
15693 };
15694 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15695
15696 enum class SparseImageFormatFlagBits
15697 {
15698 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15699 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15700 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15701 };
15702
15703 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15704
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015705 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015706 {
15707 return SparseImageFormatFlags( bit0 ) | bit1;
15708 }
15709
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015710 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15711 {
15712 return ~( SparseImageFormatFlags( bits ) );
15713 }
15714
15715 template <> struct FlagTraits<SparseImageFormatFlagBits>
15716 {
15717 enum
15718 {
15719 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15720 };
15721 };
15722
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015723 struct SparseImageFormatProperties
15724 {
15725 operator const VkSparseImageFormatProperties&() const
15726 {
15727 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15728 }
15729
15730 bool operator==( SparseImageFormatProperties const& rhs ) const
15731 {
15732 return ( aspectMask == rhs.aspectMask )
15733 && ( imageGranularity == rhs.imageGranularity )
15734 && ( flags == rhs.flags );
15735 }
15736
15737 bool operator!=( SparseImageFormatProperties const& rhs ) const
15738 {
15739 return !operator==( rhs );
15740 }
15741
15742 ImageAspectFlags aspectMask;
15743 Extent3D imageGranularity;
15744 SparseImageFormatFlags flags;
15745 };
15746 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15747
15748 struct SparseImageMemoryRequirements
15749 {
15750 operator const VkSparseImageMemoryRequirements&() const
15751 {
15752 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15753 }
15754
15755 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15756 {
15757 return ( formatProperties == rhs.formatProperties )
15758 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15759 && ( imageMipTailSize == rhs.imageMipTailSize )
15760 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15761 && ( imageMipTailStride == rhs.imageMipTailStride );
15762 }
15763
15764 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15765 {
15766 return !operator==( rhs );
15767 }
15768
15769 SparseImageFormatProperties formatProperties;
15770 uint32_t imageMipTailFirstLod;
15771 DeviceSize imageMipTailSize;
15772 DeviceSize imageMipTailOffset;
15773 DeviceSize imageMipTailStride;
15774 };
15775 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15776
Mark Young39389872017-01-19 21:10:49 -070015777 struct SparseImageFormatProperties2KHR
15778 {
15779 operator const VkSparseImageFormatProperties2KHR&() const
15780 {
15781 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15782 }
15783
15784 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15785 {
15786 return ( sType == rhs.sType )
15787 && ( pNext == rhs.pNext )
15788 && ( properties == rhs.properties );
15789 }
15790
15791 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15792 {
15793 return !operator==( rhs );
15794 }
15795
15796 private:
15797 StructureType sType;
15798
15799 public:
15800 void* pNext;
15801 SparseImageFormatProperties properties;
15802 };
15803 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15804
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015805 enum class SparseMemoryBindFlagBits
15806 {
15807 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15808 };
15809
15810 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15811
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015812 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015813 {
15814 return SparseMemoryBindFlags( bit0 ) | bit1;
15815 }
15816
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015817 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15818 {
15819 return ~( SparseMemoryBindFlags( bits ) );
15820 }
15821
15822 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15823 {
15824 enum
15825 {
15826 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15827 };
15828 };
15829
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015830 struct SparseMemoryBind
15831 {
15832 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15833 : resourceOffset( resourceOffset_ )
15834 , size( size_ )
15835 , memory( memory_ )
15836 , memoryOffset( memoryOffset_ )
15837 , flags( flags_ )
15838 {
15839 }
15840
15841 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15842 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015843 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015844 }
15845
15846 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15847 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015848 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015849 return *this;
15850 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015851 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15852 {
15853 resourceOffset = resourceOffset_;
15854 return *this;
15855 }
15856
15857 SparseMemoryBind& setSize( DeviceSize size_ )
15858 {
15859 size = size_;
15860 return *this;
15861 }
15862
15863 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15864 {
15865 memory = memory_;
15866 return *this;
15867 }
15868
15869 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15870 {
15871 memoryOffset = memoryOffset_;
15872 return *this;
15873 }
15874
15875 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15876 {
15877 flags = flags_;
15878 return *this;
15879 }
15880
15881 operator const VkSparseMemoryBind&() const
15882 {
15883 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15884 }
15885
15886 bool operator==( SparseMemoryBind const& rhs ) const
15887 {
15888 return ( resourceOffset == rhs.resourceOffset )
15889 && ( size == rhs.size )
15890 && ( memory == rhs.memory )
15891 && ( memoryOffset == rhs.memoryOffset )
15892 && ( flags == rhs.flags );
15893 }
15894
15895 bool operator!=( SparseMemoryBind const& rhs ) const
15896 {
15897 return !operator==( rhs );
15898 }
15899
15900 DeviceSize resourceOffset;
15901 DeviceSize size;
15902 DeviceMemory memory;
15903 DeviceSize memoryOffset;
15904 SparseMemoryBindFlags flags;
15905 };
15906 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15907
15908 struct SparseImageMemoryBind
15909 {
15910 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15911 : subresource( subresource_ )
15912 , offset( offset_ )
15913 , extent( extent_ )
15914 , memory( memory_ )
15915 , memoryOffset( memoryOffset_ )
15916 , flags( flags_ )
15917 {
15918 }
15919
15920 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015922 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015923 }
15924
15925 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015927 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015928 return *this;
15929 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015930 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15931 {
15932 subresource = subresource_;
15933 return *this;
15934 }
15935
15936 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15937 {
15938 offset = offset_;
15939 return *this;
15940 }
15941
15942 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15943 {
15944 extent = extent_;
15945 return *this;
15946 }
15947
15948 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15949 {
15950 memory = memory_;
15951 return *this;
15952 }
15953
15954 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15955 {
15956 memoryOffset = memoryOffset_;
15957 return *this;
15958 }
15959
15960 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15961 {
15962 flags = flags_;
15963 return *this;
15964 }
15965
15966 operator const VkSparseImageMemoryBind&() const
15967 {
15968 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15969 }
15970
15971 bool operator==( SparseImageMemoryBind const& rhs ) const
15972 {
15973 return ( subresource == rhs.subresource )
15974 && ( offset == rhs.offset )
15975 && ( extent == rhs.extent )
15976 && ( memory == rhs.memory )
15977 && ( memoryOffset == rhs.memoryOffset )
15978 && ( flags == rhs.flags );
15979 }
15980
15981 bool operator!=( SparseImageMemoryBind const& rhs ) const
15982 {
15983 return !operator==( rhs );
15984 }
15985
15986 ImageSubresource subresource;
15987 Offset3D offset;
15988 Extent3D extent;
15989 DeviceMemory memory;
15990 DeviceSize memoryOffset;
15991 SparseMemoryBindFlags flags;
15992 };
15993 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15994
15995 struct SparseBufferMemoryBindInfo
15996 {
15997 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15998 : buffer( buffer_ )
15999 , bindCount( bindCount_ )
16000 , pBinds( pBinds_ )
16001 {
16002 }
16003
16004 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
16005 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016006 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016007 }
16008
16009 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
16010 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016011 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016012 return *this;
16013 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016014 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
16015 {
16016 buffer = buffer_;
16017 return *this;
16018 }
16019
16020 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16021 {
16022 bindCount = bindCount_;
16023 return *this;
16024 }
16025
16026 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16027 {
16028 pBinds = pBinds_;
16029 return *this;
16030 }
16031
16032 operator const VkSparseBufferMemoryBindInfo&() const
16033 {
16034 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
16035 }
16036
16037 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
16038 {
16039 return ( buffer == rhs.buffer )
16040 && ( bindCount == rhs.bindCount )
16041 && ( pBinds == rhs.pBinds );
16042 }
16043
16044 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
16045 {
16046 return !operator==( rhs );
16047 }
16048
16049 Buffer buffer;
16050 uint32_t bindCount;
16051 const SparseMemoryBind* pBinds;
16052 };
16053 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
16054
16055 struct SparseImageOpaqueMemoryBindInfo
16056 {
16057 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16058 : image( image_ )
16059 , bindCount( bindCount_ )
16060 , pBinds( pBinds_ )
16061 {
16062 }
16063
16064 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016066 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016067 }
16068
16069 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
16070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016071 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016072 return *this;
16073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016074 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
16075 {
16076 image = image_;
16077 return *this;
16078 }
16079
16080 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16081 {
16082 bindCount = bindCount_;
16083 return *this;
16084 }
16085
16086 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16087 {
16088 pBinds = pBinds_;
16089 return *this;
16090 }
16091
16092 operator const VkSparseImageOpaqueMemoryBindInfo&() const
16093 {
16094 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
16095 }
16096
16097 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16098 {
16099 return ( image == rhs.image )
16100 && ( bindCount == rhs.bindCount )
16101 && ( pBinds == rhs.pBinds );
16102 }
16103
16104 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
16105 {
16106 return !operator==( rhs );
16107 }
16108
16109 Image image;
16110 uint32_t bindCount;
16111 const SparseMemoryBind* pBinds;
16112 };
16113 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
16114
16115 struct SparseImageMemoryBindInfo
16116 {
16117 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
16118 : image( image_ )
16119 , bindCount( bindCount_ )
16120 , pBinds( pBinds_ )
16121 {
16122 }
16123
16124 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
16125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016126 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016127 }
16128
16129 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
16130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016131 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016132 return *this;
16133 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016134 SparseImageMemoryBindInfo& setImage( Image image_ )
16135 {
16136 image = image_;
16137 return *this;
16138 }
16139
16140 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16141 {
16142 bindCount = bindCount_;
16143 return *this;
16144 }
16145
16146 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
16147 {
16148 pBinds = pBinds_;
16149 return *this;
16150 }
16151
16152 operator const VkSparseImageMemoryBindInfo&() const
16153 {
16154 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
16155 }
16156
16157 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
16158 {
16159 return ( image == rhs.image )
16160 && ( bindCount == rhs.bindCount )
16161 && ( pBinds == rhs.pBinds );
16162 }
16163
16164 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
16165 {
16166 return !operator==( rhs );
16167 }
16168
16169 Image image;
16170 uint32_t bindCount;
16171 const SparseImageMemoryBind* pBinds;
16172 };
16173 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
16174
16175 struct BindSparseInfo
16176 {
16177 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 )
16178 : sType( StructureType::eBindSparseInfo )
16179 , pNext( nullptr )
16180 , waitSemaphoreCount( waitSemaphoreCount_ )
16181 , pWaitSemaphores( pWaitSemaphores_ )
16182 , bufferBindCount( bufferBindCount_ )
16183 , pBufferBinds( pBufferBinds_ )
16184 , imageOpaqueBindCount( imageOpaqueBindCount_ )
16185 , pImageOpaqueBinds( pImageOpaqueBinds_ )
16186 , imageBindCount( imageBindCount_ )
16187 , pImageBinds( pImageBinds_ )
16188 , signalSemaphoreCount( signalSemaphoreCount_ )
16189 , pSignalSemaphores( pSignalSemaphores_ )
16190 {
16191 }
16192
16193 BindSparseInfo( VkBindSparseInfo const & rhs )
16194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016195 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016196 }
16197
16198 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
16199 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016200 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016201 return *this;
16202 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016203 BindSparseInfo& setPNext( const void* pNext_ )
16204 {
16205 pNext = pNext_;
16206 return *this;
16207 }
16208
16209 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
16210 {
16211 waitSemaphoreCount = waitSemaphoreCount_;
16212 return *this;
16213 }
16214
16215 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
16216 {
16217 pWaitSemaphores = pWaitSemaphores_;
16218 return *this;
16219 }
16220
16221 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
16222 {
16223 bufferBindCount = bufferBindCount_;
16224 return *this;
16225 }
16226
16227 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
16228 {
16229 pBufferBinds = pBufferBinds_;
16230 return *this;
16231 }
16232
16233 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
16234 {
16235 imageOpaqueBindCount = imageOpaqueBindCount_;
16236 return *this;
16237 }
16238
16239 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
16240 {
16241 pImageOpaqueBinds = pImageOpaqueBinds_;
16242 return *this;
16243 }
16244
16245 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
16246 {
16247 imageBindCount = imageBindCount_;
16248 return *this;
16249 }
16250
16251 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
16252 {
16253 pImageBinds = pImageBinds_;
16254 return *this;
16255 }
16256
16257 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
16258 {
16259 signalSemaphoreCount = signalSemaphoreCount_;
16260 return *this;
16261 }
16262
16263 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
16264 {
16265 pSignalSemaphores = pSignalSemaphores_;
16266 return *this;
16267 }
16268
16269 operator const VkBindSparseInfo&() const
16270 {
16271 return *reinterpret_cast<const VkBindSparseInfo*>(this);
16272 }
16273
16274 bool operator==( BindSparseInfo const& rhs ) const
16275 {
16276 return ( sType == rhs.sType )
16277 && ( pNext == rhs.pNext )
16278 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
16279 && ( pWaitSemaphores == rhs.pWaitSemaphores )
16280 && ( bufferBindCount == rhs.bufferBindCount )
16281 && ( pBufferBinds == rhs.pBufferBinds )
16282 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
16283 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
16284 && ( imageBindCount == rhs.imageBindCount )
16285 && ( pImageBinds == rhs.pImageBinds )
16286 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
16287 && ( pSignalSemaphores == rhs.pSignalSemaphores );
16288 }
16289
16290 bool operator!=( BindSparseInfo const& rhs ) const
16291 {
16292 return !operator==( rhs );
16293 }
16294
16295 private:
16296 StructureType sType;
16297
16298 public:
16299 const void* pNext;
16300 uint32_t waitSemaphoreCount;
16301 const Semaphore* pWaitSemaphores;
16302 uint32_t bufferBindCount;
16303 const SparseBufferMemoryBindInfo* pBufferBinds;
16304 uint32_t imageOpaqueBindCount;
16305 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
16306 uint32_t imageBindCount;
16307 const SparseImageMemoryBindInfo* pImageBinds;
16308 uint32_t signalSemaphoreCount;
16309 const Semaphore* pSignalSemaphores;
16310 };
16311 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
16312
16313 enum class PipelineStageFlagBits
16314 {
16315 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
16316 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
16317 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
16318 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
16319 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
16320 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
16321 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
16322 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
16323 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
16324 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
16325 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
16326 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
16327 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
16328 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
16329 eHost = VK_PIPELINE_STAGE_HOST_BIT,
16330 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016331 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
16332 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016333 };
16334
16335 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
16336
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016337 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016338 {
16339 return PipelineStageFlags( bit0 ) | bit1;
16340 }
16341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016342 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
16343 {
16344 return ~( PipelineStageFlags( bits ) );
16345 }
16346
16347 template <> struct FlagTraits<PipelineStageFlagBits>
16348 {
16349 enum
16350 {
16351 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)
16352 };
16353 };
16354
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016355 enum class CommandPoolCreateFlagBits
16356 {
16357 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
16358 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
16359 };
16360
16361 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
16362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016363 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016364 {
16365 return CommandPoolCreateFlags( bit0 ) | bit1;
16366 }
16367
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016368 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
16369 {
16370 return ~( CommandPoolCreateFlags( bits ) );
16371 }
16372
16373 template <> struct FlagTraits<CommandPoolCreateFlagBits>
16374 {
16375 enum
16376 {
16377 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
16378 };
16379 };
16380
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016381 struct CommandPoolCreateInfo
16382 {
16383 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
16384 : sType( StructureType::eCommandPoolCreateInfo )
16385 , pNext( nullptr )
16386 , flags( flags_ )
16387 , queueFamilyIndex( queueFamilyIndex_ )
16388 {
16389 }
16390
16391 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
16392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016393 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016394 }
16395
16396 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
16397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016398 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016399 return *this;
16400 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016401 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16402 {
16403 pNext = pNext_;
16404 return *this;
16405 }
16406
16407 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16408 {
16409 flags = flags_;
16410 return *this;
16411 }
16412
16413 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16414 {
16415 queueFamilyIndex = queueFamilyIndex_;
16416 return *this;
16417 }
16418
16419 operator const VkCommandPoolCreateInfo&() const
16420 {
16421 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16422 }
16423
16424 bool operator==( CommandPoolCreateInfo const& rhs ) const
16425 {
16426 return ( sType == rhs.sType )
16427 && ( pNext == rhs.pNext )
16428 && ( flags == rhs.flags )
16429 && ( queueFamilyIndex == rhs.queueFamilyIndex );
16430 }
16431
16432 bool operator!=( CommandPoolCreateInfo const& rhs ) const
16433 {
16434 return !operator==( rhs );
16435 }
16436
16437 private:
16438 StructureType sType;
16439
16440 public:
16441 const void* pNext;
16442 CommandPoolCreateFlags flags;
16443 uint32_t queueFamilyIndex;
16444 };
16445 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
16446
16447 enum class CommandPoolResetFlagBits
16448 {
16449 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
16450 };
16451
16452 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
16453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016454 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016455 {
16456 return CommandPoolResetFlags( bit0 ) | bit1;
16457 }
16458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016459 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
16460 {
16461 return ~( CommandPoolResetFlags( bits ) );
16462 }
16463
16464 template <> struct FlagTraits<CommandPoolResetFlagBits>
16465 {
16466 enum
16467 {
16468 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
16469 };
16470 };
16471
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016472 enum class CommandBufferResetFlagBits
16473 {
16474 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
16475 };
16476
16477 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
16478
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016479 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016480 {
16481 return CommandBufferResetFlags( bit0 ) | bit1;
16482 }
16483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016484 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
16485 {
16486 return ~( CommandBufferResetFlags( bits ) );
16487 }
16488
16489 template <> struct FlagTraits<CommandBufferResetFlagBits>
16490 {
16491 enum
16492 {
16493 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
16494 };
16495 };
16496
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016497 enum class SampleCountFlagBits
16498 {
16499 e1 = VK_SAMPLE_COUNT_1_BIT,
16500 e2 = VK_SAMPLE_COUNT_2_BIT,
16501 e4 = VK_SAMPLE_COUNT_4_BIT,
16502 e8 = VK_SAMPLE_COUNT_8_BIT,
16503 e16 = VK_SAMPLE_COUNT_16_BIT,
16504 e32 = VK_SAMPLE_COUNT_32_BIT,
16505 e64 = VK_SAMPLE_COUNT_64_BIT
16506 };
16507
16508 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
16509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016510 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016511 {
16512 return SampleCountFlags( bit0 ) | bit1;
16513 }
16514
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016515 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
16516 {
16517 return ~( SampleCountFlags( bits ) );
16518 }
16519
16520 template <> struct FlagTraits<SampleCountFlagBits>
16521 {
16522 enum
16523 {
16524 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
16525 };
16526 };
16527
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016528 struct ImageFormatProperties
16529 {
16530 operator const VkImageFormatProperties&() const
16531 {
16532 return *reinterpret_cast<const VkImageFormatProperties*>(this);
16533 }
16534
16535 bool operator==( ImageFormatProperties const& rhs ) const
16536 {
16537 return ( maxExtent == rhs.maxExtent )
16538 && ( maxMipLevels == rhs.maxMipLevels )
16539 && ( maxArrayLayers == rhs.maxArrayLayers )
16540 && ( sampleCounts == rhs.sampleCounts )
16541 && ( maxResourceSize == rhs.maxResourceSize );
16542 }
16543
16544 bool operator!=( ImageFormatProperties const& rhs ) const
16545 {
16546 return !operator==( rhs );
16547 }
16548
16549 Extent3D maxExtent;
16550 uint32_t maxMipLevels;
16551 uint32_t maxArrayLayers;
16552 SampleCountFlags sampleCounts;
16553 DeviceSize maxResourceSize;
16554 };
16555 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
16556
16557 struct ImageCreateInfo
16558 {
16559 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 )
16560 : sType( StructureType::eImageCreateInfo )
16561 , pNext( nullptr )
16562 , flags( flags_ )
16563 , imageType( imageType_ )
16564 , format( format_ )
16565 , extent( extent_ )
16566 , mipLevels( mipLevels_ )
16567 , arrayLayers( arrayLayers_ )
16568 , samples( samples_ )
16569 , tiling( tiling_ )
16570 , usage( usage_ )
16571 , sharingMode( sharingMode_ )
16572 , queueFamilyIndexCount( queueFamilyIndexCount_ )
16573 , pQueueFamilyIndices( pQueueFamilyIndices_ )
16574 , initialLayout( initialLayout_ )
16575 {
16576 }
16577
16578 ImageCreateInfo( VkImageCreateInfo const & rhs )
16579 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016580 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016581 }
16582
16583 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16584 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016585 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016586 return *this;
16587 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016588 ImageCreateInfo& setPNext( const void* pNext_ )
16589 {
16590 pNext = pNext_;
16591 return *this;
16592 }
16593
16594 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16595 {
16596 flags = flags_;
16597 return *this;
16598 }
16599
16600 ImageCreateInfo& setImageType( ImageType imageType_ )
16601 {
16602 imageType = imageType_;
16603 return *this;
16604 }
16605
16606 ImageCreateInfo& setFormat( Format format_ )
16607 {
16608 format = format_;
16609 return *this;
16610 }
16611
16612 ImageCreateInfo& setExtent( Extent3D extent_ )
16613 {
16614 extent = extent_;
16615 return *this;
16616 }
16617
16618 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16619 {
16620 mipLevels = mipLevels_;
16621 return *this;
16622 }
16623
16624 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16625 {
16626 arrayLayers = arrayLayers_;
16627 return *this;
16628 }
16629
16630 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16631 {
16632 samples = samples_;
16633 return *this;
16634 }
16635
16636 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16637 {
16638 tiling = tiling_;
16639 return *this;
16640 }
16641
16642 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16643 {
16644 usage = usage_;
16645 return *this;
16646 }
16647
16648 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16649 {
16650 sharingMode = sharingMode_;
16651 return *this;
16652 }
16653
16654 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16655 {
16656 queueFamilyIndexCount = queueFamilyIndexCount_;
16657 return *this;
16658 }
16659
16660 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16661 {
16662 pQueueFamilyIndices = pQueueFamilyIndices_;
16663 return *this;
16664 }
16665
16666 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16667 {
16668 initialLayout = initialLayout_;
16669 return *this;
16670 }
16671
16672 operator const VkImageCreateInfo&() const
16673 {
16674 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16675 }
16676
16677 bool operator==( ImageCreateInfo const& rhs ) const
16678 {
16679 return ( sType == rhs.sType )
16680 && ( pNext == rhs.pNext )
16681 && ( flags == rhs.flags )
16682 && ( imageType == rhs.imageType )
16683 && ( format == rhs.format )
16684 && ( extent == rhs.extent )
16685 && ( mipLevels == rhs.mipLevels )
16686 && ( arrayLayers == rhs.arrayLayers )
16687 && ( samples == rhs.samples )
16688 && ( tiling == rhs.tiling )
16689 && ( usage == rhs.usage )
16690 && ( sharingMode == rhs.sharingMode )
16691 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16692 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16693 && ( initialLayout == rhs.initialLayout );
16694 }
16695
16696 bool operator!=( ImageCreateInfo const& rhs ) const
16697 {
16698 return !operator==( rhs );
16699 }
16700
16701 private:
16702 StructureType sType;
16703
16704 public:
16705 const void* pNext;
16706 ImageCreateFlags flags;
16707 ImageType imageType;
16708 Format format;
16709 Extent3D extent;
16710 uint32_t mipLevels;
16711 uint32_t arrayLayers;
16712 SampleCountFlagBits samples;
16713 ImageTiling tiling;
16714 ImageUsageFlags usage;
16715 SharingMode sharingMode;
16716 uint32_t queueFamilyIndexCount;
16717 const uint32_t* pQueueFamilyIndices;
16718 ImageLayout initialLayout;
16719 };
16720 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16721
16722 struct PipelineMultisampleStateCreateInfo
16723 {
16724 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16725 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16726 , pNext( nullptr )
16727 , flags( flags_ )
16728 , rasterizationSamples( rasterizationSamples_ )
16729 , sampleShadingEnable( sampleShadingEnable_ )
16730 , minSampleShading( minSampleShading_ )
16731 , pSampleMask( pSampleMask_ )
16732 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16733 , alphaToOneEnable( alphaToOneEnable_ )
16734 {
16735 }
16736
16737 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016739 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016740 }
16741
16742 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16743 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016744 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016745 return *this;
16746 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016747 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16748 {
16749 pNext = pNext_;
16750 return *this;
16751 }
16752
16753 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16754 {
16755 flags = flags_;
16756 return *this;
16757 }
16758
16759 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16760 {
16761 rasterizationSamples = rasterizationSamples_;
16762 return *this;
16763 }
16764
16765 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16766 {
16767 sampleShadingEnable = sampleShadingEnable_;
16768 return *this;
16769 }
16770
16771 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16772 {
16773 minSampleShading = minSampleShading_;
16774 return *this;
16775 }
16776
16777 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16778 {
16779 pSampleMask = pSampleMask_;
16780 return *this;
16781 }
16782
16783 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16784 {
16785 alphaToCoverageEnable = alphaToCoverageEnable_;
16786 return *this;
16787 }
16788
16789 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16790 {
16791 alphaToOneEnable = alphaToOneEnable_;
16792 return *this;
16793 }
16794
16795 operator const VkPipelineMultisampleStateCreateInfo&() const
16796 {
16797 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16798 }
16799
16800 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16801 {
16802 return ( sType == rhs.sType )
16803 && ( pNext == rhs.pNext )
16804 && ( flags == rhs.flags )
16805 && ( rasterizationSamples == rhs.rasterizationSamples )
16806 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16807 && ( minSampleShading == rhs.minSampleShading )
16808 && ( pSampleMask == rhs.pSampleMask )
16809 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16810 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16811 }
16812
16813 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16814 {
16815 return !operator==( rhs );
16816 }
16817
16818 private:
16819 StructureType sType;
16820
16821 public:
16822 const void* pNext;
16823 PipelineMultisampleStateCreateFlags flags;
16824 SampleCountFlagBits rasterizationSamples;
16825 Bool32 sampleShadingEnable;
16826 float minSampleShading;
16827 const SampleMask* pSampleMask;
16828 Bool32 alphaToCoverageEnable;
16829 Bool32 alphaToOneEnable;
16830 };
16831 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16832
16833 struct GraphicsPipelineCreateInfo
16834 {
16835 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 )
16836 : sType( StructureType::eGraphicsPipelineCreateInfo )
16837 , pNext( nullptr )
16838 , flags( flags_ )
16839 , stageCount( stageCount_ )
16840 , pStages( pStages_ )
16841 , pVertexInputState( pVertexInputState_ )
16842 , pInputAssemblyState( pInputAssemblyState_ )
16843 , pTessellationState( pTessellationState_ )
16844 , pViewportState( pViewportState_ )
16845 , pRasterizationState( pRasterizationState_ )
16846 , pMultisampleState( pMultisampleState_ )
16847 , pDepthStencilState( pDepthStencilState_ )
16848 , pColorBlendState( pColorBlendState_ )
16849 , pDynamicState( pDynamicState_ )
16850 , layout( layout_ )
16851 , renderPass( renderPass_ )
16852 , subpass( subpass_ )
16853 , basePipelineHandle( basePipelineHandle_ )
16854 , basePipelineIndex( basePipelineIndex_ )
16855 {
16856 }
16857
16858 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016860 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016861 }
16862
16863 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016865 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016866 return *this;
16867 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016868 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16869 {
16870 pNext = pNext_;
16871 return *this;
16872 }
16873
16874 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16875 {
16876 flags = flags_;
16877 return *this;
16878 }
16879
16880 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16881 {
16882 stageCount = stageCount_;
16883 return *this;
16884 }
16885
16886 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16887 {
16888 pStages = pStages_;
16889 return *this;
16890 }
16891
16892 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16893 {
16894 pVertexInputState = pVertexInputState_;
16895 return *this;
16896 }
16897
16898 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16899 {
16900 pInputAssemblyState = pInputAssemblyState_;
16901 return *this;
16902 }
16903
16904 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16905 {
16906 pTessellationState = pTessellationState_;
16907 return *this;
16908 }
16909
16910 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16911 {
16912 pViewportState = pViewportState_;
16913 return *this;
16914 }
16915
16916 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16917 {
16918 pRasterizationState = pRasterizationState_;
16919 return *this;
16920 }
16921
16922 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16923 {
16924 pMultisampleState = pMultisampleState_;
16925 return *this;
16926 }
16927
16928 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16929 {
16930 pDepthStencilState = pDepthStencilState_;
16931 return *this;
16932 }
16933
16934 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16935 {
16936 pColorBlendState = pColorBlendState_;
16937 return *this;
16938 }
16939
16940 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16941 {
16942 pDynamicState = pDynamicState_;
16943 return *this;
16944 }
16945
16946 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16947 {
16948 layout = layout_;
16949 return *this;
16950 }
16951
16952 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16953 {
16954 renderPass = renderPass_;
16955 return *this;
16956 }
16957
16958 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16959 {
16960 subpass = subpass_;
16961 return *this;
16962 }
16963
16964 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16965 {
16966 basePipelineHandle = basePipelineHandle_;
16967 return *this;
16968 }
16969
16970 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16971 {
16972 basePipelineIndex = basePipelineIndex_;
16973 return *this;
16974 }
16975
16976 operator const VkGraphicsPipelineCreateInfo&() const
16977 {
16978 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16979 }
16980
16981 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16982 {
16983 return ( sType == rhs.sType )
16984 && ( pNext == rhs.pNext )
16985 && ( flags == rhs.flags )
16986 && ( stageCount == rhs.stageCount )
16987 && ( pStages == rhs.pStages )
16988 && ( pVertexInputState == rhs.pVertexInputState )
16989 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16990 && ( pTessellationState == rhs.pTessellationState )
16991 && ( pViewportState == rhs.pViewportState )
16992 && ( pRasterizationState == rhs.pRasterizationState )
16993 && ( pMultisampleState == rhs.pMultisampleState )
16994 && ( pDepthStencilState == rhs.pDepthStencilState )
16995 && ( pColorBlendState == rhs.pColorBlendState )
16996 && ( pDynamicState == rhs.pDynamicState )
16997 && ( layout == rhs.layout )
16998 && ( renderPass == rhs.renderPass )
16999 && ( subpass == rhs.subpass )
17000 && ( basePipelineHandle == rhs.basePipelineHandle )
17001 && ( basePipelineIndex == rhs.basePipelineIndex );
17002 }
17003
17004 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
17005 {
17006 return !operator==( rhs );
17007 }
17008
17009 private:
17010 StructureType sType;
17011
17012 public:
17013 const void* pNext;
17014 PipelineCreateFlags flags;
17015 uint32_t stageCount;
17016 const PipelineShaderStageCreateInfo* pStages;
17017 const PipelineVertexInputStateCreateInfo* pVertexInputState;
17018 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
17019 const PipelineTessellationStateCreateInfo* pTessellationState;
17020 const PipelineViewportStateCreateInfo* pViewportState;
17021 const PipelineRasterizationStateCreateInfo* pRasterizationState;
17022 const PipelineMultisampleStateCreateInfo* pMultisampleState;
17023 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
17024 const PipelineColorBlendStateCreateInfo* pColorBlendState;
17025 const PipelineDynamicStateCreateInfo* pDynamicState;
17026 PipelineLayout layout;
17027 RenderPass renderPass;
17028 uint32_t subpass;
17029 Pipeline basePipelineHandle;
17030 int32_t basePipelineIndex;
17031 };
17032 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
17033
17034 struct PhysicalDeviceLimits
17035 {
17036 operator const VkPhysicalDeviceLimits&() const
17037 {
17038 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
17039 }
17040
17041 bool operator==( PhysicalDeviceLimits const& rhs ) const
17042 {
17043 return ( maxImageDimension1D == rhs.maxImageDimension1D )
17044 && ( maxImageDimension2D == rhs.maxImageDimension2D )
17045 && ( maxImageDimension3D == rhs.maxImageDimension3D )
17046 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
17047 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17048 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
17049 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
17050 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
17051 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
17052 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
17053 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
17054 && ( bufferImageGranularity == rhs.bufferImageGranularity )
17055 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
17056 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
17057 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
17058 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
17059 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
17060 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
17061 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
17062 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
17063 && ( maxPerStageResources == rhs.maxPerStageResources )
17064 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
17065 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
17066 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
17067 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
17068 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
17069 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
17070 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
17071 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
17072 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
17073 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
17074 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
17075 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
17076 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
17077 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
17078 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
17079 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
17080 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
17081 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
17082 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
17083 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
17084 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
17085 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
17086 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
17087 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
17088 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
17089 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
17090 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
17091 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
17092 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
17093 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
17094 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
17095 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
17096 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
17097 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
17098 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
17099 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
17100 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
17101 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
17102 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
17103 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
17104 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
17105 && ( maxViewports == rhs.maxViewports )
17106 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
17107 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
17108 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
17109 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
17110 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
17111 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
17112 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
17113 && ( minTexelOffset == rhs.minTexelOffset )
17114 && ( maxTexelOffset == rhs.maxTexelOffset )
17115 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
17116 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
17117 && ( minInterpolationOffset == rhs.minInterpolationOffset )
17118 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
17119 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
17120 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
17121 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
17122 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
17123 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
17124 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
17125 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
17126 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
17127 && ( maxColorAttachments == rhs.maxColorAttachments )
17128 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
17129 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
17130 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
17131 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
17132 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
17133 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
17134 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
17135 && ( timestampPeriod == rhs.timestampPeriod )
17136 && ( maxClipDistances == rhs.maxClipDistances )
17137 && ( maxCullDistances == rhs.maxCullDistances )
17138 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
17139 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
17140 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
17141 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
17142 && ( pointSizeGranularity == rhs.pointSizeGranularity )
17143 && ( lineWidthGranularity == rhs.lineWidthGranularity )
17144 && ( strictLines == rhs.strictLines )
17145 && ( standardSampleLocations == rhs.standardSampleLocations )
17146 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
17147 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
17148 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
17149 }
17150
17151 bool operator!=( PhysicalDeviceLimits const& rhs ) const
17152 {
17153 return !operator==( rhs );
17154 }
17155
17156 uint32_t maxImageDimension1D;
17157 uint32_t maxImageDimension2D;
17158 uint32_t maxImageDimension3D;
17159 uint32_t maxImageDimensionCube;
17160 uint32_t maxImageArrayLayers;
17161 uint32_t maxTexelBufferElements;
17162 uint32_t maxUniformBufferRange;
17163 uint32_t maxStorageBufferRange;
17164 uint32_t maxPushConstantsSize;
17165 uint32_t maxMemoryAllocationCount;
17166 uint32_t maxSamplerAllocationCount;
17167 DeviceSize bufferImageGranularity;
17168 DeviceSize sparseAddressSpaceSize;
17169 uint32_t maxBoundDescriptorSets;
17170 uint32_t maxPerStageDescriptorSamplers;
17171 uint32_t maxPerStageDescriptorUniformBuffers;
17172 uint32_t maxPerStageDescriptorStorageBuffers;
17173 uint32_t maxPerStageDescriptorSampledImages;
17174 uint32_t maxPerStageDescriptorStorageImages;
17175 uint32_t maxPerStageDescriptorInputAttachments;
17176 uint32_t maxPerStageResources;
17177 uint32_t maxDescriptorSetSamplers;
17178 uint32_t maxDescriptorSetUniformBuffers;
17179 uint32_t maxDescriptorSetUniformBuffersDynamic;
17180 uint32_t maxDescriptorSetStorageBuffers;
17181 uint32_t maxDescriptorSetStorageBuffersDynamic;
17182 uint32_t maxDescriptorSetSampledImages;
17183 uint32_t maxDescriptorSetStorageImages;
17184 uint32_t maxDescriptorSetInputAttachments;
17185 uint32_t maxVertexInputAttributes;
17186 uint32_t maxVertexInputBindings;
17187 uint32_t maxVertexInputAttributeOffset;
17188 uint32_t maxVertexInputBindingStride;
17189 uint32_t maxVertexOutputComponents;
17190 uint32_t maxTessellationGenerationLevel;
17191 uint32_t maxTessellationPatchSize;
17192 uint32_t maxTessellationControlPerVertexInputComponents;
17193 uint32_t maxTessellationControlPerVertexOutputComponents;
17194 uint32_t maxTessellationControlPerPatchOutputComponents;
17195 uint32_t maxTessellationControlTotalOutputComponents;
17196 uint32_t maxTessellationEvaluationInputComponents;
17197 uint32_t maxTessellationEvaluationOutputComponents;
17198 uint32_t maxGeometryShaderInvocations;
17199 uint32_t maxGeometryInputComponents;
17200 uint32_t maxGeometryOutputComponents;
17201 uint32_t maxGeometryOutputVertices;
17202 uint32_t maxGeometryTotalOutputComponents;
17203 uint32_t maxFragmentInputComponents;
17204 uint32_t maxFragmentOutputAttachments;
17205 uint32_t maxFragmentDualSrcAttachments;
17206 uint32_t maxFragmentCombinedOutputResources;
17207 uint32_t maxComputeSharedMemorySize;
17208 uint32_t maxComputeWorkGroupCount[3];
17209 uint32_t maxComputeWorkGroupInvocations;
17210 uint32_t maxComputeWorkGroupSize[3];
17211 uint32_t subPixelPrecisionBits;
17212 uint32_t subTexelPrecisionBits;
17213 uint32_t mipmapPrecisionBits;
17214 uint32_t maxDrawIndexedIndexValue;
17215 uint32_t maxDrawIndirectCount;
17216 float maxSamplerLodBias;
17217 float maxSamplerAnisotropy;
17218 uint32_t maxViewports;
17219 uint32_t maxViewportDimensions[2];
17220 float viewportBoundsRange[2];
17221 uint32_t viewportSubPixelBits;
17222 size_t minMemoryMapAlignment;
17223 DeviceSize minTexelBufferOffsetAlignment;
17224 DeviceSize minUniformBufferOffsetAlignment;
17225 DeviceSize minStorageBufferOffsetAlignment;
17226 int32_t minTexelOffset;
17227 uint32_t maxTexelOffset;
17228 int32_t minTexelGatherOffset;
17229 uint32_t maxTexelGatherOffset;
17230 float minInterpolationOffset;
17231 float maxInterpolationOffset;
17232 uint32_t subPixelInterpolationOffsetBits;
17233 uint32_t maxFramebufferWidth;
17234 uint32_t maxFramebufferHeight;
17235 uint32_t maxFramebufferLayers;
17236 SampleCountFlags framebufferColorSampleCounts;
17237 SampleCountFlags framebufferDepthSampleCounts;
17238 SampleCountFlags framebufferStencilSampleCounts;
17239 SampleCountFlags framebufferNoAttachmentsSampleCounts;
17240 uint32_t maxColorAttachments;
17241 SampleCountFlags sampledImageColorSampleCounts;
17242 SampleCountFlags sampledImageIntegerSampleCounts;
17243 SampleCountFlags sampledImageDepthSampleCounts;
17244 SampleCountFlags sampledImageStencilSampleCounts;
17245 SampleCountFlags storageImageSampleCounts;
17246 uint32_t maxSampleMaskWords;
17247 Bool32 timestampComputeAndGraphics;
17248 float timestampPeriod;
17249 uint32_t maxClipDistances;
17250 uint32_t maxCullDistances;
17251 uint32_t maxCombinedClipAndCullDistances;
17252 uint32_t discreteQueuePriorities;
17253 float pointSizeRange[2];
17254 float lineWidthRange[2];
17255 float pointSizeGranularity;
17256 float lineWidthGranularity;
17257 Bool32 strictLines;
17258 Bool32 standardSampleLocations;
17259 DeviceSize optimalBufferCopyOffsetAlignment;
17260 DeviceSize optimalBufferCopyRowPitchAlignment;
17261 DeviceSize nonCoherentAtomSize;
17262 };
17263 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
17264
17265 struct PhysicalDeviceProperties
17266 {
17267 operator const VkPhysicalDeviceProperties&() const
17268 {
17269 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
17270 }
17271
17272 bool operator==( PhysicalDeviceProperties const& rhs ) const
17273 {
17274 return ( apiVersion == rhs.apiVersion )
17275 && ( driverVersion == rhs.driverVersion )
17276 && ( vendorID == rhs.vendorID )
17277 && ( deviceID == rhs.deviceID )
17278 && ( deviceType == rhs.deviceType )
17279 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
17280 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
17281 && ( limits == rhs.limits )
17282 && ( sparseProperties == rhs.sparseProperties );
17283 }
17284
17285 bool operator!=( PhysicalDeviceProperties const& rhs ) const
17286 {
17287 return !operator==( rhs );
17288 }
17289
17290 uint32_t apiVersion;
17291 uint32_t driverVersion;
17292 uint32_t vendorID;
17293 uint32_t deviceID;
17294 PhysicalDeviceType deviceType;
17295 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
17296 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
17297 PhysicalDeviceLimits limits;
17298 PhysicalDeviceSparseProperties sparseProperties;
17299 };
17300 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
17301
Mark Young39389872017-01-19 21:10:49 -070017302 struct PhysicalDeviceProperties2KHR
17303 {
17304 operator const VkPhysicalDeviceProperties2KHR&() const
17305 {
17306 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
17307 }
17308
17309 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
17310 {
17311 return ( sType == rhs.sType )
17312 && ( pNext == rhs.pNext )
17313 && ( properties == rhs.properties );
17314 }
17315
17316 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
17317 {
17318 return !operator==( rhs );
17319 }
17320
17321 private:
17322 StructureType sType;
17323
17324 public:
17325 void* pNext;
17326 PhysicalDeviceProperties properties;
17327 };
17328 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
17329
17330 struct ImageFormatProperties2KHR
17331 {
17332 operator const VkImageFormatProperties2KHR&() const
17333 {
17334 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
17335 }
17336
17337 bool operator==( ImageFormatProperties2KHR const& rhs ) const
17338 {
17339 return ( sType == rhs.sType )
17340 && ( pNext == rhs.pNext )
17341 && ( imageFormatProperties == rhs.imageFormatProperties );
17342 }
17343
17344 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
17345 {
17346 return !operator==( rhs );
17347 }
17348
17349 private:
17350 StructureType sType;
17351
17352 public:
17353 void* pNext;
17354 ImageFormatProperties imageFormatProperties;
17355 };
17356 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17357
17358 struct PhysicalDeviceSparseImageFormatInfo2KHR
17359 {
17360 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
17361 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
17362 , pNext( nullptr )
17363 , format( format_ )
17364 , type( type_ )
17365 , samples( samples_ )
17366 , usage( usage_ )
17367 , tiling( tiling_ )
17368 {
17369 }
17370
17371 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17372 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017373 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017374 }
17375
17376 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17377 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017378 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017379 return *this;
17380 }
Mark Young39389872017-01-19 21:10:49 -070017381 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
17382 {
17383 pNext = pNext_;
17384 return *this;
17385 }
17386
17387 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
17388 {
17389 format = format_;
17390 return *this;
17391 }
17392
17393 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
17394 {
17395 type = type_;
17396 return *this;
17397 }
17398
17399 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17400 {
17401 samples = samples_;
17402 return *this;
17403 }
17404
17405 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17406 {
17407 usage = usage_;
17408 return *this;
17409 }
17410
17411 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17412 {
17413 tiling = tiling_;
17414 return *this;
17415 }
17416
17417 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17418 {
17419 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17420 }
17421
17422 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17423 {
17424 return ( sType == rhs.sType )
17425 && ( pNext == rhs.pNext )
17426 && ( format == rhs.format )
17427 && ( type == rhs.type )
17428 && ( samples == rhs.samples )
17429 && ( usage == rhs.usage )
17430 && ( tiling == rhs.tiling );
17431 }
17432
17433 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17434 {
17435 return !operator==( rhs );
17436 }
17437
17438 private:
17439 StructureType sType;
17440
17441 public:
17442 const void* pNext;
17443 Format format;
17444 ImageType type;
17445 SampleCountFlagBits samples;
17446 ImageUsageFlags usage;
17447 ImageTiling tiling;
17448 };
17449 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
17450
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017451 enum class AttachmentDescriptionFlagBits
17452 {
17453 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
17454 };
17455
17456 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
17457
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017458 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017459 {
17460 return AttachmentDescriptionFlags( bit0 ) | bit1;
17461 }
17462
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017463 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
17464 {
17465 return ~( AttachmentDescriptionFlags( bits ) );
17466 }
17467
17468 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
17469 {
17470 enum
17471 {
17472 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
17473 };
17474 };
17475
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017476 struct AttachmentDescription
17477 {
17478 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 )
17479 : flags( flags_ )
17480 , format( format_ )
17481 , samples( samples_ )
17482 , loadOp( loadOp_ )
17483 , storeOp( storeOp_ )
17484 , stencilLoadOp( stencilLoadOp_ )
17485 , stencilStoreOp( stencilStoreOp_ )
17486 , initialLayout( initialLayout_ )
17487 , finalLayout( finalLayout_ )
17488 {
17489 }
17490
17491 AttachmentDescription( VkAttachmentDescription const & rhs )
17492 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017493 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017494 }
17495
17496 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
17497 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017498 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017499 return *this;
17500 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017501 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
17502 {
17503 flags = flags_;
17504 return *this;
17505 }
17506
17507 AttachmentDescription& setFormat( Format format_ )
17508 {
17509 format = format_;
17510 return *this;
17511 }
17512
17513 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
17514 {
17515 samples = samples_;
17516 return *this;
17517 }
17518
17519 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
17520 {
17521 loadOp = loadOp_;
17522 return *this;
17523 }
17524
17525 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
17526 {
17527 storeOp = storeOp_;
17528 return *this;
17529 }
17530
17531 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
17532 {
17533 stencilLoadOp = stencilLoadOp_;
17534 return *this;
17535 }
17536
17537 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
17538 {
17539 stencilStoreOp = stencilStoreOp_;
17540 return *this;
17541 }
17542
17543 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
17544 {
17545 initialLayout = initialLayout_;
17546 return *this;
17547 }
17548
17549 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
17550 {
17551 finalLayout = finalLayout_;
17552 return *this;
17553 }
17554
17555 operator const VkAttachmentDescription&() const
17556 {
17557 return *reinterpret_cast<const VkAttachmentDescription*>(this);
17558 }
17559
17560 bool operator==( AttachmentDescription const& rhs ) const
17561 {
17562 return ( flags == rhs.flags )
17563 && ( format == rhs.format )
17564 && ( samples == rhs.samples )
17565 && ( loadOp == rhs.loadOp )
17566 && ( storeOp == rhs.storeOp )
17567 && ( stencilLoadOp == rhs.stencilLoadOp )
17568 && ( stencilStoreOp == rhs.stencilStoreOp )
17569 && ( initialLayout == rhs.initialLayout )
17570 && ( finalLayout == rhs.finalLayout );
17571 }
17572
17573 bool operator!=( AttachmentDescription const& rhs ) const
17574 {
17575 return !operator==( rhs );
17576 }
17577
17578 AttachmentDescriptionFlags flags;
17579 Format format;
17580 SampleCountFlagBits samples;
17581 AttachmentLoadOp loadOp;
17582 AttachmentStoreOp storeOp;
17583 AttachmentLoadOp stencilLoadOp;
17584 AttachmentStoreOp stencilStoreOp;
17585 ImageLayout initialLayout;
17586 ImageLayout finalLayout;
17587 };
17588 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17589
17590 enum class StencilFaceFlagBits
17591 {
17592 eFront = VK_STENCIL_FACE_FRONT_BIT,
17593 eBack = VK_STENCIL_FACE_BACK_BIT,
17594 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17595 };
17596
17597 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017599 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017600 {
17601 return StencilFaceFlags( bit0 ) | bit1;
17602 }
17603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017604 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17605 {
17606 return ~( StencilFaceFlags( bits ) );
17607 }
17608
17609 template <> struct FlagTraits<StencilFaceFlagBits>
17610 {
17611 enum
17612 {
17613 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17614 };
17615 };
17616
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017617 enum class DescriptorPoolCreateFlagBits
17618 {
17619 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17620 };
17621
17622 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017624 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017625 {
17626 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17627 }
17628
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017629 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17630 {
17631 return ~( DescriptorPoolCreateFlags( bits ) );
17632 }
17633
17634 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17635 {
17636 enum
17637 {
17638 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17639 };
17640 };
17641
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017642 struct DescriptorPoolCreateInfo
17643 {
17644 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17645 : sType( StructureType::eDescriptorPoolCreateInfo )
17646 , pNext( nullptr )
17647 , flags( flags_ )
17648 , maxSets( maxSets_ )
17649 , poolSizeCount( poolSizeCount_ )
17650 , pPoolSizes( pPoolSizes_ )
17651 {
17652 }
17653
17654 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17655 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017656 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017657 }
17658
17659 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017661 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017662 return *this;
17663 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017664 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17665 {
17666 pNext = pNext_;
17667 return *this;
17668 }
17669
17670 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17671 {
17672 flags = flags_;
17673 return *this;
17674 }
17675
17676 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17677 {
17678 maxSets = maxSets_;
17679 return *this;
17680 }
17681
17682 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17683 {
17684 poolSizeCount = poolSizeCount_;
17685 return *this;
17686 }
17687
17688 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17689 {
17690 pPoolSizes = pPoolSizes_;
17691 return *this;
17692 }
17693
17694 operator const VkDescriptorPoolCreateInfo&() const
17695 {
17696 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17697 }
17698
17699 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17700 {
17701 return ( sType == rhs.sType )
17702 && ( pNext == rhs.pNext )
17703 && ( flags == rhs.flags )
17704 && ( maxSets == rhs.maxSets )
17705 && ( poolSizeCount == rhs.poolSizeCount )
17706 && ( pPoolSizes == rhs.pPoolSizes );
17707 }
17708
17709 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17710 {
17711 return !operator==( rhs );
17712 }
17713
17714 private:
17715 StructureType sType;
17716
17717 public:
17718 const void* pNext;
17719 DescriptorPoolCreateFlags flags;
17720 uint32_t maxSets;
17721 uint32_t poolSizeCount;
17722 const DescriptorPoolSize* pPoolSizes;
17723 };
17724 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17725
17726 enum class DependencyFlagBits
17727 {
Mark Young0f183a82017-02-28 09:58:04 -070017728 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17729 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17730 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017731 };
17732
17733 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17734
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017735 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017736 {
17737 return DependencyFlags( bit0 ) | bit1;
17738 }
17739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017740 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17741 {
17742 return ~( DependencyFlags( bits ) );
17743 }
17744
17745 template <> struct FlagTraits<DependencyFlagBits>
17746 {
17747 enum
17748 {
Mark Young0f183a82017-02-28 09:58:04 -070017749 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017750 };
17751 };
17752
17753 struct SubpassDependency
17754 {
17755 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17756 : srcSubpass( srcSubpass_ )
17757 , dstSubpass( dstSubpass_ )
17758 , srcStageMask( srcStageMask_ )
17759 , dstStageMask( dstStageMask_ )
17760 , srcAccessMask( srcAccessMask_ )
17761 , dstAccessMask( dstAccessMask_ )
17762 , dependencyFlags( dependencyFlags_ )
17763 {
17764 }
17765
17766 SubpassDependency( VkSubpassDependency const & rhs )
17767 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017768 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017769 }
17770
17771 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17772 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017773 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017774 return *this;
17775 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017776 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17777 {
17778 srcSubpass = srcSubpass_;
17779 return *this;
17780 }
17781
17782 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17783 {
17784 dstSubpass = dstSubpass_;
17785 return *this;
17786 }
17787
17788 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17789 {
17790 srcStageMask = srcStageMask_;
17791 return *this;
17792 }
17793
17794 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17795 {
17796 dstStageMask = dstStageMask_;
17797 return *this;
17798 }
17799
17800 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17801 {
17802 srcAccessMask = srcAccessMask_;
17803 return *this;
17804 }
17805
17806 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17807 {
17808 dstAccessMask = dstAccessMask_;
17809 return *this;
17810 }
17811
17812 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17813 {
17814 dependencyFlags = dependencyFlags_;
17815 return *this;
17816 }
17817
17818 operator const VkSubpassDependency&() const
17819 {
17820 return *reinterpret_cast<const VkSubpassDependency*>(this);
17821 }
17822
17823 bool operator==( SubpassDependency const& rhs ) const
17824 {
17825 return ( srcSubpass == rhs.srcSubpass )
17826 && ( dstSubpass == rhs.dstSubpass )
17827 && ( srcStageMask == rhs.srcStageMask )
17828 && ( dstStageMask == rhs.dstStageMask )
17829 && ( srcAccessMask == rhs.srcAccessMask )
17830 && ( dstAccessMask == rhs.dstAccessMask )
17831 && ( dependencyFlags == rhs.dependencyFlags );
17832 }
17833
17834 bool operator!=( SubpassDependency const& rhs ) const
17835 {
17836 return !operator==( rhs );
17837 }
17838
17839 uint32_t srcSubpass;
17840 uint32_t dstSubpass;
17841 PipelineStageFlags srcStageMask;
17842 PipelineStageFlags dstStageMask;
17843 AccessFlags srcAccessMask;
17844 AccessFlags dstAccessMask;
17845 DependencyFlags dependencyFlags;
17846 };
17847 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17848
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017849 enum class PresentModeKHR
17850 {
17851 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17852 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17853 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060017854 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
17855 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
17856 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017857 };
17858
17859 enum class ColorSpaceKHR
17860 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017861 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17862 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17863 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17864 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17865 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17866 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17867 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17868 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17869 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17870 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17871 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17872 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17873 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17874 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017875 };
17876
17877 struct SurfaceFormatKHR
17878 {
17879 operator const VkSurfaceFormatKHR&() const
17880 {
17881 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17882 }
17883
17884 bool operator==( SurfaceFormatKHR const& rhs ) const
17885 {
17886 return ( format == rhs.format )
17887 && ( colorSpace == rhs.colorSpace );
17888 }
17889
17890 bool operator!=( SurfaceFormatKHR const& rhs ) const
17891 {
17892 return !operator==( rhs );
17893 }
17894
17895 Format format;
17896 ColorSpaceKHR colorSpace;
17897 };
17898 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17899
Mark Lobodzinski54385432017-05-15 10:27:52 -060017900 struct SurfaceFormat2KHR
17901 {
17902 operator const VkSurfaceFormat2KHR&() const
17903 {
17904 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
17905 }
17906
17907 bool operator==( SurfaceFormat2KHR const& rhs ) const
17908 {
17909 return ( sType == rhs.sType )
17910 && ( pNext == rhs.pNext )
17911 && ( surfaceFormat == rhs.surfaceFormat );
17912 }
17913
17914 bool operator!=( SurfaceFormat2KHR const& rhs ) const
17915 {
17916 return !operator==( rhs );
17917 }
17918
17919 private:
17920 StructureType sType;
17921
17922 public:
17923 void* pNext;
17924 SurfaceFormatKHR surfaceFormat;
17925 };
17926 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
17927
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017928 enum class DisplayPlaneAlphaFlagBitsKHR
17929 {
17930 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17931 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17932 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17933 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17934 };
17935
17936 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17937
17938 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17939 {
17940 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17941 }
17942
17943 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17944 {
17945 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17946 }
17947
17948 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17949 {
17950 enum
17951 {
17952 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17953 };
17954 };
17955
17956 struct DisplayPlaneCapabilitiesKHR
17957 {
17958 operator const VkDisplayPlaneCapabilitiesKHR&() const
17959 {
17960 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17961 }
17962
17963 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17964 {
17965 return ( supportedAlpha == rhs.supportedAlpha )
17966 && ( minSrcPosition == rhs.minSrcPosition )
17967 && ( maxSrcPosition == rhs.maxSrcPosition )
17968 && ( minSrcExtent == rhs.minSrcExtent )
17969 && ( maxSrcExtent == rhs.maxSrcExtent )
17970 && ( minDstPosition == rhs.minDstPosition )
17971 && ( maxDstPosition == rhs.maxDstPosition )
17972 && ( minDstExtent == rhs.minDstExtent )
17973 && ( maxDstExtent == rhs.maxDstExtent );
17974 }
17975
17976 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17977 {
17978 return !operator==( rhs );
17979 }
17980
17981 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17982 Offset2D minSrcPosition;
17983 Offset2D maxSrcPosition;
17984 Extent2D minSrcExtent;
17985 Extent2D maxSrcExtent;
17986 Offset2D minDstPosition;
17987 Offset2D maxDstPosition;
17988 Extent2D minDstExtent;
17989 Extent2D maxDstExtent;
17990 };
17991 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17992
17993 enum class CompositeAlphaFlagBitsKHR
17994 {
17995 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17996 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17997 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17998 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17999 };
18000
18001 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
18002
18003 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
18004 {
18005 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
18006 }
18007
18008 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
18009 {
18010 return ~( CompositeAlphaFlagsKHR( bits ) );
18011 }
18012
18013 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
18014 {
18015 enum
18016 {
18017 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
18018 };
18019 };
18020
18021 enum class SurfaceTransformFlagBitsKHR
18022 {
18023 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
18024 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
18025 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
18026 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
18027 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
18028 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
18029 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
18030 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
18031 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
18032 };
18033
18034 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
18035
18036 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
18037 {
18038 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
18039 }
18040
18041 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
18042 {
18043 return ~( SurfaceTransformFlagsKHR( bits ) );
18044 }
18045
18046 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
18047 {
18048 enum
18049 {
18050 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)
18051 };
18052 };
18053
18054 struct DisplayPropertiesKHR
18055 {
18056 operator const VkDisplayPropertiesKHR&() const
18057 {
18058 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
18059 }
18060
18061 bool operator==( DisplayPropertiesKHR const& rhs ) const
18062 {
18063 return ( display == rhs.display )
18064 && ( displayName == rhs.displayName )
18065 && ( physicalDimensions == rhs.physicalDimensions )
18066 && ( physicalResolution == rhs.physicalResolution )
18067 && ( supportedTransforms == rhs.supportedTransforms )
18068 && ( planeReorderPossible == rhs.planeReorderPossible )
18069 && ( persistentContent == rhs.persistentContent );
18070 }
18071
18072 bool operator!=( DisplayPropertiesKHR const& rhs ) const
18073 {
18074 return !operator==( rhs );
18075 }
18076
18077 DisplayKHR display;
18078 const char* displayName;
18079 Extent2D physicalDimensions;
18080 Extent2D physicalResolution;
18081 SurfaceTransformFlagsKHR supportedTransforms;
18082 Bool32 planeReorderPossible;
18083 Bool32 persistentContent;
18084 };
18085 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
18086
18087 struct DisplaySurfaceCreateInfoKHR
18088 {
18089 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() )
18090 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
18091 , pNext( nullptr )
18092 , flags( flags_ )
18093 , displayMode( displayMode_ )
18094 , planeIndex( planeIndex_ )
18095 , planeStackIndex( planeStackIndex_ )
18096 , transform( transform_ )
18097 , globalAlpha( globalAlpha_ )
18098 , alphaMode( alphaMode_ )
18099 , imageExtent( imageExtent_ )
18100 {
18101 }
18102
18103 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
18104 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018105 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018106 }
18107
18108 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
18109 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018110 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018111 return *this;
18112 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018113 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
18114 {
18115 pNext = pNext_;
18116 return *this;
18117 }
18118
18119 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
18120 {
18121 flags = flags_;
18122 return *this;
18123 }
18124
18125 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
18126 {
18127 displayMode = displayMode_;
18128 return *this;
18129 }
18130
18131 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
18132 {
18133 planeIndex = planeIndex_;
18134 return *this;
18135 }
18136
18137 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
18138 {
18139 planeStackIndex = planeStackIndex_;
18140 return *this;
18141 }
18142
18143 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
18144 {
18145 transform = transform_;
18146 return *this;
18147 }
18148
18149 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
18150 {
18151 globalAlpha = globalAlpha_;
18152 return *this;
18153 }
18154
18155 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
18156 {
18157 alphaMode = alphaMode_;
18158 return *this;
18159 }
18160
18161 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
18162 {
18163 imageExtent = imageExtent_;
18164 return *this;
18165 }
18166
18167 operator const VkDisplaySurfaceCreateInfoKHR&() const
18168 {
18169 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
18170 }
18171
18172 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
18173 {
18174 return ( sType == rhs.sType )
18175 && ( pNext == rhs.pNext )
18176 && ( flags == rhs.flags )
18177 && ( displayMode == rhs.displayMode )
18178 && ( planeIndex == rhs.planeIndex )
18179 && ( planeStackIndex == rhs.planeStackIndex )
18180 && ( transform == rhs.transform )
18181 && ( globalAlpha == rhs.globalAlpha )
18182 && ( alphaMode == rhs.alphaMode )
18183 && ( imageExtent == rhs.imageExtent );
18184 }
18185
18186 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
18187 {
18188 return !operator==( rhs );
18189 }
18190
18191 private:
18192 StructureType sType;
18193
18194 public:
18195 const void* pNext;
18196 DisplaySurfaceCreateFlagsKHR flags;
18197 DisplayModeKHR displayMode;
18198 uint32_t planeIndex;
18199 uint32_t planeStackIndex;
18200 SurfaceTransformFlagBitsKHR transform;
18201 float globalAlpha;
18202 DisplayPlaneAlphaFlagBitsKHR alphaMode;
18203 Extent2D imageExtent;
18204 };
18205 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
18206
18207 struct SurfaceCapabilitiesKHR
18208 {
18209 operator const VkSurfaceCapabilitiesKHR&() const
18210 {
18211 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
18212 }
18213
18214 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
18215 {
18216 return ( minImageCount == rhs.minImageCount )
18217 && ( maxImageCount == rhs.maxImageCount )
18218 && ( currentExtent == rhs.currentExtent )
18219 && ( minImageExtent == rhs.minImageExtent )
18220 && ( maxImageExtent == rhs.maxImageExtent )
18221 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18222 && ( supportedTransforms == rhs.supportedTransforms )
18223 && ( currentTransform == rhs.currentTransform )
18224 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
18225 && ( supportedUsageFlags == rhs.supportedUsageFlags );
18226 }
18227
18228 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
18229 {
18230 return !operator==( rhs );
18231 }
18232
18233 uint32_t minImageCount;
18234 uint32_t maxImageCount;
18235 Extent2D currentExtent;
18236 Extent2D minImageExtent;
18237 Extent2D maxImageExtent;
18238 uint32_t maxImageArrayLayers;
18239 SurfaceTransformFlagsKHR supportedTransforms;
18240 SurfaceTransformFlagBitsKHR currentTransform;
18241 CompositeAlphaFlagsKHR supportedCompositeAlpha;
18242 ImageUsageFlags supportedUsageFlags;
18243 };
18244 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
18245
Mark Lobodzinski54385432017-05-15 10:27:52 -060018246 struct SurfaceCapabilities2KHR
18247 {
18248 operator const VkSurfaceCapabilities2KHR&() const
18249 {
18250 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
18251 }
18252
18253 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
18254 {
18255 return ( sType == rhs.sType )
18256 && ( pNext == rhs.pNext )
18257 && ( surfaceCapabilities == rhs.surfaceCapabilities );
18258 }
18259
18260 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
18261 {
18262 return !operator==( rhs );
18263 }
18264
18265 private:
18266 StructureType sType;
18267
18268 public:
18269 void* pNext;
18270 SurfaceCapabilitiesKHR surfaceCapabilities;
18271 };
18272 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
18273
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018274 enum class DebugReportFlagBitsEXT
18275 {
18276 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
18277 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
18278 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
18279 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
18280 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
18281 };
18282
18283 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
18284
18285 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
18286 {
18287 return DebugReportFlagsEXT( bit0 ) | bit1;
18288 }
18289
18290 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
18291 {
18292 return ~( DebugReportFlagsEXT( bits ) );
18293 }
18294
18295 template <> struct FlagTraits<DebugReportFlagBitsEXT>
18296 {
18297 enum
18298 {
18299 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
18300 };
18301 };
18302
18303 struct DebugReportCallbackCreateInfoEXT
18304 {
18305 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
18306 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
18307 , pNext( nullptr )
18308 , flags( flags_ )
18309 , pfnCallback( pfnCallback_ )
18310 , pUserData( pUserData_ )
18311 {
18312 }
18313
18314 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
18315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018316 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018317 }
18318
18319 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
18320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018321 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018322 return *this;
18323 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018324 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
18325 {
18326 pNext = pNext_;
18327 return *this;
18328 }
18329
18330 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
18331 {
18332 flags = flags_;
18333 return *this;
18334 }
18335
18336 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
18337 {
18338 pfnCallback = pfnCallback_;
18339 return *this;
18340 }
18341
18342 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
18343 {
18344 pUserData = pUserData_;
18345 return *this;
18346 }
18347
18348 operator const VkDebugReportCallbackCreateInfoEXT&() const
18349 {
18350 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
18351 }
18352
18353 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
18354 {
18355 return ( sType == rhs.sType )
18356 && ( pNext == rhs.pNext )
18357 && ( flags == rhs.flags )
18358 && ( pfnCallback == rhs.pfnCallback )
18359 && ( pUserData == rhs.pUserData );
18360 }
18361
18362 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
18363 {
18364 return !operator==( rhs );
18365 }
18366
18367 private:
18368 StructureType sType;
18369
18370 public:
18371 const void* pNext;
18372 DebugReportFlagsEXT flags;
18373 PFN_vkDebugReportCallbackEXT pfnCallback;
18374 void* pUserData;
18375 };
18376 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
18377
18378 enum class DebugReportObjectTypeEXT
18379 {
18380 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
18381 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
18382 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
18383 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
18384 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
18385 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
18386 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
18387 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
18388 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
18389 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
18390 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
18391 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
18392 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
18393 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
18394 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
18395 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
18396 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
18397 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
18398 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
18399 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
18400 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
18401 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
18402 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
18403 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
18404 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
18405 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
18406 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
18407 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018408 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018409 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
18410 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
18411 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060018412 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018413 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018414 };
18415
18416 struct DebugMarkerObjectNameInfoEXT
18417 {
18418 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
18419 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
18420 , pNext( nullptr )
18421 , objectType( objectType_ )
18422 , object( object_ )
18423 , pObjectName( pObjectName_ )
18424 {
18425 }
18426
18427 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
18428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018429 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018430 }
18431
18432 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
18433 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018434 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018435 return *this;
18436 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018437 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
18438 {
18439 pNext = pNext_;
18440 return *this;
18441 }
18442
18443 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18444 {
18445 objectType = objectType_;
18446 return *this;
18447 }
18448
18449 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
18450 {
18451 object = object_;
18452 return *this;
18453 }
18454
18455 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
18456 {
18457 pObjectName = pObjectName_;
18458 return *this;
18459 }
18460
18461 operator const VkDebugMarkerObjectNameInfoEXT&() const
18462 {
18463 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
18464 }
18465
18466 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
18467 {
18468 return ( sType == rhs.sType )
18469 && ( pNext == rhs.pNext )
18470 && ( objectType == rhs.objectType )
18471 && ( object == rhs.object )
18472 && ( pObjectName == rhs.pObjectName );
18473 }
18474
18475 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
18476 {
18477 return !operator==( rhs );
18478 }
18479
18480 private:
18481 StructureType sType;
18482
18483 public:
18484 const void* pNext;
18485 DebugReportObjectTypeEXT objectType;
18486 uint64_t object;
18487 const char* pObjectName;
18488 };
18489 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
18490
18491 struct DebugMarkerObjectTagInfoEXT
18492 {
18493 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
18494 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
18495 , pNext( nullptr )
18496 , objectType( objectType_ )
18497 , object( object_ )
18498 , tagName( tagName_ )
18499 , tagSize( tagSize_ )
18500 , pTag( pTag_ )
18501 {
18502 }
18503
18504 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
18505 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018506 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018507 }
18508
18509 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
18510 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018511 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018512 return *this;
18513 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018514 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
18515 {
18516 pNext = pNext_;
18517 return *this;
18518 }
18519
18520 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18521 {
18522 objectType = objectType_;
18523 return *this;
18524 }
18525
18526 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
18527 {
18528 object = object_;
18529 return *this;
18530 }
18531
18532 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
18533 {
18534 tagName = tagName_;
18535 return *this;
18536 }
18537
18538 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
18539 {
18540 tagSize = tagSize_;
18541 return *this;
18542 }
18543
18544 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
18545 {
18546 pTag = pTag_;
18547 return *this;
18548 }
18549
18550 operator const VkDebugMarkerObjectTagInfoEXT&() const
18551 {
18552 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
18553 }
18554
18555 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
18556 {
18557 return ( sType == rhs.sType )
18558 && ( pNext == rhs.pNext )
18559 && ( objectType == rhs.objectType )
18560 && ( object == rhs.object )
18561 && ( tagName == rhs.tagName )
18562 && ( tagSize == rhs.tagSize )
18563 && ( pTag == rhs.pTag );
18564 }
18565
18566 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
18567 {
18568 return !operator==( rhs );
18569 }
18570
18571 private:
18572 StructureType sType;
18573
18574 public:
18575 const void* pNext;
18576 DebugReportObjectTypeEXT objectType;
18577 uint64_t object;
18578 uint64_t tagName;
18579 size_t tagSize;
18580 const void* pTag;
18581 };
18582 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
18583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018584 enum class RasterizationOrderAMD
18585 {
18586 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
18587 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
18588 };
18589
18590 struct PipelineRasterizationStateRasterizationOrderAMD
18591 {
18592 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
18593 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
18594 , pNext( nullptr )
18595 , rasterizationOrder( rasterizationOrder_ )
18596 {
18597 }
18598
18599 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018601 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018602 }
18603
18604 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18605 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018606 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018607 return *this;
18608 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018609 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
18610 {
18611 pNext = pNext_;
18612 return *this;
18613 }
18614
18615 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
18616 {
18617 rasterizationOrder = rasterizationOrder_;
18618 return *this;
18619 }
18620
18621 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18622 {
18623 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18624 }
18625
18626 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18627 {
18628 return ( sType == rhs.sType )
18629 && ( pNext == rhs.pNext )
18630 && ( rasterizationOrder == rhs.rasterizationOrder );
18631 }
18632
18633 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18634 {
18635 return !operator==( rhs );
18636 }
18637
18638 private:
18639 StructureType sType;
18640
18641 public:
18642 const void* pNext;
18643 RasterizationOrderAMD rasterizationOrder;
18644 };
18645 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18646
18647 enum class ExternalMemoryHandleTypeFlagBitsNV
18648 {
18649 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18650 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18651 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18652 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18653 };
18654
18655 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18656
18657 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18658 {
18659 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18660 }
18661
18662 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18663 {
18664 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18665 }
18666
18667 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18668 {
18669 enum
18670 {
18671 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18672 };
18673 };
18674
18675 struct ExternalMemoryImageCreateInfoNV
18676 {
18677 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18678 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18679 , pNext( nullptr )
18680 , handleTypes( handleTypes_ )
18681 {
18682 }
18683
18684 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018686 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018687 }
18688
18689 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18690 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018691 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018692 return *this;
18693 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018694 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18695 {
18696 pNext = pNext_;
18697 return *this;
18698 }
18699
18700 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18701 {
18702 handleTypes = handleTypes_;
18703 return *this;
18704 }
18705
18706 operator const VkExternalMemoryImageCreateInfoNV&() const
18707 {
18708 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18709 }
18710
18711 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18712 {
18713 return ( sType == rhs.sType )
18714 && ( pNext == rhs.pNext )
18715 && ( handleTypes == rhs.handleTypes );
18716 }
18717
18718 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18719 {
18720 return !operator==( rhs );
18721 }
18722
18723 private:
18724 StructureType sType;
18725
18726 public:
18727 const void* pNext;
18728 ExternalMemoryHandleTypeFlagsNV handleTypes;
18729 };
18730 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18731
18732 struct ExportMemoryAllocateInfoNV
18733 {
18734 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18735 : sType( StructureType::eExportMemoryAllocateInfoNV )
18736 , pNext( nullptr )
18737 , handleTypes( handleTypes_ )
18738 {
18739 }
18740
18741 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18742 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018743 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018744 }
18745
18746 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18747 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018748 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018749 return *this;
18750 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018751 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18752 {
18753 pNext = pNext_;
18754 return *this;
18755 }
18756
18757 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18758 {
18759 handleTypes = handleTypes_;
18760 return *this;
18761 }
18762
18763 operator const VkExportMemoryAllocateInfoNV&() const
18764 {
18765 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18766 }
18767
18768 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18769 {
18770 return ( sType == rhs.sType )
18771 && ( pNext == rhs.pNext )
18772 && ( handleTypes == rhs.handleTypes );
18773 }
18774
18775 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18776 {
18777 return !operator==( rhs );
18778 }
18779
18780 private:
18781 StructureType sType;
18782
18783 public:
18784 const void* pNext;
18785 ExternalMemoryHandleTypeFlagsNV handleTypes;
18786 };
18787 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18788
18789#ifdef VK_USE_PLATFORM_WIN32_KHR
18790 struct ImportMemoryWin32HandleInfoNV
18791 {
18792 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18793 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18794 , pNext( nullptr )
18795 , handleType( handleType_ )
18796 , handle( handle_ )
18797 {
18798 }
18799
18800 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018802 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018803 }
18804
18805 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18806 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018807 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018808 return *this;
18809 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018810 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18811 {
18812 pNext = pNext_;
18813 return *this;
18814 }
18815
18816 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18817 {
18818 handleType = handleType_;
18819 return *this;
18820 }
18821
18822 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18823 {
18824 handle = handle_;
18825 return *this;
18826 }
18827
18828 operator const VkImportMemoryWin32HandleInfoNV&() const
18829 {
18830 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18831 }
18832
18833 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18834 {
18835 return ( sType == rhs.sType )
18836 && ( pNext == rhs.pNext )
18837 && ( handleType == rhs.handleType )
18838 && ( handle == rhs.handle );
18839 }
18840
18841 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18842 {
18843 return !operator==( rhs );
18844 }
18845
18846 private:
18847 StructureType sType;
18848
18849 public:
18850 const void* pNext;
18851 ExternalMemoryHandleTypeFlagsNV handleType;
18852 HANDLE handle;
18853 };
18854 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18855#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18856
18857 enum class ExternalMemoryFeatureFlagBitsNV
18858 {
18859 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18860 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18861 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18862 };
18863
18864 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18865
18866 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18867 {
18868 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18869 }
18870
18871 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18872 {
18873 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18874 }
18875
18876 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18877 {
18878 enum
18879 {
18880 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18881 };
18882 };
18883
18884 struct ExternalImageFormatPropertiesNV
18885 {
18886 operator const VkExternalImageFormatPropertiesNV&() const
18887 {
18888 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18889 }
18890
18891 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18892 {
18893 return ( imageFormatProperties == rhs.imageFormatProperties )
18894 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18895 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18896 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18897 }
18898
18899 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18900 {
18901 return !operator==( rhs );
18902 }
18903
18904 ImageFormatProperties imageFormatProperties;
18905 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18906 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18907 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18908 };
18909 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18910
18911 enum class ValidationCheckEXT
18912 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018913 eAll = VK_VALIDATION_CHECK_ALL_EXT,
18914 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018915 };
18916
18917 struct ValidationFlagsEXT
18918 {
18919 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18920 : sType( StructureType::eValidationFlagsEXT )
18921 , pNext( nullptr )
18922 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18923 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18924 {
18925 }
18926
18927 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18928 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018929 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018930 }
18931
18932 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18933 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018934 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018935 return *this;
18936 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018937 ValidationFlagsEXT& setPNext( const void* pNext_ )
18938 {
18939 pNext = pNext_;
18940 return *this;
18941 }
18942
18943 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18944 {
18945 disabledValidationCheckCount = disabledValidationCheckCount_;
18946 return *this;
18947 }
18948
18949 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18950 {
18951 pDisabledValidationChecks = pDisabledValidationChecks_;
18952 return *this;
18953 }
18954
18955 operator const VkValidationFlagsEXT&() const
18956 {
18957 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18958 }
18959
18960 bool operator==( ValidationFlagsEXT const& rhs ) const
18961 {
18962 return ( sType == rhs.sType )
18963 && ( pNext == rhs.pNext )
18964 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18965 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18966 }
18967
18968 bool operator!=( ValidationFlagsEXT const& rhs ) const
18969 {
18970 return !operator==( rhs );
18971 }
18972
18973 private:
18974 StructureType sType;
18975
18976 public:
18977 const void* pNext;
18978 uint32_t disabledValidationCheckCount;
18979 ValidationCheckEXT* pDisabledValidationChecks;
18980 };
18981 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18982
18983 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18984 {
18985 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18986 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18987 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18988 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18989 };
18990
18991 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18992
18993 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18994 {
18995 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18996 }
18997
18998 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18999 {
19000 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
19001 }
19002
19003 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
19004 {
19005 enum
19006 {
19007 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
19008 };
19009 };
19010
19011 enum class ObjectEntryUsageFlagBitsNVX
19012 {
19013 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
19014 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
19015 };
19016
19017 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
19018
19019 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
19020 {
19021 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
19022 }
19023
19024 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
19025 {
19026 return ~( ObjectEntryUsageFlagsNVX( bits ) );
19027 }
19028
19029 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
19030 {
19031 enum
19032 {
19033 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
19034 };
19035 };
19036
19037 enum class IndirectCommandsTokenTypeNVX
19038 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019039 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
19040 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
19041 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
19042 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
19043 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
19044 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
19045 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
19046 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019047 };
19048
19049 struct IndirectCommandsTokenNVX
19050 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019051 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019052 : tokenType( tokenType_ )
19053 , buffer( buffer_ )
19054 , offset( offset_ )
19055 {
19056 }
19057
19058 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
19059 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019060 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019061 }
19062
19063 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
19064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019065 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019066 return *this;
19067 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019068 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19069 {
19070 tokenType = tokenType_;
19071 return *this;
19072 }
19073
19074 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
19075 {
19076 buffer = buffer_;
19077 return *this;
19078 }
19079
19080 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
19081 {
19082 offset = offset_;
19083 return *this;
19084 }
19085
19086 operator const VkIndirectCommandsTokenNVX&() const
19087 {
19088 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
19089 }
19090
19091 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
19092 {
19093 return ( tokenType == rhs.tokenType )
19094 && ( buffer == rhs.buffer )
19095 && ( offset == rhs.offset );
19096 }
19097
19098 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
19099 {
19100 return !operator==( rhs );
19101 }
19102
19103 IndirectCommandsTokenTypeNVX tokenType;
19104 Buffer buffer;
19105 DeviceSize offset;
19106 };
19107 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
19108
19109 struct IndirectCommandsLayoutTokenNVX
19110 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019111 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019112 : tokenType( tokenType_ )
19113 , bindingUnit( bindingUnit_ )
19114 , dynamicCount( dynamicCount_ )
19115 , divisor( divisor_ )
19116 {
19117 }
19118
19119 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
19120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019121 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019122 }
19123
19124 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
19125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019126 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019127 return *this;
19128 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019129 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
19130 {
19131 tokenType = tokenType_;
19132 return *this;
19133 }
19134
19135 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
19136 {
19137 bindingUnit = bindingUnit_;
19138 return *this;
19139 }
19140
19141 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
19142 {
19143 dynamicCount = dynamicCount_;
19144 return *this;
19145 }
19146
19147 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
19148 {
19149 divisor = divisor_;
19150 return *this;
19151 }
19152
19153 operator const VkIndirectCommandsLayoutTokenNVX&() const
19154 {
19155 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
19156 }
19157
19158 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
19159 {
19160 return ( tokenType == rhs.tokenType )
19161 && ( bindingUnit == rhs.bindingUnit )
19162 && ( dynamicCount == rhs.dynamicCount )
19163 && ( divisor == rhs.divisor );
19164 }
19165
19166 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
19167 {
19168 return !operator==( rhs );
19169 }
19170
19171 IndirectCommandsTokenTypeNVX tokenType;
19172 uint32_t bindingUnit;
19173 uint32_t dynamicCount;
19174 uint32_t divisor;
19175 };
19176 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
19177
19178 struct IndirectCommandsLayoutCreateInfoNVX
19179 {
19180 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
19181 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
19182 , pNext( nullptr )
19183 , pipelineBindPoint( pipelineBindPoint_ )
19184 , flags( flags_ )
19185 , tokenCount( tokenCount_ )
19186 , pTokens( pTokens_ )
19187 {
19188 }
19189
19190 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19191 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019192 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019193 }
19194
19195 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
19196 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019197 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019198 return *this;
19199 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019200 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
19201 {
19202 pNext = pNext_;
19203 return *this;
19204 }
19205
19206 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
19207 {
19208 pipelineBindPoint = pipelineBindPoint_;
19209 return *this;
19210 }
19211
19212 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
19213 {
19214 flags = flags_;
19215 return *this;
19216 }
19217
19218 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
19219 {
19220 tokenCount = tokenCount_;
19221 return *this;
19222 }
19223
19224 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
19225 {
19226 pTokens = pTokens_;
19227 return *this;
19228 }
19229
19230 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
19231 {
19232 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
19233 }
19234
19235 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19236 {
19237 return ( sType == rhs.sType )
19238 && ( pNext == rhs.pNext )
19239 && ( pipelineBindPoint == rhs.pipelineBindPoint )
19240 && ( flags == rhs.flags )
19241 && ( tokenCount == rhs.tokenCount )
19242 && ( pTokens == rhs.pTokens );
19243 }
19244
19245 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
19246 {
19247 return !operator==( rhs );
19248 }
19249
19250 private:
19251 StructureType sType;
19252
19253 public:
19254 const void* pNext;
19255 PipelineBindPoint pipelineBindPoint;
19256 IndirectCommandsLayoutUsageFlagsNVX flags;
19257 uint32_t tokenCount;
19258 const IndirectCommandsLayoutTokenNVX* pTokens;
19259 };
19260 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
19261
19262 enum class ObjectEntryTypeNVX
19263 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019264 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
19265 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
19266 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
19267 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
19268 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019269 };
19270
19271 struct ObjectTableCreateInfoNVX
19272 {
19273 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 )
19274 : sType( StructureType::eObjectTableCreateInfoNVX )
19275 , pNext( nullptr )
19276 , objectCount( objectCount_ )
19277 , pObjectEntryTypes( pObjectEntryTypes_ )
19278 , pObjectEntryCounts( pObjectEntryCounts_ )
19279 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
19280 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
19281 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
19282 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
19283 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
19284 , maxPipelineLayouts( maxPipelineLayouts_ )
19285 {
19286 }
19287
19288 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
19289 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019290 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019291 }
19292
19293 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
19294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019295 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019296 return *this;
19297 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019298 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
19299 {
19300 pNext = pNext_;
19301 return *this;
19302 }
19303
19304 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
19305 {
19306 objectCount = objectCount_;
19307 return *this;
19308 }
19309
19310 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
19311 {
19312 pObjectEntryTypes = pObjectEntryTypes_;
19313 return *this;
19314 }
19315
19316 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
19317 {
19318 pObjectEntryCounts = pObjectEntryCounts_;
19319 return *this;
19320 }
19321
19322 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
19323 {
19324 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
19325 return *this;
19326 }
19327
19328 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
19329 {
19330 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
19331 return *this;
19332 }
19333
19334 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
19335 {
19336 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
19337 return *this;
19338 }
19339
19340 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
19341 {
19342 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
19343 return *this;
19344 }
19345
19346 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
19347 {
19348 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
19349 return *this;
19350 }
19351
19352 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
19353 {
19354 maxPipelineLayouts = maxPipelineLayouts_;
19355 return *this;
19356 }
19357
19358 operator const VkObjectTableCreateInfoNVX&() const
19359 {
19360 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
19361 }
19362
19363 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
19364 {
19365 return ( sType == rhs.sType )
19366 && ( pNext == rhs.pNext )
19367 && ( objectCount == rhs.objectCount )
19368 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
19369 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
19370 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
19371 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
19372 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
19373 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
19374 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
19375 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
19376 }
19377
19378 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
19379 {
19380 return !operator==( rhs );
19381 }
19382
19383 private:
19384 StructureType sType;
19385
19386 public:
19387 const void* pNext;
19388 uint32_t objectCount;
19389 const ObjectEntryTypeNVX* pObjectEntryTypes;
19390 const uint32_t* pObjectEntryCounts;
19391 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
19392 uint32_t maxUniformBuffersPerDescriptor;
19393 uint32_t maxStorageBuffersPerDescriptor;
19394 uint32_t maxStorageImagesPerDescriptor;
19395 uint32_t maxSampledImagesPerDescriptor;
19396 uint32_t maxPipelineLayouts;
19397 };
19398 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
19399
19400 struct ObjectTableEntryNVX
19401 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019402 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019403 : type( type_ )
19404 , flags( flags_ )
19405 {
19406 }
19407
19408 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
19409 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019410 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019411 }
19412
19413 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
19414 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019415 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019416 return *this;
19417 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019418 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
19419 {
19420 type = type_;
19421 return *this;
19422 }
19423
19424 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19425 {
19426 flags = flags_;
19427 return *this;
19428 }
19429
19430 operator const VkObjectTableEntryNVX&() const
19431 {
19432 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
19433 }
19434
19435 bool operator==( ObjectTableEntryNVX const& rhs ) const
19436 {
19437 return ( type == rhs.type )
19438 && ( flags == rhs.flags );
19439 }
19440
19441 bool operator!=( ObjectTableEntryNVX const& rhs ) const
19442 {
19443 return !operator==( rhs );
19444 }
19445
19446 ObjectEntryTypeNVX type;
19447 ObjectEntryUsageFlagsNVX flags;
19448 };
19449 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
19450
19451 struct ObjectTablePipelineEntryNVX
19452 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019453 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019454 : type( type_ )
19455 , flags( flags_ )
19456 , pipeline( pipeline_ )
19457 {
19458 }
19459
19460 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
19461 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019462 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019463 }
19464
19465 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
19466 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019467 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019468 return *this;
19469 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019470 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
19471 {
19472 type = type_;
19473 return *this;
19474 }
19475
19476 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19477 {
19478 flags = flags_;
19479 return *this;
19480 }
19481
19482 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
19483 {
19484 pipeline = pipeline_;
19485 return *this;
19486 }
19487
19488 operator const VkObjectTablePipelineEntryNVX&() const
19489 {
19490 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
19491 }
19492
19493 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
19494 {
19495 return ( type == rhs.type )
19496 && ( flags == rhs.flags )
19497 && ( pipeline == rhs.pipeline );
19498 }
19499
19500 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
19501 {
19502 return !operator==( rhs );
19503 }
19504
19505 ObjectEntryTypeNVX type;
19506 ObjectEntryUsageFlagsNVX flags;
19507 Pipeline pipeline;
19508 };
19509 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
19510
19511 struct ObjectTableDescriptorSetEntryNVX
19512 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019513 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019514 : type( type_ )
19515 , flags( flags_ )
19516 , pipelineLayout( pipelineLayout_ )
19517 , descriptorSet( descriptorSet_ )
19518 {
19519 }
19520
19521 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
19522 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019523 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019524 }
19525
19526 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
19527 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019528 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019529 return *this;
19530 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019531 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
19532 {
19533 type = type_;
19534 return *this;
19535 }
19536
19537 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19538 {
19539 flags = flags_;
19540 return *this;
19541 }
19542
19543 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19544 {
19545 pipelineLayout = pipelineLayout_;
19546 return *this;
19547 }
19548
19549 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
19550 {
19551 descriptorSet = descriptorSet_;
19552 return *this;
19553 }
19554
19555 operator const VkObjectTableDescriptorSetEntryNVX&() const
19556 {
19557 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
19558 }
19559
19560 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19561 {
19562 return ( type == rhs.type )
19563 && ( flags == rhs.flags )
19564 && ( pipelineLayout == rhs.pipelineLayout )
19565 && ( descriptorSet == rhs.descriptorSet );
19566 }
19567
19568 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19569 {
19570 return !operator==( rhs );
19571 }
19572
19573 ObjectEntryTypeNVX type;
19574 ObjectEntryUsageFlagsNVX flags;
19575 PipelineLayout pipelineLayout;
19576 DescriptorSet descriptorSet;
19577 };
19578 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
19579
19580 struct ObjectTableVertexBufferEntryNVX
19581 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019582 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019583 : type( type_ )
19584 , flags( flags_ )
19585 , buffer( buffer_ )
19586 {
19587 }
19588
19589 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
19590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019591 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019592 }
19593
19594 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
19595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019596 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019597 return *this;
19598 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019599 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19600 {
19601 type = type_;
19602 return *this;
19603 }
19604
19605 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19606 {
19607 flags = flags_;
19608 return *this;
19609 }
19610
19611 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19612 {
19613 buffer = buffer_;
19614 return *this;
19615 }
19616
19617 operator const VkObjectTableVertexBufferEntryNVX&() const
19618 {
19619 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19620 }
19621
19622 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19623 {
19624 return ( type == rhs.type )
19625 && ( flags == rhs.flags )
19626 && ( buffer == rhs.buffer );
19627 }
19628
19629 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19630 {
19631 return !operator==( rhs );
19632 }
19633
19634 ObjectEntryTypeNVX type;
19635 ObjectEntryUsageFlagsNVX flags;
19636 Buffer buffer;
19637 };
19638 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19639
19640 struct ObjectTableIndexBufferEntryNVX
19641 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019642 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019643 : type( type_ )
19644 , flags( flags_ )
19645 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019646 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019647 {
19648 }
19649
19650 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19651 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019652 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019653 }
19654
19655 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19656 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019657 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019658 return *this;
19659 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019660 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19661 {
19662 type = type_;
19663 return *this;
19664 }
19665
19666 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19667 {
19668 flags = flags_;
19669 return *this;
19670 }
19671
19672 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19673 {
19674 buffer = buffer_;
19675 return *this;
19676 }
19677
Mark Young39389872017-01-19 21:10:49 -070019678 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19679 {
19680 indexType = indexType_;
19681 return *this;
19682 }
19683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019684 operator const VkObjectTableIndexBufferEntryNVX&() const
19685 {
19686 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19687 }
19688
19689 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19690 {
19691 return ( type == rhs.type )
19692 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019693 && ( buffer == rhs.buffer )
19694 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019695 }
19696
19697 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19698 {
19699 return !operator==( rhs );
19700 }
19701
19702 ObjectEntryTypeNVX type;
19703 ObjectEntryUsageFlagsNVX flags;
19704 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019705 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019706 };
19707 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19708
19709 struct ObjectTablePushConstantEntryNVX
19710 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019711 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019712 : type( type_ )
19713 , flags( flags_ )
19714 , pipelineLayout( pipelineLayout_ )
19715 , stageFlags( stageFlags_ )
19716 {
19717 }
19718
19719 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19720 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019721 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019722 }
19723
19724 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19725 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019726 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019727 return *this;
19728 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019729 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19730 {
19731 type = type_;
19732 return *this;
19733 }
19734
19735 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19736 {
19737 flags = flags_;
19738 return *this;
19739 }
19740
19741 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19742 {
19743 pipelineLayout = pipelineLayout_;
19744 return *this;
19745 }
19746
19747 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19748 {
19749 stageFlags = stageFlags_;
19750 return *this;
19751 }
19752
19753 operator const VkObjectTablePushConstantEntryNVX&() const
19754 {
19755 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19756 }
19757
19758 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19759 {
19760 return ( type == rhs.type )
19761 && ( flags == rhs.flags )
19762 && ( pipelineLayout == rhs.pipelineLayout )
19763 && ( stageFlags == rhs.stageFlags );
19764 }
19765
19766 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19767 {
19768 return !operator==( rhs );
19769 }
19770
19771 ObjectEntryTypeNVX type;
19772 ObjectEntryUsageFlagsNVX flags;
19773 PipelineLayout pipelineLayout;
19774 ShaderStageFlags stageFlags;
19775 };
19776 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19777
Mark Young0f183a82017-02-28 09:58:04 -070019778 enum class DescriptorSetLayoutCreateFlagBits
19779 {
19780 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19781 };
19782
19783 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19784
19785 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19786 {
19787 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19788 }
19789
19790 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19791 {
19792 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19793 }
19794
19795 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19796 {
19797 enum
19798 {
19799 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19800 };
19801 };
19802
19803 struct DescriptorSetLayoutCreateInfo
19804 {
19805 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19806 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19807 , pNext( nullptr )
19808 , flags( flags_ )
19809 , bindingCount( bindingCount_ )
19810 , pBindings( pBindings_ )
19811 {
19812 }
19813
19814 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019816 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070019817 }
19818
19819 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019821 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070019822 return *this;
19823 }
Mark Young0f183a82017-02-28 09:58:04 -070019824 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19825 {
19826 pNext = pNext_;
19827 return *this;
19828 }
19829
19830 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19831 {
19832 flags = flags_;
19833 return *this;
19834 }
19835
19836 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19837 {
19838 bindingCount = bindingCount_;
19839 return *this;
19840 }
19841
19842 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19843 {
19844 pBindings = pBindings_;
19845 return *this;
19846 }
19847
19848 operator const VkDescriptorSetLayoutCreateInfo&() const
19849 {
19850 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19851 }
19852
19853 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19854 {
19855 return ( sType == rhs.sType )
19856 && ( pNext == rhs.pNext )
19857 && ( flags == rhs.flags )
19858 && ( bindingCount == rhs.bindingCount )
19859 && ( pBindings == rhs.pBindings );
19860 }
19861
19862 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19863 {
19864 return !operator==( rhs );
19865 }
19866
19867 private:
19868 StructureType sType;
19869
19870 public:
19871 const void* pNext;
19872 DescriptorSetLayoutCreateFlags flags;
19873 uint32_t bindingCount;
19874 const DescriptorSetLayoutBinding* pBindings;
19875 };
19876 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19877
19878 enum class ExternalMemoryHandleTypeFlagBitsKHX
19879 {
19880 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19881 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19882 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19883 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19884 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19885 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19886 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19887 };
19888
19889 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19890
19891 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19892 {
19893 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19894 }
19895
19896 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19897 {
19898 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19899 }
19900
19901 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19902 {
19903 enum
19904 {
19905 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19906 };
19907 };
19908
19909 struct PhysicalDeviceExternalImageFormatInfoKHX
19910 {
19911 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19912 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19913 , pNext( nullptr )
19914 , handleType( handleType_ )
19915 {
19916 }
19917
19918 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19919 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019920 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019921 }
19922
19923 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19924 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019925 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019926 return *this;
19927 }
Mark Young0f183a82017-02-28 09:58:04 -070019928 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19929 {
19930 pNext = pNext_;
19931 return *this;
19932 }
19933
19934 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19935 {
19936 handleType = handleType_;
19937 return *this;
19938 }
19939
19940 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19941 {
19942 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19943 }
19944
19945 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19946 {
19947 return ( sType == rhs.sType )
19948 && ( pNext == rhs.pNext )
19949 && ( handleType == rhs.handleType );
19950 }
19951
19952 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19953 {
19954 return !operator==( rhs );
19955 }
19956
19957 private:
19958 StructureType sType;
19959
19960 public:
19961 const void* pNext;
19962 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19963 };
19964 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19965
19966 struct PhysicalDeviceExternalBufferInfoKHX
19967 {
19968 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19969 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19970 , pNext( nullptr )
19971 , flags( flags_ )
19972 , usage( usage_ )
19973 , handleType( handleType_ )
19974 {
19975 }
19976
19977 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19978 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019979 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019980 }
19981
19982 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19983 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019984 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019985 return *this;
19986 }
Mark Young0f183a82017-02-28 09:58:04 -070019987 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19988 {
19989 pNext = pNext_;
19990 return *this;
19991 }
19992
19993 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19994 {
19995 flags = flags_;
19996 return *this;
19997 }
19998
19999 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
20000 {
20001 usage = usage_;
20002 return *this;
20003 }
20004
20005 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20006 {
20007 handleType = handleType_;
20008 return *this;
20009 }
20010
20011 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
20012 {
20013 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
20014 }
20015
20016 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
20017 {
20018 return ( sType == rhs.sType )
20019 && ( pNext == rhs.pNext )
20020 && ( flags == rhs.flags )
20021 && ( usage == rhs.usage )
20022 && ( handleType == rhs.handleType );
20023 }
20024
20025 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
20026 {
20027 return !operator==( rhs );
20028 }
20029
20030 private:
20031 StructureType sType;
20032
20033 public:
20034 const void* pNext;
20035 BufferCreateFlags flags;
20036 BufferUsageFlags usage;
20037 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20038 };
20039 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
20040
20041 struct ExternalMemoryImageCreateInfoKHX
20042 {
20043 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
20044 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
20045 , pNext( nullptr )
20046 , handleTypes( handleTypes_ )
20047 {
20048 }
20049
20050 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
20051 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020052 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020053 }
20054
20055 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
20056 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020057 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020058 return *this;
20059 }
Mark Young0f183a82017-02-28 09:58:04 -070020060 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
20061 {
20062 pNext = pNext_;
20063 return *this;
20064 }
20065
20066 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
20067 {
20068 handleTypes = handleTypes_;
20069 return *this;
20070 }
20071
20072 operator const VkExternalMemoryImageCreateInfoKHX&() const
20073 {
20074 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
20075 }
20076
20077 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
20078 {
20079 return ( sType == rhs.sType )
20080 && ( pNext == rhs.pNext )
20081 && ( handleTypes == rhs.handleTypes );
20082 }
20083
20084 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
20085 {
20086 return !operator==( rhs );
20087 }
20088
20089 private:
20090 StructureType sType;
20091
20092 public:
20093 const void* pNext;
20094 ExternalMemoryHandleTypeFlagsKHX handleTypes;
20095 };
20096 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
20097
20098 struct ExternalMemoryBufferCreateInfoKHX
20099 {
20100 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
20101 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
20102 , pNext( nullptr )
20103 , handleTypes( handleTypes_ )
20104 {
20105 }
20106
20107 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
20108 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020109 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020110 }
20111
20112 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
20113 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020114 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020115 return *this;
20116 }
Mark Young0f183a82017-02-28 09:58:04 -070020117 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
20118 {
20119 pNext = pNext_;
20120 return *this;
20121 }
20122
20123 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
20124 {
20125 handleTypes = handleTypes_;
20126 return *this;
20127 }
20128
20129 operator const VkExternalMemoryBufferCreateInfoKHX&() const
20130 {
20131 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
20132 }
20133
20134 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
20135 {
20136 return ( sType == rhs.sType )
20137 && ( pNext == rhs.pNext )
20138 && ( handleTypes == rhs.handleTypes );
20139 }
20140
20141 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
20142 {
20143 return !operator==( rhs );
20144 }
20145
20146 private:
20147 StructureType sType;
20148
20149 public:
20150 const void* pNext;
20151 ExternalMemoryHandleTypeFlagsKHX handleTypes;
20152 };
20153 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
20154
20155 struct ExportMemoryAllocateInfoKHX
20156 {
20157 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
20158 : sType( StructureType::eExportMemoryAllocateInfoKHX )
20159 , pNext( nullptr )
20160 , handleTypes( handleTypes_ )
20161 {
20162 }
20163
20164 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
20165 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020166 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020167 }
20168
20169 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
20170 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020171 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020172 return *this;
20173 }
Mark Young0f183a82017-02-28 09:58:04 -070020174 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
20175 {
20176 pNext = pNext_;
20177 return *this;
20178 }
20179
20180 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
20181 {
20182 handleTypes = handleTypes_;
20183 return *this;
20184 }
20185
20186 operator const VkExportMemoryAllocateInfoKHX&() const
20187 {
20188 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
20189 }
20190
20191 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
20192 {
20193 return ( sType == rhs.sType )
20194 && ( pNext == rhs.pNext )
20195 && ( handleTypes == rhs.handleTypes );
20196 }
20197
20198 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
20199 {
20200 return !operator==( rhs );
20201 }
20202
20203 private:
20204 StructureType sType;
20205
20206 public:
20207 const void* pNext;
20208 ExternalMemoryHandleTypeFlagsKHX handleTypes;
20209 };
20210 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
20211
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020212#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070020213 struct ImportMemoryWin32HandleInfoKHX
20214 {
20215 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
20216 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
20217 , pNext( nullptr )
20218 , handleType( handleType_ )
20219 , handle( handle_ )
20220 {
20221 }
20222
20223 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
20224 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020225 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020226 }
20227
20228 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
20229 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020230 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020231 return *this;
20232 }
Mark Young0f183a82017-02-28 09:58:04 -070020233 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
20234 {
20235 pNext = pNext_;
20236 return *this;
20237 }
20238
20239 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20240 {
20241 handleType = handleType_;
20242 return *this;
20243 }
20244
20245 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20246 {
20247 handle = handle_;
20248 return *this;
20249 }
20250
20251 operator const VkImportMemoryWin32HandleInfoKHX&() const
20252 {
20253 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
20254 }
20255
20256 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
20257 {
20258 return ( sType == rhs.sType )
20259 && ( pNext == rhs.pNext )
20260 && ( handleType == rhs.handleType )
20261 && ( handle == rhs.handle );
20262 }
20263
20264 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
20265 {
20266 return !operator==( rhs );
20267 }
20268
20269 private:
20270 StructureType sType;
20271
20272 public:
20273 const void* pNext;
20274 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20275 HANDLE handle;
20276 };
20277 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020278#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070020279
20280 struct ImportMemoryFdInfoKHX
20281 {
20282 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20283 : sType( StructureType::eImportMemoryFdInfoKHX )
20284 , pNext( nullptr )
20285 , handleType( handleType_ )
20286 , fd( fd_ )
20287 {
20288 }
20289
20290 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
20291 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020292 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020293 }
20294
20295 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
20296 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020297 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020298 return *this;
20299 }
Mark Young0f183a82017-02-28 09:58:04 -070020300 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
20301 {
20302 pNext = pNext_;
20303 return *this;
20304 }
20305
20306 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20307 {
20308 handleType = handleType_;
20309 return *this;
20310 }
20311
20312 ImportMemoryFdInfoKHX& setFd( int fd_ )
20313 {
20314 fd = fd_;
20315 return *this;
20316 }
20317
20318 operator const VkImportMemoryFdInfoKHX&() const
20319 {
20320 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
20321 }
20322
20323 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
20324 {
20325 return ( sType == rhs.sType )
20326 && ( pNext == rhs.pNext )
20327 && ( handleType == rhs.handleType )
20328 && ( fd == rhs.fd );
20329 }
20330
20331 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
20332 {
20333 return !operator==( rhs );
20334 }
20335
20336 private:
20337 StructureType sType;
20338
20339 public:
20340 const void* pNext;
20341 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20342 int fd;
20343 };
20344 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
20345
20346 enum class ExternalMemoryFeatureFlagBitsKHX
20347 {
20348 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
20349 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
20350 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
20351 };
20352
20353 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
20354
20355 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
20356 {
20357 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
20358 }
20359
20360 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
20361 {
20362 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
20363 }
20364
20365 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
20366 {
20367 enum
20368 {
20369 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
20370 };
20371 };
20372
20373 struct ExternalMemoryPropertiesKHX
20374 {
20375 operator const VkExternalMemoryPropertiesKHX&() const
20376 {
20377 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
20378 }
20379
20380 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
20381 {
20382 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20383 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20384 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20385 }
20386
20387 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
20388 {
20389 return !operator==( rhs );
20390 }
20391
20392 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
20393 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
20394 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
20395 };
20396 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
20397
20398 struct ExternalImageFormatPropertiesKHX
20399 {
20400 operator const VkExternalImageFormatPropertiesKHX&() const
20401 {
20402 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
20403 }
20404
20405 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
20406 {
20407 return ( sType == rhs.sType )
20408 && ( pNext == rhs.pNext )
20409 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20410 }
20411
20412 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
20413 {
20414 return !operator==( rhs );
20415 }
20416
20417 private:
20418 StructureType sType;
20419
20420 public:
20421 void* pNext;
20422 ExternalMemoryPropertiesKHX externalMemoryProperties;
20423 };
20424 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
20425
20426 struct ExternalBufferPropertiesKHX
20427 {
20428 operator const VkExternalBufferPropertiesKHX&() const
20429 {
20430 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
20431 }
20432
20433 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
20434 {
20435 return ( sType == rhs.sType )
20436 && ( pNext == rhs.pNext )
20437 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20438 }
20439
20440 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
20441 {
20442 return !operator==( rhs );
20443 }
20444
20445 private:
20446 StructureType sType;
20447
20448 public:
20449 void* pNext;
20450 ExternalMemoryPropertiesKHX externalMemoryProperties;
20451 };
20452 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
20453
20454 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
20455 {
20456 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
20457 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
20458 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
20459 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
20460 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
20461 };
20462
20463 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
20464
20465 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
20466 {
20467 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
20468 }
20469
20470 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
20471 {
20472 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
20473 }
20474
20475 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
20476 {
20477 enum
20478 {
20479 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
20480 };
20481 };
20482
20483 struct PhysicalDeviceExternalSemaphoreInfoKHX
20484 {
20485 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
20486 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
20487 , pNext( nullptr )
20488 , handleType( handleType_ )
20489 {
20490 }
20491
20492 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20493 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020494 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020495 }
20496
20497 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20498 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020499 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020500 return *this;
20501 }
Mark Young0f183a82017-02-28 09:58:04 -070020502 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
20503 {
20504 pNext = pNext_;
20505 return *this;
20506 }
20507
20508 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20509 {
20510 handleType = handleType_;
20511 return *this;
20512 }
20513
20514 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
20515 {
20516 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
20517 }
20518
20519 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20520 {
20521 return ( sType == rhs.sType )
20522 && ( pNext == rhs.pNext )
20523 && ( handleType == rhs.handleType );
20524 }
20525
20526 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20527 {
20528 return !operator==( rhs );
20529 }
20530
20531 private:
20532 StructureType sType;
20533
20534 public:
20535 const void* pNext;
20536 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20537 };
20538 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
20539
20540 struct ExportSemaphoreCreateInfoKHX
20541 {
20542 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
20543 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
20544 , pNext( nullptr )
20545 , handleTypes( handleTypes_ )
20546 {
20547 }
20548
20549 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
20550 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020551 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020552 }
20553
20554 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
20555 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020556 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020557 return *this;
20558 }
Mark Young0f183a82017-02-28 09:58:04 -070020559 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
20560 {
20561 pNext = pNext_;
20562 return *this;
20563 }
20564
20565 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
20566 {
20567 handleTypes = handleTypes_;
20568 return *this;
20569 }
20570
20571 operator const VkExportSemaphoreCreateInfoKHX&() const
20572 {
20573 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
20574 }
20575
20576 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
20577 {
20578 return ( sType == rhs.sType )
20579 && ( pNext == rhs.pNext )
20580 && ( handleTypes == rhs.handleTypes );
20581 }
20582
20583 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
20584 {
20585 return !operator==( rhs );
20586 }
20587
20588 private:
20589 StructureType sType;
20590
20591 public:
20592 const void* pNext;
20593 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
20594 };
20595 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
20596
20597#ifdef VK_USE_PLATFORM_WIN32_KHX
20598 struct ImportSemaphoreWin32HandleInfoKHX
20599 {
20600 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20601 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20602 , pNext( nullptr )
20603 , semaphore( semaphore_ )
20604 , handleType( handleType_ )
20605 , handle( handle_ )
20606 {
20607 }
20608
20609 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20610 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020611 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020612 }
20613
20614 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20615 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020616 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020617 return *this;
20618 }
Mark Young0f183a82017-02-28 09:58:04 -070020619 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20620 {
20621 pNext = pNext_;
20622 return *this;
20623 }
20624
20625 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20626 {
20627 semaphore = semaphore_;
20628 return *this;
20629 }
20630
20631 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20632 {
20633 handleType = handleType_;
20634 return *this;
20635 }
20636
20637 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20638 {
20639 handle = handle_;
20640 return *this;
20641 }
20642
20643 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20644 {
20645 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20646 }
20647
20648 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20649 {
20650 return ( sType == rhs.sType )
20651 && ( pNext == rhs.pNext )
20652 && ( semaphore == rhs.semaphore )
20653 && ( handleType == rhs.handleType )
20654 && ( handle == rhs.handle );
20655 }
20656
20657 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20658 {
20659 return !operator==( rhs );
20660 }
20661
20662 private:
20663 StructureType sType;
20664
20665 public:
20666 const void* pNext;
20667 Semaphore semaphore;
20668 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20669 HANDLE handle;
20670 };
20671 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20672#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20673
20674 struct ImportSemaphoreFdInfoKHX
20675 {
20676 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20677 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20678 , pNext( nullptr )
20679 , semaphore( semaphore_ )
20680 , handleType( handleType_ )
20681 , fd( fd_ )
20682 {
20683 }
20684
20685 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20686 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020687 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020688 }
20689
20690 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20691 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020692 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020693 return *this;
20694 }
Mark Young0f183a82017-02-28 09:58:04 -070020695 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20696 {
20697 pNext = pNext_;
20698 return *this;
20699 }
20700
20701 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20702 {
20703 semaphore = semaphore_;
20704 return *this;
20705 }
20706
20707 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20708 {
20709 handleType = handleType_;
20710 return *this;
20711 }
20712
20713 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20714 {
20715 fd = fd_;
20716 return *this;
20717 }
20718
20719 operator const VkImportSemaphoreFdInfoKHX&() const
20720 {
20721 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20722 }
20723
20724 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20725 {
20726 return ( sType == rhs.sType )
20727 && ( pNext == rhs.pNext )
20728 && ( semaphore == rhs.semaphore )
20729 && ( handleType == rhs.handleType )
20730 && ( fd == rhs.fd );
20731 }
20732
20733 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20734 {
20735 return !operator==( rhs );
20736 }
20737
20738 private:
20739 StructureType sType;
20740
20741 public:
20742 const void* pNext;
20743 Semaphore semaphore;
20744 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20745 int fd;
20746 };
20747 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20748
20749 enum class ExternalSemaphoreFeatureFlagBitsKHX
20750 {
20751 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20752 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20753 };
20754
20755 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20756
20757 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20758 {
20759 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20760 }
20761
20762 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20763 {
20764 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20765 }
20766
20767 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20768 {
20769 enum
20770 {
20771 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20772 };
20773 };
20774
20775 struct ExternalSemaphorePropertiesKHX
20776 {
20777 operator const VkExternalSemaphorePropertiesKHX&() const
20778 {
20779 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20780 }
20781
20782 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20783 {
20784 return ( sType == rhs.sType )
20785 && ( pNext == rhs.pNext )
20786 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20787 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20788 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20789 }
20790
20791 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20792 {
20793 return !operator==( rhs );
20794 }
20795
20796 private:
20797 StructureType sType;
20798
20799 public:
20800 void* pNext;
20801 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20802 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20803 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20804 };
20805 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20806
Mark Young39389872017-01-19 21:10:49 -070020807 enum class SurfaceCounterFlagBitsEXT
20808 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020809 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070020810 };
20811
20812 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20813
20814 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20815 {
20816 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20817 }
20818
20819 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20820 {
20821 return ~( SurfaceCounterFlagsEXT( bits ) );
20822 }
20823
20824 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20825 {
20826 enum
20827 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020828 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070020829 };
20830 };
20831
20832 struct SurfaceCapabilities2EXT
20833 {
20834 operator const VkSurfaceCapabilities2EXT&() const
20835 {
20836 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20837 }
20838
20839 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20840 {
20841 return ( sType == rhs.sType )
20842 && ( pNext == rhs.pNext )
20843 && ( minImageCount == rhs.minImageCount )
20844 && ( maxImageCount == rhs.maxImageCount )
20845 && ( currentExtent == rhs.currentExtent )
20846 && ( minImageExtent == rhs.minImageExtent )
20847 && ( maxImageExtent == rhs.maxImageExtent )
20848 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20849 && ( supportedTransforms == rhs.supportedTransforms )
20850 && ( currentTransform == rhs.currentTransform )
20851 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20852 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20853 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20854 }
20855
20856 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20857 {
20858 return !operator==( rhs );
20859 }
20860
20861 private:
20862 StructureType sType;
20863
20864 public:
20865 void* pNext;
20866 uint32_t minImageCount;
20867 uint32_t maxImageCount;
20868 Extent2D currentExtent;
20869 Extent2D minImageExtent;
20870 Extent2D maxImageExtent;
20871 uint32_t maxImageArrayLayers;
20872 SurfaceTransformFlagsKHR supportedTransforms;
20873 SurfaceTransformFlagBitsKHR currentTransform;
20874 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20875 ImageUsageFlags supportedUsageFlags;
20876 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20877 };
20878 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20879
20880 struct SwapchainCounterCreateInfoEXT
20881 {
20882 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20883 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20884 , pNext( nullptr )
20885 , surfaceCounters( surfaceCounters_ )
20886 {
20887 }
20888
20889 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20890 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020891 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020892 }
20893
20894 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20895 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020896 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020897 return *this;
20898 }
Mark Young39389872017-01-19 21:10:49 -070020899 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20900 {
20901 pNext = pNext_;
20902 return *this;
20903 }
20904
20905 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20906 {
20907 surfaceCounters = surfaceCounters_;
20908 return *this;
20909 }
20910
20911 operator const VkSwapchainCounterCreateInfoEXT&() const
20912 {
20913 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20914 }
20915
20916 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20917 {
20918 return ( sType == rhs.sType )
20919 && ( pNext == rhs.pNext )
20920 && ( surfaceCounters == rhs.surfaceCounters );
20921 }
20922
20923 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20924 {
20925 return !operator==( rhs );
20926 }
20927
20928 private:
20929 StructureType sType;
20930
20931 public:
20932 const void* pNext;
20933 SurfaceCounterFlagsEXT surfaceCounters;
20934 };
20935 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20936
20937 enum class DisplayPowerStateEXT
20938 {
20939 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20940 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20941 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20942 };
20943
20944 struct DisplayPowerInfoEXT
20945 {
20946 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20947 : sType( StructureType::eDisplayPowerInfoEXT )
20948 , pNext( nullptr )
20949 , powerState( powerState_ )
20950 {
20951 }
20952
20953 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020955 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020956 }
20957
20958 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020960 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020961 return *this;
20962 }
Mark Young39389872017-01-19 21:10:49 -070020963 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20964 {
20965 pNext = pNext_;
20966 return *this;
20967 }
20968
20969 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20970 {
20971 powerState = powerState_;
20972 return *this;
20973 }
20974
20975 operator const VkDisplayPowerInfoEXT&() const
20976 {
20977 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20978 }
20979
20980 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20981 {
20982 return ( sType == rhs.sType )
20983 && ( pNext == rhs.pNext )
20984 && ( powerState == rhs.powerState );
20985 }
20986
20987 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20988 {
20989 return !operator==( rhs );
20990 }
20991
20992 private:
20993 StructureType sType;
20994
20995 public:
20996 const void* pNext;
20997 DisplayPowerStateEXT powerState;
20998 };
20999 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
21000
21001 enum class DeviceEventTypeEXT
21002 {
21003 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
21004 };
21005
21006 struct DeviceEventInfoEXT
21007 {
21008 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
21009 : sType( StructureType::eDeviceEventInfoEXT )
21010 , pNext( nullptr )
21011 , deviceEvent( deviceEvent_ )
21012 {
21013 }
21014
21015 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
21016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021017 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070021018 }
21019
21020 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
21021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021022 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070021023 return *this;
21024 }
Mark Young39389872017-01-19 21:10:49 -070021025 DeviceEventInfoEXT& setPNext( const void* pNext_ )
21026 {
21027 pNext = pNext_;
21028 return *this;
21029 }
21030
21031 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
21032 {
21033 deviceEvent = deviceEvent_;
21034 return *this;
21035 }
21036
21037 operator const VkDeviceEventInfoEXT&() const
21038 {
21039 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
21040 }
21041
21042 bool operator==( DeviceEventInfoEXT const& rhs ) const
21043 {
21044 return ( sType == rhs.sType )
21045 && ( pNext == rhs.pNext )
21046 && ( deviceEvent == rhs.deviceEvent );
21047 }
21048
21049 bool operator!=( DeviceEventInfoEXT const& rhs ) const
21050 {
21051 return !operator==( rhs );
21052 }
21053
21054 private:
21055 StructureType sType;
21056
21057 public:
21058 const void* pNext;
21059 DeviceEventTypeEXT deviceEvent;
21060 };
21061 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
21062
21063 enum class DisplayEventTypeEXT
21064 {
21065 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
21066 };
21067
21068 struct DisplayEventInfoEXT
21069 {
21070 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
21071 : sType( StructureType::eDisplayEventInfoEXT )
21072 , pNext( nullptr )
21073 , displayEvent( displayEvent_ )
21074 {
21075 }
21076
21077 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
21078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021079 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070021080 }
21081
21082 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
21083 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021084 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070021085 return *this;
21086 }
Mark Young39389872017-01-19 21:10:49 -070021087 DisplayEventInfoEXT& setPNext( const void* pNext_ )
21088 {
21089 pNext = pNext_;
21090 return *this;
21091 }
21092
21093 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
21094 {
21095 displayEvent = displayEvent_;
21096 return *this;
21097 }
21098
21099 operator const VkDisplayEventInfoEXT&() const
21100 {
21101 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
21102 }
21103
21104 bool operator==( DisplayEventInfoEXT const& rhs ) const
21105 {
21106 return ( sType == rhs.sType )
21107 && ( pNext == rhs.pNext )
21108 && ( displayEvent == rhs.displayEvent );
21109 }
21110
21111 bool operator!=( DisplayEventInfoEXT const& rhs ) const
21112 {
21113 return !operator==( rhs );
21114 }
21115
21116 private:
21117 StructureType sType;
21118
21119 public:
21120 const void* pNext;
21121 DisplayEventTypeEXT displayEvent;
21122 };
21123 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
21124
Mark Young0f183a82017-02-28 09:58:04 -070021125 enum class PeerMemoryFeatureFlagBitsKHX
21126 {
21127 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
21128 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
21129 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
21130 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
21131 };
21132
21133 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
21134
21135 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
21136 {
21137 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
21138 }
21139
21140 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
21141 {
21142 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
21143 }
21144
21145 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
21146 {
21147 enum
21148 {
21149 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
21150 };
21151 };
21152
21153 enum class MemoryAllocateFlagBitsKHX
21154 {
21155 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
21156 };
21157
21158 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
21159
21160 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
21161 {
21162 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
21163 }
21164
21165 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
21166 {
21167 return ~( MemoryAllocateFlagsKHX( bits ) );
21168 }
21169
21170 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
21171 {
21172 enum
21173 {
21174 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
21175 };
21176 };
21177
21178 struct MemoryAllocateFlagsInfoKHX
21179 {
21180 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
21181 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
21182 , pNext( nullptr )
21183 , flags( flags_ )
21184 , deviceMask( deviceMask_ )
21185 {
21186 }
21187
21188 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
21189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021190 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021191 }
21192
21193 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
21194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021195 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021196 return *this;
21197 }
Mark Young0f183a82017-02-28 09:58:04 -070021198 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
21199 {
21200 pNext = pNext_;
21201 return *this;
21202 }
21203
21204 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
21205 {
21206 flags = flags_;
21207 return *this;
21208 }
21209
21210 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
21211 {
21212 deviceMask = deviceMask_;
21213 return *this;
21214 }
21215
21216 operator const VkMemoryAllocateFlagsInfoKHX&() const
21217 {
21218 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
21219 }
21220
21221 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
21222 {
21223 return ( sType == rhs.sType )
21224 && ( pNext == rhs.pNext )
21225 && ( flags == rhs.flags )
21226 && ( deviceMask == rhs.deviceMask );
21227 }
21228
21229 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
21230 {
21231 return !operator==( rhs );
21232 }
21233
21234 private:
21235 StructureType sType;
21236
21237 public:
21238 const void* pNext;
21239 MemoryAllocateFlagsKHX flags;
21240 uint32_t deviceMask;
21241 };
21242 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
21243
21244 enum class DeviceGroupPresentModeFlagBitsKHX
21245 {
21246 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
21247 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
21248 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
21249 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
21250 };
21251
21252 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
21253
21254 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
21255 {
21256 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
21257 }
21258
21259 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
21260 {
21261 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
21262 }
21263
21264 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
21265 {
21266 enum
21267 {
21268 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
21269 };
21270 };
21271
21272 struct DeviceGroupPresentCapabilitiesKHX
21273 {
21274 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
21275 {
21276 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
21277 }
21278
21279 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21280 {
21281 return ( sType == rhs.sType )
21282 && ( pNext == rhs.pNext )
21283 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
21284 && ( modes == rhs.modes );
21285 }
21286
21287 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21288 {
21289 return !operator==( rhs );
21290 }
21291
21292 private:
21293 StructureType sType;
21294
21295 public:
21296 const void* pNext;
21297 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
21298 DeviceGroupPresentModeFlagsKHX modes;
21299 };
21300 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
21301
21302 struct DeviceGroupPresentInfoKHX
21303 {
21304 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
21305 : sType( StructureType::eDeviceGroupPresentInfoKHX )
21306 , pNext( nullptr )
21307 , swapchainCount( swapchainCount_ )
21308 , pDeviceMasks( pDeviceMasks_ )
21309 , mode( mode_ )
21310 {
21311 }
21312
21313 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
21314 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021315 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021316 }
21317
21318 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
21319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021320 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021321 return *this;
21322 }
Mark Young0f183a82017-02-28 09:58:04 -070021323 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
21324 {
21325 pNext = pNext_;
21326 return *this;
21327 }
21328
21329 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
21330 {
21331 swapchainCount = swapchainCount_;
21332 return *this;
21333 }
21334
21335 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
21336 {
21337 pDeviceMasks = pDeviceMasks_;
21338 return *this;
21339 }
21340
21341 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
21342 {
21343 mode = mode_;
21344 return *this;
21345 }
21346
21347 operator const VkDeviceGroupPresentInfoKHX&() const
21348 {
21349 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
21350 }
21351
21352 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
21353 {
21354 return ( sType == rhs.sType )
21355 && ( pNext == rhs.pNext )
21356 && ( swapchainCount == rhs.swapchainCount )
21357 && ( pDeviceMasks == rhs.pDeviceMasks )
21358 && ( mode == rhs.mode );
21359 }
21360
21361 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
21362 {
21363 return !operator==( rhs );
21364 }
21365
21366 private:
21367 StructureType sType;
21368
21369 public:
21370 const void* pNext;
21371 uint32_t swapchainCount;
21372 const uint32_t* pDeviceMasks;
21373 DeviceGroupPresentModeFlagBitsKHX mode;
21374 };
21375 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
21376
21377 struct DeviceGroupSwapchainCreateInfoKHX
21378 {
21379 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
21380 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
21381 , pNext( nullptr )
21382 , modes( modes_ )
21383 {
21384 }
21385
21386 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21387 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021388 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021389 }
21390
21391 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021393 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021394 return *this;
21395 }
Mark Young0f183a82017-02-28 09:58:04 -070021396 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
21397 {
21398 pNext = pNext_;
21399 return *this;
21400 }
21401
21402 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
21403 {
21404 modes = modes_;
21405 return *this;
21406 }
21407
21408 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
21409 {
21410 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
21411 }
21412
21413 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21414 {
21415 return ( sType == rhs.sType )
21416 && ( pNext == rhs.pNext )
21417 && ( modes == rhs.modes );
21418 }
21419
21420 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21421 {
21422 return !operator==( rhs );
21423 }
21424
21425 private:
21426 StructureType sType;
21427
21428 public:
21429 const void* pNext;
21430 DeviceGroupPresentModeFlagsKHX modes;
21431 };
21432 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
21433
21434 enum class SwapchainCreateFlagBitsKHR
21435 {
21436 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
21437 };
21438
21439 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
21440
21441 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
21442 {
21443 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
21444 }
21445
21446 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
21447 {
21448 return ~( SwapchainCreateFlagsKHR( bits ) );
21449 }
21450
21451 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
21452 {
21453 enum
21454 {
21455 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
21456 };
21457 };
21458
21459 struct SwapchainCreateInfoKHR
21460 {
21461 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() )
21462 : sType( StructureType::eSwapchainCreateInfoKHR )
21463 , pNext( nullptr )
21464 , flags( flags_ )
21465 , surface( surface_ )
21466 , minImageCount( minImageCount_ )
21467 , imageFormat( imageFormat_ )
21468 , imageColorSpace( imageColorSpace_ )
21469 , imageExtent( imageExtent_ )
21470 , imageArrayLayers( imageArrayLayers_ )
21471 , imageUsage( imageUsage_ )
21472 , imageSharingMode( imageSharingMode_ )
21473 , queueFamilyIndexCount( queueFamilyIndexCount_ )
21474 , pQueueFamilyIndices( pQueueFamilyIndices_ )
21475 , preTransform( preTransform_ )
21476 , compositeAlpha( compositeAlpha_ )
21477 , presentMode( presentMode_ )
21478 , clipped( clipped_ )
21479 , oldSwapchain( oldSwapchain_ )
21480 {
21481 }
21482
21483 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
21484 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021485 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021486 }
21487
21488 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
21489 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021490 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021491 return *this;
21492 }
Mark Young0f183a82017-02-28 09:58:04 -070021493 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
21494 {
21495 pNext = pNext_;
21496 return *this;
21497 }
21498
21499 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
21500 {
21501 flags = flags_;
21502 return *this;
21503 }
21504
21505 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
21506 {
21507 surface = surface_;
21508 return *this;
21509 }
21510
21511 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
21512 {
21513 minImageCount = minImageCount_;
21514 return *this;
21515 }
21516
21517 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
21518 {
21519 imageFormat = imageFormat_;
21520 return *this;
21521 }
21522
21523 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
21524 {
21525 imageColorSpace = imageColorSpace_;
21526 return *this;
21527 }
21528
21529 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
21530 {
21531 imageExtent = imageExtent_;
21532 return *this;
21533 }
21534
21535 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
21536 {
21537 imageArrayLayers = imageArrayLayers_;
21538 return *this;
21539 }
21540
21541 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
21542 {
21543 imageUsage = imageUsage_;
21544 return *this;
21545 }
21546
21547 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
21548 {
21549 imageSharingMode = imageSharingMode_;
21550 return *this;
21551 }
21552
21553 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
21554 {
21555 queueFamilyIndexCount = queueFamilyIndexCount_;
21556 return *this;
21557 }
21558
21559 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
21560 {
21561 pQueueFamilyIndices = pQueueFamilyIndices_;
21562 return *this;
21563 }
21564
21565 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
21566 {
21567 preTransform = preTransform_;
21568 return *this;
21569 }
21570
21571 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
21572 {
21573 compositeAlpha = compositeAlpha_;
21574 return *this;
21575 }
21576
21577 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
21578 {
21579 presentMode = presentMode_;
21580 return *this;
21581 }
21582
21583 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
21584 {
21585 clipped = clipped_;
21586 return *this;
21587 }
21588
21589 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21590 {
21591 oldSwapchain = oldSwapchain_;
21592 return *this;
21593 }
21594
21595 operator const VkSwapchainCreateInfoKHR&() const
21596 {
21597 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21598 }
21599
21600 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21601 {
21602 return ( sType == rhs.sType )
21603 && ( pNext == rhs.pNext )
21604 && ( flags == rhs.flags )
21605 && ( surface == rhs.surface )
21606 && ( minImageCount == rhs.minImageCount )
21607 && ( imageFormat == rhs.imageFormat )
21608 && ( imageColorSpace == rhs.imageColorSpace )
21609 && ( imageExtent == rhs.imageExtent )
21610 && ( imageArrayLayers == rhs.imageArrayLayers )
21611 && ( imageUsage == rhs.imageUsage )
21612 && ( imageSharingMode == rhs.imageSharingMode )
21613 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21614 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21615 && ( preTransform == rhs.preTransform )
21616 && ( compositeAlpha == rhs.compositeAlpha )
21617 && ( presentMode == rhs.presentMode )
21618 && ( clipped == rhs.clipped )
21619 && ( oldSwapchain == rhs.oldSwapchain );
21620 }
21621
21622 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21623 {
21624 return !operator==( rhs );
21625 }
21626
21627 private:
21628 StructureType sType;
21629
21630 public:
21631 const void* pNext;
21632 SwapchainCreateFlagsKHR flags;
21633 SurfaceKHR surface;
21634 uint32_t minImageCount;
21635 Format imageFormat;
21636 ColorSpaceKHR imageColorSpace;
21637 Extent2D imageExtent;
21638 uint32_t imageArrayLayers;
21639 ImageUsageFlags imageUsage;
21640 SharingMode imageSharingMode;
21641 uint32_t queueFamilyIndexCount;
21642 const uint32_t* pQueueFamilyIndices;
21643 SurfaceTransformFlagBitsKHR preTransform;
21644 CompositeAlphaFlagBitsKHR compositeAlpha;
21645 PresentModeKHR presentMode;
21646 Bool32 clipped;
21647 SwapchainKHR oldSwapchain;
21648 };
21649 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21650
21651 enum class ViewportCoordinateSwizzleNV
21652 {
21653 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21654 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21655 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21656 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21657 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21658 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21659 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21660 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21661 };
21662
21663 struct ViewportSwizzleNV
21664 {
21665 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21666 : x( x_ )
21667 , y( y_ )
21668 , z( z_ )
21669 , w( w_ )
21670 {
21671 }
21672
21673 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21674 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021675 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021676 }
21677
21678 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021680 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021681 return *this;
21682 }
Mark Young0f183a82017-02-28 09:58:04 -070021683 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21684 {
21685 x = x_;
21686 return *this;
21687 }
21688
21689 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21690 {
21691 y = y_;
21692 return *this;
21693 }
21694
21695 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21696 {
21697 z = z_;
21698 return *this;
21699 }
21700
21701 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21702 {
21703 w = w_;
21704 return *this;
21705 }
21706
21707 operator const VkViewportSwizzleNV&() const
21708 {
21709 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21710 }
21711
21712 bool operator==( ViewportSwizzleNV const& rhs ) const
21713 {
21714 return ( x == rhs.x )
21715 && ( y == rhs.y )
21716 && ( z == rhs.z )
21717 && ( w == rhs.w );
21718 }
21719
21720 bool operator!=( ViewportSwizzleNV const& rhs ) const
21721 {
21722 return !operator==( rhs );
21723 }
21724
21725 ViewportCoordinateSwizzleNV x;
21726 ViewportCoordinateSwizzleNV y;
21727 ViewportCoordinateSwizzleNV z;
21728 ViewportCoordinateSwizzleNV w;
21729 };
21730 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21731
21732 struct PipelineViewportSwizzleStateCreateInfoNV
21733 {
21734 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21735 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21736 , pNext( nullptr )
21737 , flags( flags_ )
21738 , viewportCount( viewportCount_ )
21739 , pViewportSwizzles( pViewportSwizzles_ )
21740 {
21741 }
21742
21743 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021745 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021746 }
21747
21748 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021750 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021751 return *this;
21752 }
Mark Young0f183a82017-02-28 09:58:04 -070021753 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21754 {
21755 pNext = pNext_;
21756 return *this;
21757 }
21758
21759 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21760 {
21761 flags = flags_;
21762 return *this;
21763 }
21764
21765 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21766 {
21767 viewportCount = viewportCount_;
21768 return *this;
21769 }
21770
21771 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21772 {
21773 pViewportSwizzles = pViewportSwizzles_;
21774 return *this;
21775 }
21776
21777 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21778 {
21779 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21780 }
21781
21782 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21783 {
21784 return ( sType == rhs.sType )
21785 && ( pNext == rhs.pNext )
21786 && ( flags == rhs.flags )
21787 && ( viewportCount == rhs.viewportCount )
21788 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21789 }
21790
21791 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21792 {
21793 return !operator==( rhs );
21794 }
21795
21796 private:
21797 StructureType sType;
21798
21799 public:
21800 const void* pNext;
21801 PipelineViewportSwizzleStateCreateFlagsNV flags;
21802 uint32_t viewportCount;
21803 const ViewportSwizzleNV* pViewportSwizzles;
21804 };
21805 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21806
21807 enum class DiscardRectangleModeEXT
21808 {
21809 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21810 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21811 };
21812
21813 struct PipelineDiscardRectangleStateCreateInfoEXT
21814 {
21815 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21816 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21817 , pNext( nullptr )
21818 , flags( flags_ )
21819 , discardRectangleMode( discardRectangleMode_ )
21820 , discardRectangleCount( discardRectangleCount_ )
21821 , pDiscardRectangles( pDiscardRectangles_ )
21822 {
21823 }
21824
21825 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21826 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021827 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070021828 }
21829
21830 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021832 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070021833 return *this;
21834 }
Mark Young0f183a82017-02-28 09:58:04 -070021835 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21836 {
21837 pNext = pNext_;
21838 return *this;
21839 }
21840
21841 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21842 {
21843 flags = flags_;
21844 return *this;
21845 }
21846
21847 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21848 {
21849 discardRectangleMode = discardRectangleMode_;
21850 return *this;
21851 }
21852
21853 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21854 {
21855 discardRectangleCount = discardRectangleCount_;
21856 return *this;
21857 }
21858
21859 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21860 {
21861 pDiscardRectangles = pDiscardRectangles_;
21862 return *this;
21863 }
21864
21865 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21866 {
21867 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21868 }
21869
21870 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21871 {
21872 return ( sType == rhs.sType )
21873 && ( pNext == rhs.pNext )
21874 && ( flags == rhs.flags )
21875 && ( discardRectangleMode == rhs.discardRectangleMode )
21876 && ( discardRectangleCount == rhs.discardRectangleCount )
21877 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21878 }
21879
21880 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21881 {
21882 return !operator==( rhs );
21883 }
21884
21885 private:
21886 StructureType sType;
21887
21888 public:
21889 const void* pNext;
21890 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21891 DiscardRectangleModeEXT discardRectangleMode;
21892 uint32_t discardRectangleCount;
21893 const Rect2D* pDiscardRectangles;
21894 };
21895 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21896
21897 enum class SubpassDescriptionFlagBits
21898 {
21899 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21900 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21901 };
21902
21903 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21904
21905 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21906 {
21907 return SubpassDescriptionFlags( bit0 ) | bit1;
21908 }
21909
21910 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21911 {
21912 return ~( SubpassDescriptionFlags( bits ) );
21913 }
21914
21915 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21916 {
21917 enum
21918 {
21919 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21920 };
21921 };
21922
21923 struct SubpassDescription
21924 {
21925 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 )
21926 : flags( flags_ )
21927 , pipelineBindPoint( pipelineBindPoint_ )
21928 , inputAttachmentCount( inputAttachmentCount_ )
21929 , pInputAttachments( pInputAttachments_ )
21930 , colorAttachmentCount( colorAttachmentCount_ )
21931 , pColorAttachments( pColorAttachments_ )
21932 , pResolveAttachments( pResolveAttachments_ )
21933 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21934 , preserveAttachmentCount( preserveAttachmentCount_ )
21935 , pPreserveAttachments( pPreserveAttachments_ )
21936 {
21937 }
21938
21939 SubpassDescription( VkSubpassDescription const & rhs )
21940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021941 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070021942 }
21943
21944 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21945 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021946 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070021947 return *this;
21948 }
Mark Young0f183a82017-02-28 09:58:04 -070021949 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21950 {
21951 flags = flags_;
21952 return *this;
21953 }
21954
21955 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21956 {
21957 pipelineBindPoint = pipelineBindPoint_;
21958 return *this;
21959 }
21960
21961 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21962 {
21963 inputAttachmentCount = inputAttachmentCount_;
21964 return *this;
21965 }
21966
21967 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21968 {
21969 pInputAttachments = pInputAttachments_;
21970 return *this;
21971 }
21972
21973 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21974 {
21975 colorAttachmentCount = colorAttachmentCount_;
21976 return *this;
21977 }
21978
21979 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21980 {
21981 pColorAttachments = pColorAttachments_;
21982 return *this;
21983 }
21984
21985 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21986 {
21987 pResolveAttachments = pResolveAttachments_;
21988 return *this;
21989 }
21990
21991 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21992 {
21993 pDepthStencilAttachment = pDepthStencilAttachment_;
21994 return *this;
21995 }
21996
21997 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21998 {
21999 preserveAttachmentCount = preserveAttachmentCount_;
22000 return *this;
22001 }
22002
22003 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
22004 {
22005 pPreserveAttachments = pPreserveAttachments_;
22006 return *this;
22007 }
22008
22009 operator const VkSubpassDescription&() const
22010 {
22011 return *reinterpret_cast<const VkSubpassDescription*>(this);
22012 }
22013
22014 bool operator==( SubpassDescription const& rhs ) const
22015 {
22016 return ( flags == rhs.flags )
22017 && ( pipelineBindPoint == rhs.pipelineBindPoint )
22018 && ( inputAttachmentCount == rhs.inputAttachmentCount )
22019 && ( pInputAttachments == rhs.pInputAttachments )
22020 && ( colorAttachmentCount == rhs.colorAttachmentCount )
22021 && ( pColorAttachments == rhs.pColorAttachments )
22022 && ( pResolveAttachments == rhs.pResolveAttachments )
22023 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
22024 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
22025 && ( pPreserveAttachments == rhs.pPreserveAttachments );
22026 }
22027
22028 bool operator!=( SubpassDescription const& rhs ) const
22029 {
22030 return !operator==( rhs );
22031 }
22032
22033 SubpassDescriptionFlags flags;
22034 PipelineBindPoint pipelineBindPoint;
22035 uint32_t inputAttachmentCount;
22036 const AttachmentReference* pInputAttachments;
22037 uint32_t colorAttachmentCount;
22038 const AttachmentReference* pColorAttachments;
22039 const AttachmentReference* pResolveAttachments;
22040 const AttachmentReference* pDepthStencilAttachment;
22041 uint32_t preserveAttachmentCount;
22042 const uint32_t* pPreserveAttachments;
22043 };
22044 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
22045
22046 struct RenderPassCreateInfo
22047 {
22048 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 )
22049 : sType( StructureType::eRenderPassCreateInfo )
22050 , pNext( nullptr )
22051 , flags( flags_ )
22052 , attachmentCount( attachmentCount_ )
22053 , pAttachments( pAttachments_ )
22054 , subpassCount( subpassCount_ )
22055 , pSubpasses( pSubpasses_ )
22056 , dependencyCount( dependencyCount_ )
22057 , pDependencies( pDependencies_ )
22058 {
22059 }
22060
22061 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
22062 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022063 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070022064 }
22065
22066 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
22067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022068 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070022069 return *this;
22070 }
Mark Young0f183a82017-02-28 09:58:04 -070022071 RenderPassCreateInfo& setPNext( const void* pNext_ )
22072 {
22073 pNext = pNext_;
22074 return *this;
22075 }
22076
22077 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
22078 {
22079 flags = flags_;
22080 return *this;
22081 }
22082
22083 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
22084 {
22085 attachmentCount = attachmentCount_;
22086 return *this;
22087 }
22088
22089 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
22090 {
22091 pAttachments = pAttachments_;
22092 return *this;
22093 }
22094
22095 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
22096 {
22097 subpassCount = subpassCount_;
22098 return *this;
22099 }
22100
22101 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
22102 {
22103 pSubpasses = pSubpasses_;
22104 return *this;
22105 }
22106
22107 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
22108 {
22109 dependencyCount = dependencyCount_;
22110 return *this;
22111 }
22112
22113 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
22114 {
22115 pDependencies = pDependencies_;
22116 return *this;
22117 }
22118
22119 operator const VkRenderPassCreateInfo&() const
22120 {
22121 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
22122 }
22123
22124 bool operator==( RenderPassCreateInfo const& rhs ) const
22125 {
22126 return ( sType == rhs.sType )
22127 && ( pNext == rhs.pNext )
22128 && ( flags == rhs.flags )
22129 && ( attachmentCount == rhs.attachmentCount )
22130 && ( pAttachments == rhs.pAttachments )
22131 && ( subpassCount == rhs.subpassCount )
22132 && ( pSubpasses == rhs.pSubpasses )
22133 && ( dependencyCount == rhs.dependencyCount )
22134 && ( pDependencies == rhs.pDependencies );
22135 }
22136
22137 bool operator!=( RenderPassCreateInfo const& rhs ) const
22138 {
22139 return !operator==( rhs );
22140 }
22141
22142 private:
22143 StructureType sType;
22144
22145 public:
22146 const void* pNext;
22147 RenderPassCreateFlags flags;
22148 uint32_t attachmentCount;
22149 const AttachmentDescription* pAttachments;
22150 uint32_t subpassCount;
22151 const SubpassDescription* pSubpasses;
22152 uint32_t dependencyCount;
22153 const SubpassDependency* pDependencies;
22154 };
22155 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
22156
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060022157 enum class SamplerReductionModeEXT
22158 {
22159 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
22160 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
22161 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
22162 };
22163
22164 struct SamplerReductionModeCreateInfoEXT
22165 {
22166 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
22167 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
22168 , pNext( nullptr )
22169 , reductionMode( reductionMode_ )
22170 {
22171 }
22172
22173 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
22174 {
22175 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
22176 }
22177
22178 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
22179 {
22180 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
22181 return *this;
22182 }
22183 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
22184 {
22185 pNext = pNext_;
22186 return *this;
22187 }
22188
22189 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
22190 {
22191 reductionMode = reductionMode_;
22192 return *this;
22193 }
22194
22195 operator const VkSamplerReductionModeCreateInfoEXT&() const
22196 {
22197 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
22198 }
22199
22200 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
22201 {
22202 return ( sType == rhs.sType )
22203 && ( pNext == rhs.pNext )
22204 && ( reductionMode == rhs.reductionMode );
22205 }
22206
22207 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
22208 {
22209 return !operator==( rhs );
22210 }
22211
22212 private:
22213 StructureType sType;
22214
22215 public:
22216 const void* pNext;
22217 SamplerReductionModeEXT reductionMode;
22218 };
22219 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
22220
22221 enum class BlendOverlapEXT
22222 {
22223 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
22224 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
22225 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
22226 };
22227
22228 struct PipelineColorBlendAdvancedStateCreateInfoEXT
22229 {
22230 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
22231 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
22232 , pNext( nullptr )
22233 , srcPremultiplied( srcPremultiplied_ )
22234 , dstPremultiplied( dstPremultiplied_ )
22235 , blendOverlap( blendOverlap_ )
22236 {
22237 }
22238
22239 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
22240 {
22241 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
22242 }
22243
22244 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
22245 {
22246 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
22247 return *this;
22248 }
22249 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
22250 {
22251 pNext = pNext_;
22252 return *this;
22253 }
22254
22255 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
22256 {
22257 srcPremultiplied = srcPremultiplied_;
22258 return *this;
22259 }
22260
22261 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
22262 {
22263 dstPremultiplied = dstPremultiplied_;
22264 return *this;
22265 }
22266
22267 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
22268 {
22269 blendOverlap = blendOverlap_;
22270 return *this;
22271 }
22272
22273 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
22274 {
22275 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
22276 }
22277
22278 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
22279 {
22280 return ( sType == rhs.sType )
22281 && ( pNext == rhs.pNext )
22282 && ( srcPremultiplied == rhs.srcPremultiplied )
22283 && ( dstPremultiplied == rhs.dstPremultiplied )
22284 && ( blendOverlap == rhs.blendOverlap );
22285 }
22286
22287 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
22288 {
22289 return !operator==( rhs );
22290 }
22291
22292 private:
22293 StructureType sType;
22294
22295 public:
22296 const void* pNext;
22297 Bool32 srcPremultiplied;
22298 Bool32 dstPremultiplied;
22299 BlendOverlapEXT blendOverlap;
22300 };
22301 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
22302
22303 enum class CoverageModulationModeNV
22304 {
22305 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
22306 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
22307 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
22308 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
22309 };
22310
22311 struct PipelineCoverageModulationStateCreateInfoNV
22312 {
22313 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
22314 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
22315 , pNext( nullptr )
22316 , flags( flags_ )
22317 , coverageModulationMode( coverageModulationMode_ )
22318 , coverageModulationTableEnable( coverageModulationTableEnable_ )
22319 , coverageModulationTableCount( coverageModulationTableCount_ )
22320 , pCoverageModulationTable( pCoverageModulationTable_ )
22321 {
22322 }
22323
22324 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
22325 {
22326 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
22327 }
22328
22329 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
22330 {
22331 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
22332 return *this;
22333 }
22334 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
22335 {
22336 pNext = pNext_;
22337 return *this;
22338 }
22339
22340 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
22341 {
22342 flags = flags_;
22343 return *this;
22344 }
22345
22346 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
22347 {
22348 coverageModulationMode = coverageModulationMode_;
22349 return *this;
22350 }
22351
22352 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
22353 {
22354 coverageModulationTableEnable = coverageModulationTableEnable_;
22355 return *this;
22356 }
22357
22358 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
22359 {
22360 coverageModulationTableCount = coverageModulationTableCount_;
22361 return *this;
22362 }
22363
22364 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
22365 {
22366 pCoverageModulationTable = pCoverageModulationTable_;
22367 return *this;
22368 }
22369
22370 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
22371 {
22372 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
22373 }
22374
22375 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
22376 {
22377 return ( sType == rhs.sType )
22378 && ( pNext == rhs.pNext )
22379 && ( flags == rhs.flags )
22380 && ( coverageModulationMode == rhs.coverageModulationMode )
22381 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
22382 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
22383 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
22384 }
22385
22386 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
22387 {
22388 return !operator==( rhs );
22389 }
22390
22391 private:
22392 StructureType sType;
22393
22394 public:
22395 const void* pNext;
22396 PipelineCoverageModulationStateCreateFlagsNV flags;
22397 CoverageModulationModeNV coverageModulationMode;
22398 Bool32 coverageModulationTableEnable;
22399 uint32_t coverageModulationTableCount;
22400 const float* pCoverageModulationTable;
22401 };
22402 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
22403
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022404 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022406 template <typename Allocator = std::allocator<LayerProperties>>
22407 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22409
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022410 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
22411 {
22412 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
22413 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022414#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022415 template <typename Allocator>
22416 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022417 {
22418 std::vector<LayerProperties,Allocator> properties;
22419 uint32_t propertyCount;
22420 Result result;
22421 do
22422 {
22423 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
22424 if ( ( result == Result::eSuccess ) && propertyCount )
22425 {
22426 properties.resize( propertyCount );
22427 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
22428 }
22429 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022430 assert( propertyCount <= properties.size() );
22431 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022432 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
22433 }
22434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22435
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022436
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022437 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022439 template <typename Allocator = std::allocator<ExtensionProperties>>
22440 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022441#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022443 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
22444 {
22445 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
22446 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022448 template <typename Allocator>
22449 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022450 {
22451 std::vector<ExtensionProperties,Allocator> properties;
22452 uint32_t propertyCount;
22453 Result result;
22454 do
22455 {
22456 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
22457 if ( ( result == Result::eSuccess ) && propertyCount )
22458 {
22459 properties.resize( propertyCount );
22460 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
22461 }
22462 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022463 assert( propertyCount <= properties.size() );
22464 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022465 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
22466 }
22467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22468
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022469
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022470 // forward declarations
22471 struct CmdProcessCommandsInfoNVX;
22472
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022473 class CommandBuffer
22474 {
22475 public:
22476 CommandBuffer()
22477 : m_commandBuffer(VK_NULL_HANDLE)
22478 {}
22479
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022480 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022481 : m_commandBuffer(VK_NULL_HANDLE)
22482 {}
22483
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022484 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
22485 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022486 {}
22487
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022488#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022489 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022490 {
22491 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022492 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022493 }
22494#endif
22495
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022496 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022497 {
22498 m_commandBuffer = VK_NULL_HANDLE;
22499 return *this;
22500 }
22501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022502 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022503 {
22504 return m_commandBuffer == rhs.m_commandBuffer;
22505 }
22506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022507 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022508 {
22509 return m_commandBuffer != rhs.m_commandBuffer;
22510 }
22511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022512 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022513 {
22514 return m_commandBuffer < rhs.m_commandBuffer;
22515 }
22516
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022517 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022518#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022519 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22521
22522#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022523 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022524#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022525 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22527
22528#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022529 Result reset( CommandBufferResetFlags flags ) const;
22530#else
22531 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22533
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022534 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022535
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022536 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022537#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022538 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022539#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22540
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022541 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022543 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22545
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022546 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022547
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022548 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
22549
22550 void setBlendConstants( const float blendConstants[4] ) const;
22551
22552 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
22553
22554 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
22555
22556 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
22557
22558 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
22559
22560 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 -060022561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022562 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 -060022563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22564
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022565 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022566
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022567 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022569 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22571
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022572 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022573
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022574 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
22575
22576 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22577
22578 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22579
Mark Young0f183a82017-02-28 09:58:04 -070022580 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022581
22582 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
22583
22584 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022586 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22588
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022589 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022591 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22593
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022594 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 -060022595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022596 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022597#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22598
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022599 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022601 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22603
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022604 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022606 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22608
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022609 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22611 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022612 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22614
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022615 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022616
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022617 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022619 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22621
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022622 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022624 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22626
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022627 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022629 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22631
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022632 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022634 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22636
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022637 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022638
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022639 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
22640
22641 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 -060022642#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022643 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 -060022644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22645
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022646 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 -060022647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022648 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 -060022649#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22650
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022651 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022652
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022653 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022654
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022655 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022656
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022657 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022658
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022659 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 -060022660
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022661 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22663 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022664 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22666
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022667 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022669 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22671
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022672 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022673
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022674 void endRenderPass() const;
22675
22676 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022677#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022678 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22680
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022681 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022683 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22685
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022686 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022687
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022688 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022690 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022691#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22692
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022693 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022694
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022695 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
22696
22697 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022699 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22701
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022702 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022704 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22706
Mark Young0f183a82017-02-28 09:58:04 -070022707 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
22708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22709 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
22710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22711
22712 void setDeviceMaskKHX( uint32_t deviceMask ) const;
22713
22714 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
22715
22716 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
22717
22718 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
22719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22720 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
22721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22722
22723 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
22724#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22725 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
22726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22727
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022728
22729
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022730 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022731 {
22732 return m_commandBuffer;
22733 }
22734
22735 explicit operator bool() const
22736 {
22737 return m_commandBuffer != VK_NULL_HANDLE;
22738 }
22739
22740 bool operator!() const
22741 {
22742 return m_commandBuffer == VK_NULL_HANDLE;
22743 }
22744
22745 private:
22746 VkCommandBuffer m_commandBuffer;
22747 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022748
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022749 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
22750
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022751 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
22752 {
22753 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
22754 }
22755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22756 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
22757 {
22758 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
22759 return createResultValue( result, "vk::CommandBuffer::begin" );
22760 }
22761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22762
22763#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22764 VULKAN_HPP_INLINE Result CommandBuffer::end() const
22765 {
22766 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22767 }
22768#else
22769 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
22770 {
22771 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22772 return createResultValue( result, "vk::CommandBuffer::end" );
22773 }
22774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22775
22776#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22777 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
22778 {
22779 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22780 }
22781#else
22782 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
22783 {
22784 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22785 return createResultValue( result, "vk::CommandBuffer::reset" );
22786 }
22787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22788
22789 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
22790 {
22791 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
22792 }
22793
22794 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
22795 {
22796 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
22797 }
22798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22799 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
22800 {
22801 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
22802 }
22803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22804
22805 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
22806 {
22807 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
22808 }
22809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22810 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
22811 {
22812 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
22813 }
22814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22815
22816 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
22817 {
22818 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
22819 }
22820
22821 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
22822 {
22823 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
22824 }
22825
22826 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
22827 {
22828 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
22829 }
22830
22831 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
22832 {
22833 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22834 }
22835
22836 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22837 {
22838 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22839 }
22840
22841 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22842 {
22843 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22844 }
22845
22846 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22847 {
22848 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22849 }
22850
22851 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
22852 {
22853 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22854 }
22855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22856 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22857 {
22858 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22859 }
22860#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22861
22862 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22863 {
22864 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22865 }
22866
22867 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22868 {
22869 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22870 }
22871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22872 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22873 {
22874#ifdef VULKAN_HPP_NO_EXCEPTIONS
22875 assert( buffers.size() == offsets.size() );
22876#else
22877 if ( buffers.size() != offsets.size() )
22878 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022879 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022880 }
22881#endif // VULKAN_HPP_NO_EXCEPTIONS
22882 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22883 }
22884#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22885
22886 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22887 {
22888 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22889 }
22890
22891 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22892 {
22893 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22894 }
22895
22896 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22897 {
22898 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22899 }
22900
22901 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22902 {
22903 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22904 }
22905
Mark Young0f183a82017-02-28 09:58:04 -070022906 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022907 {
Mark Young0f183a82017-02-28 09:58:04 -070022908 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022909 }
22910
22911 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22912 {
22913 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22914 }
22915
22916 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22917 {
22918 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22919 }
22920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22921 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22922 {
22923 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22924 }
22925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22926
22927 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22928 {
22929 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 ) );
22930 }
22931#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22932 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22933 {
22934 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() ) );
22935 }
22936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22937
22938 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22939 {
22940 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 ) );
22941 }
22942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22943 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22944 {
22945 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 ) );
22946 }
22947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22948
22949 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22950 {
22951 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22952 }
22953#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22954 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22955 {
22956 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22957 }
22958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22959
22960 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22961 {
22962 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22963 }
22964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22965 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22966 {
22967 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22968 }
22969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22970
22971 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22972 {
22973 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22974 }
22975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22976 template <typename T>
22977 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22978 {
22979 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22980 }
22981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22982
22983 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22984 {
22985 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22986 }
22987
22988 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22989 {
22990 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22991 }
22992#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22993 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22994 {
22995 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22996 }
22997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22998
22999 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
23000 {
23001 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
23002 }
23003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23004 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
23005 {
23006 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
23007 }
23008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23009
23010 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
23011 {
23012 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
23013 }
23014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23015 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
23016 {
23017 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
23018 }
23019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23020
23021 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
23022 {
23023 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 ) );
23024 }
23025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23026 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
23027 {
23028 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() ) );
23029 }
23030#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23031
23032 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
23033 {
23034 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
23035 }
23036
23037 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
23038 {
23039 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
23040 }
23041
23042 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
23043 {
23044 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 ) );
23045 }
23046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23047 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
23048 {
23049 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() ) );
23050 }
23051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23052
23053 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
23054 {
23055 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 ) );
23056 }
23057#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23058 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
23059 {
23060 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() ) );
23061 }
23062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23063
23064 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
23065 {
23066 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
23067 }
23068
23069 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
23070 {
23071 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
23072 }
23073
23074 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
23075 {
23076 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
23077 }
23078
23079 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
23080 {
23081 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
23082 }
23083
23084 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
23085 {
23086 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
23087 }
23088
23089 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
23090 {
23091 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
23092 }
23093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23094 template <typename T>
23095 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
23096 {
23097 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
23098 }
23099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23100
23101 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
23102 {
23103 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
23104 }
23105#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23106 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
23107 {
23108 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
23109 }
23110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23111
23112 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
23113 {
23114 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
23115 }
23116
23117 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
23118 {
23119 vkCmdEndRenderPass( m_commandBuffer );
23120 }
23121
23122 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
23123 {
23124 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
23125 }
23126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23127 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
23128 {
23129 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
23130 }
23131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23132
23133 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
23134 {
23135 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
23136 }
23137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23138 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
23139 {
23140 DebugMarkerMarkerInfoEXT markerInfo;
23141 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
23142 return markerInfo;
23143 }
23144#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23145
23146 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
23147 {
23148 vkCmdDebugMarkerEndEXT( m_commandBuffer );
23149 }
23150
23151 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
23152 {
23153 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
23154 }
23155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23156 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
23157 {
23158 DebugMarkerMarkerInfoEXT markerInfo;
23159 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
23160 return markerInfo;
23161 }
23162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23163
23164 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
23165 {
23166 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
23167 }
23168
23169 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
23170 {
23171 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
23172 }
23173
23174 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
23175 {
23176 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
23177 }
23178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23179 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
23180 {
23181 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
23182 }
23183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23184
23185 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
23186 {
23187 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
23188 }
23189#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23190 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
23191 {
23192 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
23193 }
23194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070023195
23196 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
23197 {
23198 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
23199 }
23200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23201 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
23202 {
23203 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
23204 }
23205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23206
23207 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
23208 {
23209 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
23210 }
23211
23212 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
23213 {
23214 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
23215 }
23216
23217 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
23218 {
23219 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
23220 }
23221
23222 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
23223 {
23224 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
23225 }
23226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23227 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
23228 {
23229 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
23230 }
23231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23232
23233 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
23234 {
23235 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
23236 }
23237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23238 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
23239 {
23240 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
23241 }
23242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023243
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023244 struct SubmitInfo
23245 {
23246 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 )
23247 : sType( StructureType::eSubmitInfo )
23248 , pNext( nullptr )
23249 , waitSemaphoreCount( waitSemaphoreCount_ )
23250 , pWaitSemaphores( pWaitSemaphores_ )
23251 , pWaitDstStageMask( pWaitDstStageMask_ )
23252 , commandBufferCount( commandBufferCount_ )
23253 , pCommandBuffers( pCommandBuffers_ )
23254 , signalSemaphoreCount( signalSemaphoreCount_ )
23255 , pSignalSemaphores( pSignalSemaphores_ )
23256 {
23257 }
23258
23259 SubmitInfo( VkSubmitInfo const & rhs )
23260 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023261 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023262 }
23263
23264 SubmitInfo& operator=( VkSubmitInfo const & rhs )
23265 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023266 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023267 return *this;
23268 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023269 SubmitInfo& setPNext( const void* pNext_ )
23270 {
23271 pNext = pNext_;
23272 return *this;
23273 }
23274
23275 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
23276 {
23277 waitSemaphoreCount = waitSemaphoreCount_;
23278 return *this;
23279 }
23280
23281 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
23282 {
23283 pWaitSemaphores = pWaitSemaphores_;
23284 return *this;
23285 }
23286
23287 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
23288 {
23289 pWaitDstStageMask = pWaitDstStageMask_;
23290 return *this;
23291 }
23292
23293 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
23294 {
23295 commandBufferCount = commandBufferCount_;
23296 return *this;
23297 }
23298
23299 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
23300 {
23301 pCommandBuffers = pCommandBuffers_;
23302 return *this;
23303 }
23304
23305 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
23306 {
23307 signalSemaphoreCount = signalSemaphoreCount_;
23308 return *this;
23309 }
23310
23311 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
23312 {
23313 pSignalSemaphores = pSignalSemaphores_;
23314 return *this;
23315 }
23316
23317 operator const VkSubmitInfo&() const
23318 {
23319 return *reinterpret_cast<const VkSubmitInfo*>(this);
23320 }
23321
23322 bool operator==( SubmitInfo const& rhs ) const
23323 {
23324 return ( sType == rhs.sType )
23325 && ( pNext == rhs.pNext )
23326 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
23327 && ( pWaitSemaphores == rhs.pWaitSemaphores )
23328 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
23329 && ( commandBufferCount == rhs.commandBufferCount )
23330 && ( pCommandBuffers == rhs.pCommandBuffers )
23331 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
23332 && ( pSignalSemaphores == rhs.pSignalSemaphores );
23333 }
23334
23335 bool operator!=( SubmitInfo const& rhs ) const
23336 {
23337 return !operator==( rhs );
23338 }
23339
23340 private:
23341 StructureType sType;
23342
23343 public:
23344 const void* pNext;
23345 uint32_t waitSemaphoreCount;
23346 const Semaphore* pWaitSemaphores;
23347 const PipelineStageFlags* pWaitDstStageMask;
23348 uint32_t commandBufferCount;
23349 const CommandBuffer* pCommandBuffers;
23350 uint32_t signalSemaphoreCount;
23351 const Semaphore* pSignalSemaphores;
23352 };
23353 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
23354
23355 class Queue
23356 {
23357 public:
23358 Queue()
23359 : m_queue(VK_NULL_HANDLE)
23360 {}
23361
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023362 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023363 : m_queue(VK_NULL_HANDLE)
23364 {}
23365
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023366 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
23367 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023368 {}
23369
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023370#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023371 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023372 {
23373 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023374 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023375 }
23376#endif
23377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023378 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023379 {
23380 m_queue = VK_NULL_HANDLE;
23381 return *this;
23382 }
23383
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023384 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023385 {
23386 return m_queue == rhs.m_queue;
23387 }
23388
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023389 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023390 {
23391 return m_queue != rhs.m_queue;
23392 }
23393
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023394 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023395 {
23396 return m_queue < rhs.m_queue;
23397 }
23398
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023399 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023401 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23403
23404#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023405 Result waitIdle() const;
23406#else
23407 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23409
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023410 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023412 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23414
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023415 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023417 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023418#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23419
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023420
23421
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023422 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023423 {
23424 return m_queue;
23425 }
23426
23427 explicit operator bool() const
23428 {
23429 return m_queue != VK_NULL_HANDLE;
23430 }
23431
23432 bool operator!() const
23433 {
23434 return m_queue == VK_NULL_HANDLE;
23435 }
23436
23437 private:
23438 VkQueue m_queue;
23439 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023440
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023441 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
23442
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023443 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
23444 {
23445 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
23446 }
23447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23448 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
23449 {
23450 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
23451 return createResultValue( result, "vk::Queue::submit" );
23452 }
23453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23454
23455#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
23456 VULKAN_HPP_INLINE Result Queue::waitIdle() const
23457 {
23458 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
23459 }
23460#else
23461 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
23462 {
23463 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
23464 return createResultValue( result, "vk::Queue::waitIdle" );
23465 }
23466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23467
23468 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
23469 {
23470 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
23471 }
23472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23473 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
23474 {
23475 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
23476 return createResultValue( result, "vk::Queue::bindSparse" );
23477 }
23478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23479
23480 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
23481 {
23482 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
23483 }
23484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23485 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
23486 {
23487 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
23488 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
23489 }
23490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023491
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023492#ifndef VULKAN_HPP_NO_SMART_HANDLE
23493 class BufferDeleter;
23494 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
23495 class BufferViewDeleter;
23496 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
23497 class CommandBufferDeleter;
23498 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
23499 class CommandPoolDeleter;
23500 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
23501 class DescriptorPoolDeleter;
23502 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
23503 class DescriptorSetDeleter;
23504 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
23505 class DescriptorSetLayoutDeleter;
23506 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070023507 class DescriptorUpdateTemplateKHRDeleter;
23508 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023509 class DeviceMemoryDeleter;
23510 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
23511 class EventDeleter;
23512 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
23513 class FenceDeleter;
23514 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
23515 class FramebufferDeleter;
23516 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
23517 class ImageDeleter;
23518 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
23519 class ImageViewDeleter;
23520 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
23521 class IndirectCommandsLayoutNVXDeleter;
23522 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
23523 class ObjectTableNVXDeleter;
23524 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
23525 class PipelineDeleter;
23526 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
23527 class PipelineCacheDeleter;
23528 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
23529 class PipelineLayoutDeleter;
23530 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
23531 class QueryPoolDeleter;
23532 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
23533 class RenderPassDeleter;
23534 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
23535 class SamplerDeleter;
23536 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
23537 class SemaphoreDeleter;
23538 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
23539 class ShaderModuleDeleter;
23540 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
23541 class SwapchainKHRDeleter;
23542 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
23543#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23544
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023545 class Device
23546 {
23547 public:
23548 Device()
23549 : m_device(VK_NULL_HANDLE)
23550 {}
23551
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023552 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023553 : m_device(VK_NULL_HANDLE)
23554 {}
23555
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023556 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
23557 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023558 {}
23559
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023560#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023561 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023562 {
23563 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023564 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023565 }
23566#endif
23567
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023568 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023569 {
23570 m_device = VK_NULL_HANDLE;
23571 return *this;
23572 }
23573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023574 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023575 {
23576 return m_device == rhs.m_device;
23577 }
23578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023579 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023580 {
23581 return m_device != rhs.m_device;
23582 }
23583
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023584 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023585 {
23586 return m_device < rhs.m_device;
23587 }
23588
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023589 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023591 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23593
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023594 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023596 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023597#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23598
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023599 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023601 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23603
23604#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023605 Result waitIdle() const;
23606#else
23607 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23609
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023610 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023612 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23613#ifndef VULKAN_HPP_NO_SMART_HANDLE
23614 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23615#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23617
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023618 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023619#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023620 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23622
23623 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
23624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23625 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
23626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23627
23628 void unmapMemory( DeviceMemory memory ) const;
23629
23630 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23631#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23632 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23633#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23634
23635 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23637 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23639
23640 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
23641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23642 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
23643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23644
23645 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
23646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23647 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23649
23650#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023651 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23652#else
23653 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023655
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023656 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023657#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023658 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023659#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23660
23661#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023662 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
23663#else
23664 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23666
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023667 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023669 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
23670 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23672
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023673 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023675 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23676#ifndef VULKAN_HPP_NO_SMART_HANDLE
23677 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23678#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23680
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023681 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023683 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23685
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023686 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023688 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23690
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023691 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023692
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023693 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023695 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
23696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23697
23698 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
23699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23700 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23701#ifndef VULKAN_HPP_NO_SMART_HANDLE
23702 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23703#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23705
23706 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
23707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23708 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23709#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23710
23711 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
23712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23713 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23714#ifndef VULKAN_HPP_NO_SMART_HANDLE
23715 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23716#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23718
23719 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
23720#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23721 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023722#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23723
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023724 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023725
23726#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023727 Result setEvent( Event event ) const;
23728#else
23729 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23731
23732#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023733 Result resetEvent( Event event ) const;
23734#else
23735 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23737
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023738 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023740 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23741#ifndef VULKAN_HPP_NO_SMART_HANDLE
23742 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23743#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23745
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023746 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023748 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23750
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023751 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 -060023752#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23753 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023754 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 -060023755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23756
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023757 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023759 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23760#ifndef VULKAN_HPP_NO_SMART_HANDLE
23761 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23762#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23764
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023765 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023767 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23769
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023770 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023772 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23773#ifndef VULKAN_HPP_NO_SMART_HANDLE
23774 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23775#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23777
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023778 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023780 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23782
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023783 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023785 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23786#ifndef VULKAN_HPP_NO_SMART_HANDLE
23787 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23788#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23790
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023791 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023793 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23795
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023796 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023797#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023798 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23800
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023801 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023802#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023803 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23804#ifndef VULKAN_HPP_NO_SMART_HANDLE
23805 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23806#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23808
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023809 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023811 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023814 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023816 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23817#ifndef VULKAN_HPP_NO_SMART_HANDLE
23818 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23819#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023820#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23821
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023822 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023824 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23826
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023827 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023828#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023829 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23830#ifndef VULKAN_HPP_NO_SMART_HANDLE
23831 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23832#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023835 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023837 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23839
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023840 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023841#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023842 template <typename Allocator = std::allocator<uint8_t>>
23843 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023844#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23845
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023846 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023848 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23850
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023851 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023853 template <typename Allocator = std::allocator<Pipeline>>
23854 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23855 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23856#ifndef VULKAN_HPP_NO_SMART_HANDLE
23857 template <typename Allocator = std::allocator<Pipeline>>
23858 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23859 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23860#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23862
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023863 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023865 template <typename Allocator = std::allocator<Pipeline>>
23866 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23867 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23868#ifndef VULKAN_HPP_NO_SMART_HANDLE
23869 template <typename Allocator = std::allocator<Pipeline>>
23870 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23871 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23872#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23874
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023875 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023877 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23879
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023880 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023881#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023882 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23883#ifndef VULKAN_HPP_NO_SMART_HANDLE
23884 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23885#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023886#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23887
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023888 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023890 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23892
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023893 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023895 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23896#ifndef VULKAN_HPP_NO_SMART_HANDLE
23897 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23898#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23900
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023901 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023902#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023903 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23905
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023906 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023908 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23909#ifndef VULKAN_HPP_NO_SMART_HANDLE
23910 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23911#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23913
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023914 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023916 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023919 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023921 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23922#ifndef VULKAN_HPP_NO_SMART_HANDLE
23923 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23924#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23926
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023927 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023928#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023929 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23931
23932#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023933 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23934#else
23935 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23937
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023938 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023940 template <typename Allocator = std::allocator<DescriptorSet>>
23941 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23942#ifndef VULKAN_HPP_NO_SMART_HANDLE
23943 template <typename Allocator = std::allocator<DescriptorSet>>
23944 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23945#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23947
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023948 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023950 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023953 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023955 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023956#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023958 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023960 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23961#ifndef VULKAN_HPP_NO_SMART_HANDLE
23962 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23963#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023966 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023968 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23970
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023971 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023973 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23974#ifndef VULKAN_HPP_NO_SMART_HANDLE
23975 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23976#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023979 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023981 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023984 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023986 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023989 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023991 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23992#ifndef VULKAN_HPP_NO_SMART_HANDLE
23993 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23994#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23996
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023997 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023999 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024000#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24001
24002#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024003 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
24004#else
24005 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24007
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024008 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024010 template <typename Allocator = std::allocator<CommandBuffer>>
24011 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
24012#ifndef VULKAN_HPP_NO_SMART_HANDLE
24013 template <typename Allocator = std::allocator<CommandBuffer>>
24014 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
24015#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24017
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024018 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024019#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024020 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24022
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024023 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024025 template <typename Allocator = std::allocator<SwapchainKHR>>
24026 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24027 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24028#ifndef VULKAN_HPP_NO_SMART_HANDLE
24029 template <typename Allocator = std::allocator<SwapchainKHR>>
24030 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24031 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24032#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024035 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024037 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24038#ifndef VULKAN_HPP_NO_SMART_HANDLE
24039 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24040#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024041#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24042
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024043 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024044#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024045 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024046#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24047
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024048 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024049#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024050 template <typename Allocator = std::allocator<Image>>
24051 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24053
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024054 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024055#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024056 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024059 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024061 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024064 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024066 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24068
Lenny Komow6501c122016-08-31 15:03:49 -060024069#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024070 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
24071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24072 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
24073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060024074#endif /*VK_USE_PLATFORM_WIN32_KHR*/
24075
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024076 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060024077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024078 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24079#ifndef VULKAN_HPP_NO_SMART_HANDLE
24080 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24081#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060024082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24083
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024084 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024086 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24088
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024089 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024091 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24092#ifndef VULKAN_HPP_NO_SMART_HANDLE
24093 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24094#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024097 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024099 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024102 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024104 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024107 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024109 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24111
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024112#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024113 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024114#else
24115 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
24116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024117
Mark Lobodzinski3289d762017-04-03 08:22:04 -060024118#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070024119 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
24120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24121 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
24122#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060024123#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070024124
Mark Lobodzinski3289d762017-04-03 08:22:04 -060024125#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070024126 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
24127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24128 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
24129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060024130#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070024131
24132 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
24133#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24134 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
24135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24136
24137 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
24138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24139 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
24140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24141
24142#ifdef VK_USE_PLATFORM_WIN32_KHX
24143 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
24144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24145 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
24146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24147#endif /*VK_USE_PLATFORM_WIN32_KHX*/
24148
24149#ifdef VK_USE_PLATFORM_WIN32_KHX
24150 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
24151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24152 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
24153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24154#endif /*VK_USE_PLATFORM_WIN32_KHX*/
24155
24156 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
24157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24158 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
24159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24160
24161 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
24162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24163 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
24164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24165
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024166 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024168 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24170
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024171 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070024172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024173 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070024174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24175
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024176 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070024177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024178 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070024179#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24180
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024181 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070024182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024183 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070024184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24185
Mark Young0f183a82017-02-28 09:58:04 -070024186 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
24187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24188 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
24189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24190
24191 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
24192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24193 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
24194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24195
24196 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
24197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24198 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
24199#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24200
24201 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
24202#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24203 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
24204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24205
24206 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
24207#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24208 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
24209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24210
24211 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
24212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24213 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
24214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24215
24216 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
24217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24218 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24219#ifndef VULKAN_HPP_NO_SMART_HANDLE
24220 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24221#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24223
24224 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
24225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24226 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
24227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24228
24229 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
24230
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024231 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
24232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24233 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
24234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24235
Mark Lobodzinski54385432017-05-15 10:27:52 -060024236 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
24237
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024238 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
24239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24240 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
24241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24242
24243 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
24244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24245 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
24246 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
24247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024249
24250
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024251 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024252 {
24253 return m_device;
24254 }
24255
24256 explicit operator bool() const
24257 {
24258 return m_device != VK_NULL_HANDLE;
24259 }
24260
24261 bool operator!() const
24262 {
24263 return m_device == VK_NULL_HANDLE;
24264 }
24265
24266 private:
24267 VkDevice m_device;
24268 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024269
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024270 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
24271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024272#ifndef VULKAN_HPP_NO_SMART_HANDLE
24273 class BufferDeleter
24274 {
24275 public:
24276 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24277 : m_device( device )
24278 , m_allocator( allocator )
24279 {}
24280
24281 void operator()( Buffer buffer )
24282 {
24283 m_device.destroyBuffer( buffer, m_allocator );
24284 }
24285
24286 private:
24287 Device m_device;
24288 Optional<const AllocationCallbacks> m_allocator;
24289 };
24290
24291 class BufferViewDeleter
24292 {
24293 public:
24294 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24295 : m_device( device )
24296 , m_allocator( allocator )
24297 {}
24298
24299 void operator()( BufferView bufferView )
24300 {
24301 m_device.destroyBufferView( bufferView, m_allocator );
24302 }
24303
24304 private:
24305 Device m_device;
24306 Optional<const AllocationCallbacks> m_allocator;
24307 };
24308
24309 class CommandBufferDeleter
24310 {
24311 public:
24312 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
24313 : m_device( device )
24314 , m_commandPool( commandPool )
24315 {}
24316
24317 void operator()( CommandBuffer commandBuffer )
24318 {
24319 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
24320 }
24321
24322 private:
24323 Device m_device;
24324 CommandPool m_commandPool;
24325 };
24326
24327 class CommandPoolDeleter
24328 {
24329 public:
24330 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24331 : m_device( device )
24332 , m_allocator( allocator )
24333 {}
24334
24335 void operator()( CommandPool commandPool )
24336 {
24337 m_device.destroyCommandPool( commandPool, m_allocator );
24338 }
24339
24340 private:
24341 Device m_device;
24342 Optional<const AllocationCallbacks> m_allocator;
24343 };
24344
24345 class DescriptorPoolDeleter
24346 {
24347 public:
24348 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24349 : m_device( device )
24350 , m_allocator( allocator )
24351 {}
24352
24353 void operator()( DescriptorPool descriptorPool )
24354 {
24355 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
24356 }
24357
24358 private:
24359 Device m_device;
24360 Optional<const AllocationCallbacks> m_allocator;
24361 };
24362
24363 class DescriptorSetDeleter
24364 {
24365 public:
24366 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
24367 : m_device( device )
24368 , m_descriptorPool( descriptorPool )
24369 {}
24370
24371 void operator()( DescriptorSet descriptorSet )
24372 {
24373 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
24374 }
24375
24376 private:
24377 Device m_device;
24378 DescriptorPool m_descriptorPool;
24379 };
24380
24381 class DescriptorSetLayoutDeleter
24382 {
24383 public:
24384 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24385 : m_device( device )
24386 , m_allocator( allocator )
24387 {}
24388
24389 void operator()( DescriptorSetLayout descriptorSetLayout )
24390 {
24391 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
24392 }
24393
24394 private:
24395 Device m_device;
24396 Optional<const AllocationCallbacks> m_allocator;
24397 };
24398
Mark Young0f183a82017-02-28 09:58:04 -070024399 class DescriptorUpdateTemplateKHRDeleter
24400 {
24401 public:
24402 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24403 : m_device( device )
24404 , m_allocator( allocator )
24405 {}
24406
24407 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
24408 {
24409 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
24410 }
24411
24412 private:
24413 Device m_device;
24414 Optional<const AllocationCallbacks> m_allocator;
24415 };
24416
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024417 class DeviceMemoryDeleter
24418 {
24419 public:
24420 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24421 : m_device( device )
24422 , m_allocator( allocator )
24423 {}
24424
24425 void operator()( DeviceMemory deviceMemory )
24426 {
24427 m_device.freeMemory( deviceMemory, m_allocator );
24428 }
24429
24430 private:
24431 Device m_device;
24432 Optional<const AllocationCallbacks> m_allocator;
24433 };
24434
24435 class EventDeleter
24436 {
24437 public:
24438 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24439 : m_device( device )
24440 , m_allocator( allocator )
24441 {}
24442
24443 void operator()( Event event )
24444 {
24445 m_device.destroyEvent( event, m_allocator );
24446 }
24447
24448 private:
24449 Device m_device;
24450 Optional<const AllocationCallbacks> m_allocator;
24451 };
24452
24453 class FenceDeleter
24454 {
24455 public:
24456 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24457 : m_device( device )
24458 , m_allocator( allocator )
24459 {}
24460
24461 void operator()( Fence fence )
24462 {
24463 m_device.destroyFence( fence, m_allocator );
24464 }
24465
24466 private:
24467 Device m_device;
24468 Optional<const AllocationCallbacks> m_allocator;
24469 };
24470
24471 class FramebufferDeleter
24472 {
24473 public:
24474 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24475 : m_device( device )
24476 , m_allocator( allocator )
24477 {}
24478
24479 void operator()( Framebuffer framebuffer )
24480 {
24481 m_device.destroyFramebuffer( framebuffer, m_allocator );
24482 }
24483
24484 private:
24485 Device m_device;
24486 Optional<const AllocationCallbacks> m_allocator;
24487 };
24488
24489 class ImageDeleter
24490 {
24491 public:
24492 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24493 : m_device( device )
24494 , m_allocator( allocator )
24495 {}
24496
24497 void operator()( Image image )
24498 {
24499 m_device.destroyImage( image, m_allocator );
24500 }
24501
24502 private:
24503 Device m_device;
24504 Optional<const AllocationCallbacks> m_allocator;
24505 };
24506
24507 class ImageViewDeleter
24508 {
24509 public:
24510 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24511 : m_device( device )
24512 , m_allocator( allocator )
24513 {}
24514
24515 void operator()( ImageView imageView )
24516 {
24517 m_device.destroyImageView( imageView, m_allocator );
24518 }
24519
24520 private:
24521 Device m_device;
24522 Optional<const AllocationCallbacks> m_allocator;
24523 };
24524
24525 class IndirectCommandsLayoutNVXDeleter
24526 {
24527 public:
24528 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24529 : m_device( device )
24530 , m_allocator( allocator )
24531 {}
24532
24533 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
24534 {
24535 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
24536 }
24537
24538 private:
24539 Device m_device;
24540 Optional<const AllocationCallbacks> m_allocator;
24541 };
24542
24543 class ObjectTableNVXDeleter
24544 {
24545 public:
24546 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24547 : m_device( device )
24548 , m_allocator( allocator )
24549 {}
24550
24551 void operator()( ObjectTableNVX objectTableNVX )
24552 {
24553 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
24554 }
24555
24556 private:
24557 Device m_device;
24558 Optional<const AllocationCallbacks> m_allocator;
24559 };
24560
24561 class PipelineDeleter
24562 {
24563 public:
24564 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24565 : m_device( device )
24566 , m_allocator( allocator )
24567 {}
24568
24569 void operator()( Pipeline pipeline )
24570 {
24571 m_device.destroyPipeline( pipeline, m_allocator );
24572 }
24573
24574 private:
24575 Device m_device;
24576 Optional<const AllocationCallbacks> m_allocator;
24577 };
24578
24579 class PipelineCacheDeleter
24580 {
24581 public:
24582 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24583 : m_device( device )
24584 , m_allocator( allocator )
24585 {}
24586
24587 void operator()( PipelineCache pipelineCache )
24588 {
24589 m_device.destroyPipelineCache( pipelineCache, m_allocator );
24590 }
24591
24592 private:
24593 Device m_device;
24594 Optional<const AllocationCallbacks> m_allocator;
24595 };
24596
24597 class PipelineLayoutDeleter
24598 {
24599 public:
24600 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24601 : m_device( device )
24602 , m_allocator( allocator )
24603 {}
24604
24605 void operator()( PipelineLayout pipelineLayout )
24606 {
24607 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
24608 }
24609
24610 private:
24611 Device m_device;
24612 Optional<const AllocationCallbacks> m_allocator;
24613 };
24614
24615 class QueryPoolDeleter
24616 {
24617 public:
24618 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24619 : m_device( device )
24620 , m_allocator( allocator )
24621 {}
24622
24623 void operator()( QueryPool queryPool )
24624 {
24625 m_device.destroyQueryPool( queryPool, m_allocator );
24626 }
24627
24628 private:
24629 Device m_device;
24630 Optional<const AllocationCallbacks> m_allocator;
24631 };
24632
24633 class RenderPassDeleter
24634 {
24635 public:
24636 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24637 : m_device( device )
24638 , m_allocator( allocator )
24639 {}
24640
24641 void operator()( RenderPass renderPass )
24642 {
24643 m_device.destroyRenderPass( renderPass, m_allocator );
24644 }
24645
24646 private:
24647 Device m_device;
24648 Optional<const AllocationCallbacks> m_allocator;
24649 };
24650
24651 class SamplerDeleter
24652 {
24653 public:
24654 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24655 : m_device( device )
24656 , m_allocator( allocator )
24657 {}
24658
24659 void operator()( Sampler sampler )
24660 {
24661 m_device.destroySampler( sampler, m_allocator );
24662 }
24663
24664 private:
24665 Device m_device;
24666 Optional<const AllocationCallbacks> m_allocator;
24667 };
24668
24669 class SemaphoreDeleter
24670 {
24671 public:
24672 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24673 : m_device( device )
24674 , m_allocator( allocator )
24675 {}
24676
24677 void operator()( Semaphore semaphore )
24678 {
24679 m_device.destroySemaphore( semaphore, m_allocator );
24680 }
24681
24682 private:
24683 Device m_device;
24684 Optional<const AllocationCallbacks> m_allocator;
24685 };
24686
24687 class ShaderModuleDeleter
24688 {
24689 public:
24690 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24691 : m_device( device )
24692 , m_allocator( allocator )
24693 {}
24694
24695 void operator()( ShaderModule shaderModule )
24696 {
24697 m_device.destroyShaderModule( shaderModule, m_allocator );
24698 }
24699
24700 private:
24701 Device m_device;
24702 Optional<const AllocationCallbacks> m_allocator;
24703 };
24704
24705 class SwapchainKHRDeleter
24706 {
24707 public:
24708 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24709 : m_device( device )
24710 , m_allocator( allocator )
24711 {}
24712
24713 void operator()( SwapchainKHR swapchainKHR )
24714 {
24715 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
24716 }
24717
24718 private:
24719 Device m_device;
24720 Optional<const AllocationCallbacks> m_allocator;
24721 };
24722#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24723
24724 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
24725 {
24726 return vkGetDeviceProcAddr( m_device, pName );
24727 }
24728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24729 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
24730 {
24731 return vkGetDeviceProcAddr( m_device, name.c_str() );
24732 }
24733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24734
24735 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
24736 {
24737 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24738 }
24739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24740 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
24741 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024742 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024743 }
24744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24745
24746 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
24747 {
24748 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
24749 }
24750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24751 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
24752 {
24753 Queue queue;
24754 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
24755 return queue;
24756 }
24757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24758
24759#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24760 VULKAN_HPP_INLINE Result Device::waitIdle() const
24761 {
24762 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24763 }
24764#else
24765 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
24766 {
24767 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24768 return createResultValue( result, "vk::Device::waitIdle" );
24769 }
24770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24771
24772 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
24773 {
24774 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
24775 }
24776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24777 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24778 {
24779 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024780 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 -070024781 return createResultValue( result, memory, "vk::Device::allocateMemory" );
24782 }
24783#ifndef VULKAN_HPP_NO_SMART_HANDLE
24784 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24785 {
24786 DeviceMemoryDeleter deleter( *this, allocator );
24787 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
24788 }
24789#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24791
24792 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
24793 {
24794 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24795 }
24796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24797 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
24798 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024799 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024800 }
24801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24802
24803 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
24804 {
24805 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
24806 }
24807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24808 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
24809 {
24810 void* pData;
24811 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
24812 return createResultValue( result, pData, "vk::Device::mapMemory" );
24813 }
24814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24815
24816 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
24817 {
24818 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
24819 }
24820
24821 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24822 {
24823 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24824 }
24825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24826 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24827 {
24828 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24829 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
24830 }
24831#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24832
24833 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24834 {
24835 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24836 }
24837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24838 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24839 {
24840 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24841 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24842 }
24843#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24844
24845 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24846 {
24847 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24848 }
24849#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24850 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24851 {
24852 DeviceSize committedMemoryInBytes;
24853 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24854 return committedMemoryInBytes;
24855 }
24856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24857
24858 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24859 {
24860 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24861 }
24862#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24863 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24864 {
24865 MemoryRequirements memoryRequirements;
24866 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24867 return memoryRequirements;
24868 }
24869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24870
24871#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24872 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24873 {
24874 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24875 }
24876#else
24877 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24878 {
24879 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24880 return createResultValue( result, "vk::Device::bindBufferMemory" );
24881 }
24882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24883
24884 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24885 {
24886 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24887 }
24888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24889 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24890 {
24891 MemoryRequirements memoryRequirements;
24892 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24893 return memoryRequirements;
24894 }
24895#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24896
24897#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24898 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24899 {
24900 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24901 }
24902#else
24903 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24904 {
24905 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24906 return createResultValue( result, "vk::Device::bindImageMemory" );
24907 }
24908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24909
24910 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24911 {
24912 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24913 }
24914#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24915 template <typename Allocator>
24916 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24917 {
24918 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24919 uint32_t sparseMemoryRequirementCount;
24920 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24921 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24922 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24923 return sparseMemoryRequirements;
24924 }
24925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24926
24927 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24928 {
24929 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24930 }
24931#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24932 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24933 {
24934 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024935 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 -070024936 return createResultValue( result, fence, "vk::Device::createFence" );
24937 }
24938#ifndef VULKAN_HPP_NO_SMART_HANDLE
24939 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24940 {
24941 FenceDeleter deleter( *this, allocator );
24942 return UniqueFence( createFence( createInfo, allocator ), deleter );
24943 }
24944#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24946
24947 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24948 {
24949 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24950 }
24951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24952 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24953 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024954 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024955 }
24956#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24957
24958 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24959 {
24960 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24961 }
24962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24963 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24964 {
24965 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24966 return createResultValue( result, "vk::Device::resetFences" );
24967 }
24968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24969
24970#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24971 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24972 {
24973 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24974 }
24975#else
24976 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24977 {
24978 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24979 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24980 }
24981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24982
24983 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24984 {
24985 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24986 }
24987#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24988 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24989 {
24990 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24991 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24992 }
24993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24994
24995 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24996 {
24997 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24998 }
24999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25000 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25001 {
25002 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025003 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 -070025004 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
25005 }
25006#ifndef VULKAN_HPP_NO_SMART_HANDLE
25007 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25008 {
25009 SemaphoreDeleter deleter( *this, allocator );
25010 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
25011 }
25012#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25014
25015 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
25016 {
25017 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25018 }
25019#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25020 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
25021 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025022 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025023 }
25024#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25025
25026 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
25027 {
25028 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
25029 }
25030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25031 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25032 {
25033 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025034 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 -070025035 return createResultValue( result, event, "vk::Device::createEvent" );
25036 }
25037#ifndef VULKAN_HPP_NO_SMART_HANDLE
25038 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25039 {
25040 EventDeleter deleter( *this, allocator );
25041 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
25042 }
25043#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25044#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25045
25046 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
25047 {
25048 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25049 }
25050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25051 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
25052 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025053 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025054 }
25055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25056
25057#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25058 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
25059 {
25060 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
25061 }
25062#else
25063 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
25064 {
25065 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
25066 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
25067 }
25068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25069
25070#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25071 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
25072 {
25073 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
25074 }
25075#else
25076 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
25077 {
25078 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
25079 return createResultValue( result, "vk::Device::setEvent" );
25080 }
25081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25082
25083#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25084 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
25085 {
25086 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
25087 }
25088#else
25089 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
25090 {
25091 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
25092 return createResultValue( result, "vk::Device::resetEvent" );
25093 }
25094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25095
25096 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
25097 {
25098 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
25099 }
25100#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25101 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25102 {
25103 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025104 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 -070025105 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
25106 }
25107#ifndef VULKAN_HPP_NO_SMART_HANDLE
25108 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25109 {
25110 QueryPoolDeleter deleter( *this, allocator );
25111 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
25112 }
25113#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25115
25116 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
25117 {
25118 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25119 }
25120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25121 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
25122 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025123 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025124 }
25125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25126
25127 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
25128 {
25129 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
25130 }
25131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25132 template <typename T>
25133 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
25134 {
25135 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 ) ) );
25136 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
25137 }
25138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25139
25140 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
25141 {
25142 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
25143 }
25144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25145 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25146 {
25147 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025148 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 -070025149 return createResultValue( result, buffer, "vk::Device::createBuffer" );
25150 }
25151#ifndef VULKAN_HPP_NO_SMART_HANDLE
25152 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25153 {
25154 BufferDeleter deleter( *this, allocator );
25155 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
25156 }
25157#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25158#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25159
25160 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
25161 {
25162 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25163 }
25164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25165 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
25166 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025167 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025168 }
25169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25170
25171 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
25172 {
25173 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
25174 }
25175#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25176 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25177 {
25178 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025179 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 -070025180 return createResultValue( result, view, "vk::Device::createBufferView" );
25181 }
25182#ifndef VULKAN_HPP_NO_SMART_HANDLE
25183 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25184 {
25185 BufferViewDeleter deleter( *this, allocator );
25186 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
25187 }
25188#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25190
25191 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
25192 {
25193 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25194 }
25195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25196 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
25197 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025198 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025199 }
25200#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25201
25202 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
25203 {
25204 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
25205 }
25206#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25207 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25208 {
25209 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025210 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 -070025211 return createResultValue( result, image, "vk::Device::createImage" );
25212 }
25213#ifndef VULKAN_HPP_NO_SMART_HANDLE
25214 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25215 {
25216 ImageDeleter deleter( *this, allocator );
25217 return UniqueImage( createImage( createInfo, allocator ), deleter );
25218 }
25219#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25221
25222 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
25223 {
25224 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25225 }
25226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25227 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
25228 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025229 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025230 }
25231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25232
25233 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
25234 {
25235 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
25236 }
25237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25238 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
25239 {
25240 SubresourceLayout layout;
25241 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
25242 return layout;
25243 }
25244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25245
25246 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
25247 {
25248 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
25249 }
25250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25251 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25252 {
25253 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025254 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 -070025255 return createResultValue( result, view, "vk::Device::createImageView" );
25256 }
25257#ifndef VULKAN_HPP_NO_SMART_HANDLE
25258 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25259 {
25260 ImageViewDeleter deleter( *this, allocator );
25261 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
25262 }
25263#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25265
25266 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
25267 {
25268 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25269 }
25270#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25271 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
25272 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025273 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025274 }
25275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25276
25277 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
25278 {
25279 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
25280 }
25281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25282 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25283 {
25284 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025285 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 -070025286 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
25287 }
25288#ifndef VULKAN_HPP_NO_SMART_HANDLE
25289 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25290 {
25291 ShaderModuleDeleter deleter( *this, allocator );
25292 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
25293 }
25294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25296
25297 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
25298 {
25299 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25300 }
25301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25302 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
25303 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025304 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025305 }
25306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25307
25308 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
25309 {
25310 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
25311 }
25312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25313 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25314 {
25315 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025316 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 -070025317 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
25318 }
25319#ifndef VULKAN_HPP_NO_SMART_HANDLE
25320 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25321 {
25322 PipelineCacheDeleter deleter( *this, allocator );
25323 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
25324 }
25325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25327
25328 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
25329 {
25330 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25331 }
25332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25333 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
25334 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025335 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025336 }
25337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25338
25339 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
25340 {
25341 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
25342 }
25343#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25344 template <typename Allocator>
25345 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
25346 {
25347 std::vector<uint8_t,Allocator> data;
25348 size_t dataSize;
25349 Result result;
25350 do
25351 {
25352 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
25353 if ( ( result == Result::eSuccess ) && dataSize )
25354 {
25355 data.resize( dataSize );
25356 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
25357 }
25358 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025359 assert( dataSize <= data.size() );
25360 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025361 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
25362 }
25363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25364
25365 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
25366 {
25367 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
25368 }
25369#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25370 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
25371 {
25372 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
25373 return createResultValue( result, "vk::Device::mergePipelineCaches" );
25374 }
25375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25376
25377 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
25378 {
25379 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 ) ) );
25380 }
25381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25382 template <typename Allocator>
25383 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
25384 {
25385 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025386 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 -070025387 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
25388 }
25389 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25390 {
25391 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025392 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 -070025393 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
25394 }
25395#ifndef VULKAN_HPP_NO_SMART_HANDLE
25396 template <typename Allocator>
25397 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
25398 {
25399 PipelineDeleter deleter( *this, allocator );
25400 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
25401 std::vector<UniquePipeline> uniquePipelines;
25402 uniquePipelines.reserve( pipelines.size() );
25403 for ( auto pipeline : pipelines )
25404 {
25405 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
25406 }
25407 return uniquePipelines;
25408 }
25409 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25410 {
25411 PipelineDeleter deleter( *this, allocator );
25412 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
25413 }
25414#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25415#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25416
25417 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
25418 {
25419 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 ) ) );
25420 }
25421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25422 template <typename Allocator>
25423 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
25424 {
25425 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025426 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 -070025427 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
25428 }
25429 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25430 {
25431 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025432 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 -070025433 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
25434 }
25435#ifndef VULKAN_HPP_NO_SMART_HANDLE
25436 template <typename Allocator>
25437 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
25438 {
25439 PipelineDeleter deleter( *this, allocator );
25440 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
25441 std::vector<UniquePipeline> uniquePipelines;
25442 uniquePipelines.reserve( pipelines.size() );
25443 for ( auto pipeline : pipelines )
25444 {
25445 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
25446 }
25447 return uniquePipelines;
25448 }
25449 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25450 {
25451 PipelineDeleter deleter( *this, allocator );
25452 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
25453 }
25454#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25455#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25456
25457 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
25458 {
25459 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25460 }
25461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25462 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
25463 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025464 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025465 }
25466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25467
25468 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
25469 {
25470 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
25471 }
25472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25473 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25474 {
25475 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025476 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 -070025477 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
25478 }
25479#ifndef VULKAN_HPP_NO_SMART_HANDLE
25480 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25481 {
25482 PipelineLayoutDeleter deleter( *this, allocator );
25483 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
25484 }
25485#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25487
25488 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
25489 {
25490 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25491 }
25492#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25493 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
25494 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025495 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025496 }
25497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25498
25499 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
25500 {
25501 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
25502 }
25503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25504 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25505 {
25506 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025507 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 -070025508 return createResultValue( result, sampler, "vk::Device::createSampler" );
25509 }
25510#ifndef VULKAN_HPP_NO_SMART_HANDLE
25511 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25512 {
25513 SamplerDeleter deleter( *this, allocator );
25514 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
25515 }
25516#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25518
25519 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
25520 {
25521 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25522 }
25523#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25524 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
25525 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025526 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025527 }
25528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25529
25530 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
25531 {
25532 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
25533 }
25534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25535 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25536 {
25537 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025538 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 -070025539 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
25540 }
25541#ifndef VULKAN_HPP_NO_SMART_HANDLE
25542 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25543 {
25544 DescriptorSetLayoutDeleter deleter( *this, allocator );
25545 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
25546 }
25547#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25549
25550 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
25551 {
25552 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25553 }
25554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25555 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
25556 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025557 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025558 }
25559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25560
25561 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
25562 {
25563 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
25564 }
25565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25566 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25567 {
25568 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025569 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 -070025570 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
25571 }
25572#ifndef VULKAN_HPP_NO_SMART_HANDLE
25573 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25574 {
25575 DescriptorPoolDeleter deleter( *this, allocator );
25576 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
25577 }
25578#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25580
25581 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
25582 {
25583 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25584 }
25585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25586 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
25587 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025588 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025589 }
25590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25591
25592#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25593 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25594 {
25595 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25596 }
25597#else
25598 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25599 {
25600 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25601 return createResultValue( result, "vk::Device::resetDescriptorPool" );
25602 }
25603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25604
25605 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
25606 {
25607 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
25608 }
25609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25610 template <typename Allocator>
25611 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
25612 {
25613 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
25614 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
25615 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
25616 }
25617#ifndef VULKAN_HPP_NO_SMART_HANDLE
25618 template <typename Allocator>
25619 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
25620 {
25621 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
25622 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
25623 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
25624 uniqueDescriptorSets.reserve( descriptorSets.size() );
25625 for ( auto descriptorSet : descriptorSets )
25626 {
25627 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
25628 }
25629 return uniqueDescriptorSets;
25630 }
25631#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25633
25634 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
25635 {
25636 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
25637 }
25638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25639 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
25640 {
25641 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
25642 return createResultValue( result, "vk::Device::freeDescriptorSets" );
25643 }
25644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25645
25646 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
25647 {
25648 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
25649 }
25650#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25651 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
25652 {
25653 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
25654 }
25655#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25656
25657 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
25658 {
25659 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
25660 }
25661#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25662 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25663 {
25664 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025665 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 -070025666 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
25667 }
25668#ifndef VULKAN_HPP_NO_SMART_HANDLE
25669 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25670 {
25671 FramebufferDeleter deleter( *this, allocator );
25672 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
25673 }
25674#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25676
25677 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
25678 {
25679 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25680 }
25681#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25682 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
25683 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025684 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025685 }
25686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25687
25688 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
25689 {
25690 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
25691 }
25692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25693 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25694 {
25695 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025696 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 -070025697 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
25698 }
25699#ifndef VULKAN_HPP_NO_SMART_HANDLE
25700 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25701 {
25702 RenderPassDeleter deleter( *this, allocator );
25703 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
25704 }
25705#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25707
25708 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
25709 {
25710 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25711 }
25712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25713 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
25714 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025715 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025716 }
25717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25718
25719 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
25720 {
25721 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
25722 }
25723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25724 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
25725 {
25726 Extent2D granularity;
25727 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
25728 return granularity;
25729 }
25730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25731
25732 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
25733 {
25734 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
25735 }
25736#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25737 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25738 {
25739 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025740 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 -070025741 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
25742 }
25743#ifndef VULKAN_HPP_NO_SMART_HANDLE
25744 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25745 {
25746 CommandPoolDeleter deleter( *this, allocator );
25747 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
25748 }
25749#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25751
25752 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
25753 {
25754 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25755 }
25756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25757 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
25758 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025759 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025760 }
25761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25762
25763#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25764 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25765 {
25766 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25767 }
25768#else
25769 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25770 {
25771 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25772 return createResultValue( result, "vk::Device::resetCommandPool" );
25773 }
25774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25775
25776 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
25777 {
25778 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
25779 }
25780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25781 template <typename Allocator>
25782 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
25783 {
25784 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
25785 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
25786 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
25787 }
25788#ifndef VULKAN_HPP_NO_SMART_HANDLE
25789 template <typename Allocator>
25790 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
25791 {
25792 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
25793 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
25794 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
25795 uniqueCommandBuffers.reserve( commandBuffers.size() );
25796 for ( auto commandBuffer : commandBuffers )
25797 {
25798 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
25799 }
25800 return uniqueCommandBuffers;
25801 }
25802#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25804
25805 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25806 {
25807 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25808 }
25809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25810 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
25811 {
25812 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25813 }
25814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25815
25816 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
25817 {
25818 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
25819 }
25820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25821 template <typename Allocator>
25822 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25823 {
25824 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025825 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 -070025826 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
25827 }
25828 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25829 {
25830 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025831 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 -070025832 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
25833 }
25834#ifndef VULKAN_HPP_NO_SMART_HANDLE
25835 template <typename Allocator>
25836 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25837 {
25838 SwapchainKHRDeleter deleter( *this, allocator );
25839 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25840 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25841 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25842 for ( auto swapchainKHR : swapchainKHRs )
25843 {
25844 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25845 }
25846 return uniqueSwapchainKHRs;
25847 }
25848 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25849 {
25850 SwapchainKHRDeleter deleter( *this, allocator );
25851 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25852 }
25853#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25855
25856 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25857 {
25858 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25859 }
25860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25861 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25862 {
25863 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025864 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 -070025865 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25866 }
25867#ifndef VULKAN_HPP_NO_SMART_HANDLE
25868 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25869 {
25870 SwapchainKHRDeleter deleter( *this, allocator );
25871 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25872 }
25873#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25875
25876 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25877 {
25878 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25879 }
25880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25881 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25882 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025883 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025884 }
25885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25886
25887 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25888 {
25889 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25890 }
25891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25892 template <typename Allocator>
25893 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25894 {
25895 std::vector<Image,Allocator> swapchainImages;
25896 uint32_t swapchainImageCount;
25897 Result result;
25898 do
25899 {
25900 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25901 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25902 {
25903 swapchainImages.resize( swapchainImageCount );
25904 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25905 }
25906 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025907 assert( swapchainImageCount <= swapchainImages.size() );
25908 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025909 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25910 }
25911#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25912
25913 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25914 {
25915 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25916 }
25917#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25918 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25919 {
25920 uint32_t imageIndex;
25921 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25922 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25923 }
25924#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25925
25926 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25927 {
25928 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25929 }
25930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25931 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25932 {
25933 DebugMarkerObjectNameInfoEXT nameInfo;
25934 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25935 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25936 }
25937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25938
25939 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25940 {
25941 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25942 }
25943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25944 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25945 {
25946 DebugMarkerObjectTagInfoEXT tagInfo;
25947 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25948 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25949 }
25950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25951
25952#ifdef VK_USE_PLATFORM_WIN32_KHR
25953 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25954 {
25955 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25956 }
25957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25958 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25959 {
25960 HANDLE handle;
25961 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25962 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25963 }
25964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25965#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25966
25967 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25968 {
25969 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25970 }
25971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25972 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25973 {
25974 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025975 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 -070025976 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25977 }
25978#ifndef VULKAN_HPP_NO_SMART_HANDLE
25979 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25980 {
25981 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25982 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25983 }
25984#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25986
25987 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25988 {
25989 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25990 }
25991#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25992 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25993 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025994 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025995 }
25996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25997
25998 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25999 {
26000 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
26001 }
26002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26003 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
26004 {
26005 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026006 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 -070026007 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
26008 }
26009#ifndef VULKAN_HPP_NO_SMART_HANDLE
26010 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
26011 {
26012 ObjectTableNVXDeleter deleter( *this, allocator );
26013 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
26014 }
26015#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26017
26018 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
26019 {
26020 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26021 }
26022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26023 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
26024 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026025 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026026 }
26027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26028
26029 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
26030 {
26031 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
26032 }
26033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26034 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
26035 {
26036#ifdef VULKAN_HPP_NO_EXCEPTIONS
26037 assert( pObjectTableEntries.size() == objectIndices.size() );
26038#else
26039 if ( pObjectTableEntries.size() != objectIndices.size() )
26040 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026041 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026042 }
26043#endif // VULKAN_HPP_NO_EXCEPTIONS
26044 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
26045 return createResultValue( result, "vk::Device::registerObjectsNVX" );
26046 }
26047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26048
26049 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
26050 {
26051 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
26052 }
26053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26054 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
26055 {
26056#ifdef VULKAN_HPP_NO_EXCEPTIONS
26057 assert( objectEntryTypes.size() == objectIndices.size() );
26058#else
26059 if ( objectEntryTypes.size() != objectIndices.size() )
26060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026061 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026062 }
26063#endif // VULKAN_HPP_NO_EXCEPTIONS
26064 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
26065 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
26066 }
26067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26068
26069 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
26070 {
26071 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
26072 }
26073
Mark Lobodzinski3289d762017-04-03 08:22:04 -060026074#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070026075 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
26076 {
26077 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
26078 }
26079#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26080 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
26081 {
26082 HANDLE handle;
26083 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
26084 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
26085 }
26086#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060026087#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070026088
Mark Lobodzinski3289d762017-04-03 08:22:04 -060026089#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070026090 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
26091 {
26092 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
26093 }
26094#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26095 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
26096 {
26097 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
26098 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
26099 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
26100 }
26101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060026102#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070026103
26104 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
26105 {
26106 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
26107 }
26108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26109 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
26110 {
26111 int fd;
26112 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
26113 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
26114 }
26115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26116
26117 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
26118 {
26119 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
26120 }
26121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26122 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
26123 {
26124 MemoryFdPropertiesKHX memoryFdProperties;
26125 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
26126 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
26127 }
26128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26129
26130#ifdef VK_USE_PLATFORM_WIN32_KHX
26131 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
26132 {
26133 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
26134 }
26135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26136 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
26137 {
26138 HANDLE handle;
26139 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
26140 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
26141 }
26142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26143#endif /*VK_USE_PLATFORM_WIN32_KHX*/
26144
26145#ifdef VK_USE_PLATFORM_WIN32_KHX
26146 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
26147 {
26148 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
26149 }
26150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26151 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
26152 {
26153 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
26154 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
26155 }
26156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26157#endif /*VK_USE_PLATFORM_WIN32_KHX*/
26158
26159 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
26160 {
26161 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
26162 }
26163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26164 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
26165 {
26166 int fd;
26167 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
26168 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
26169 }
26170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26171
26172 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
26173 {
26174 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
26175 }
26176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26177 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
26178 {
26179 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
26180 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
26181 }
26182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26183
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026184 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
26185 {
26186 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
26187 }
26188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26189 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
26190 {
26191 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
26192 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
26193 }
26194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26195
26196 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
26197 {
26198 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
26199 }
26200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26201 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
26202 {
26203 Fence fence;
26204 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
26205 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
26206 }
26207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26208
26209 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
26210 {
26211 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 ) ) );
26212 }
26213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26214 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
26215 {
26216 Fence fence;
26217 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 ) ) );
26218 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
26219 }
26220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26221
26222 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
26223 {
26224 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
26225 }
26226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26227 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
26228 {
26229 uint64_t counterValue;
26230 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
26231 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
26232 }
26233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026234
26235 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
26236 {
26237 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
26238 }
26239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26240 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
26241 {
26242 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
26243 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
26244 return peerMemoryFeatures;
26245 }
26246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26247
26248 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
26249 {
26250 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
26251 }
26252#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26253 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
26254 {
26255 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
26256 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
26257 }
26258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26259
26260 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
26261 {
26262 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
26263 }
26264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26265 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
26266 {
26267 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
26268 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
26269 }
26270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26271
26272 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
26273 {
26274 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
26275 }
26276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26277 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
26278 {
26279 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
26280 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
26281 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
26282 }
26283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26284
26285 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
26286 {
26287 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
26288 }
26289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26290 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
26291 {
26292 DeviceGroupPresentModeFlagsKHX modes;
26293 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
26294 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
26295 }
26296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26297
26298 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
26299 {
26300 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
26301 }
26302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26303 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
26304 {
26305 uint32_t imageIndex;
26306 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
26307 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
26308 }
26309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26310
26311 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
26312 {
26313 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
26314 }
26315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26316 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26317 {
26318 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026319 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 -070026320 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
26321 }
26322#ifndef VULKAN_HPP_NO_SMART_HANDLE
26323 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26324 {
26325 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
26326 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
26327 }
26328#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26330
26331 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
26332 {
26333 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26334 }
26335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26336 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
26337 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026338 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070026339 }
26340#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26341
26342 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
26343 {
26344 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
26345 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026346
26347 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
26348 {
26349 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
26350 }
26351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26352 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
26353 {
26354#ifdef VULKAN_HPP_NO_EXCEPTIONS
26355 assert( swapchains.size() == metadata.size() );
26356#else
26357 if ( swapchains.size() != metadata.size() )
26358 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026359 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026360 }
26361#endif // VULKAN_HPP_NO_EXCEPTIONS
26362 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
26363 }
26364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26365
Mark Lobodzinski54385432017-05-15 10:27:52 -060026366#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26367 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
26368 {
26369 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
26370 }
26371#else
26372 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
26373 {
26374 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
26375 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
26376 }
26377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26378
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026379 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
26380 {
26381 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
26382 }
26383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26384 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
26385 {
26386 RefreshCycleDurationGOOGLE displayTimingProperties;
26387 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
26388 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
26389 }
26390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26391
26392 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
26393 {
26394 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
26395 }
26396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26397 template <typename Allocator>
26398 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
26399 {
26400 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
26401 uint32_t presentationTimingCount;
26402 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
26403 if ( ( result == Result::eSuccess ) && presentationTimingCount )
26404 {
26405 presentationTimings.resize( presentationTimingCount );
26406 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
26407 }
26408 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
26409 }
26410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26411
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026412#ifndef VULKAN_HPP_NO_SMART_HANDLE
26413 class DeviceDeleter;
26414 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
26415#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26416
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026417 class PhysicalDevice
26418 {
26419 public:
26420 PhysicalDevice()
26421 : m_physicalDevice(VK_NULL_HANDLE)
26422 {}
26423
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026424 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026425 : m_physicalDevice(VK_NULL_HANDLE)
26426 {}
26427
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026428 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
26429 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026430 {}
26431
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026432#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026433 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026434 {
26435 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026436 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026437 }
26438#endif
26439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026440 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026441 {
26442 m_physicalDevice = VK_NULL_HANDLE;
26443 return *this;
26444 }
26445
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026446 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026447 {
26448 return m_physicalDevice == rhs.m_physicalDevice;
26449 }
26450
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026451 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026452 {
26453 return m_physicalDevice != rhs.m_physicalDevice;
26454 }
26455
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026456 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026457 {
26458 return m_physicalDevice < rhs.m_physicalDevice;
26459 }
26460
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026461 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026463 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26465
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026466 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026468 template <typename Allocator = std::allocator<QueueFamilyProperties>>
26469 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26471
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026472 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026474 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26476
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026477 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026478#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026479 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26481
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026482 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026484 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26486
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026487 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026489 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26491
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026492 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026494 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26495#ifndef VULKAN_HPP_NO_SMART_HANDLE
26496 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26497#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026498#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26499
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026500 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026502 template <typename Allocator = std::allocator<LayerProperties>>
26503 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26505
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026506 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026508 template <typename Allocator = std::allocator<ExtensionProperties>>
26509 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26511
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026512 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 -060026513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026514 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
26515 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26517
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026518 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026520 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
26521 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26523
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026524 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026526 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
26527 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26529
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026530 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026531#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026532 template <typename Allocator = std::allocator<DisplayKHR>>
26533 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26535
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026536 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026537#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026538 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
26539 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26541
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026542 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026543#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026544 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026545#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26546
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026547 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026549 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26551
26552#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026553 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
26554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26555 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
26556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026557#endif /*VK_USE_PLATFORM_MIR_KHR*/
26558
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026559 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026561 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26563
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026564 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026566 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26568
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026569 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026570#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026571 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
26572 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26574
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026575 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026577 template <typename Allocator = std::allocator<PresentModeKHR>>
26578 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26580
26581#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026582 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
26583#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26584 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
26585#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026586#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26587
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026588#ifdef VK_USE_PLATFORM_WIN32_KHR
26589 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
26590#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26591
26592#ifdef VK_USE_PLATFORM_XLIB_KHR
26593 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026595 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
26596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26597#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26598
26599#ifdef VK_USE_PLATFORM_XCB_KHR
26600 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
26601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26602 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
26603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26604#endif /*VK_USE_PLATFORM_XCB_KHR*/
26605
26606 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
26607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26608 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
26609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26610
26611 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
26612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26613 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
26614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26615
26616 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
26617#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26618 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
26619#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26620
26621 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
26622#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26623 PhysicalDeviceProperties2KHR getProperties2KHR() const;
26624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26625
26626 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
26627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26628 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
26629#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26630
26631 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
26632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26633 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
26634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26635
26636 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
26637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26638 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
26639 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
26640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26641
26642 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
26643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26644 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
26645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26646
26647 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
26648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26649 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
26650 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26652
Mark Young0f183a82017-02-28 09:58:04 -070026653 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
26654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26655 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
26656#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26657
26658 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
26659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26660 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
26661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26662
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026663#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026664 Result releaseDisplayEXT( DisplayKHR display ) const;
26665#else
26666 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026667#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26668
26669#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026670 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026671#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026672 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026674#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26675
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026676#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26677 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070026678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026679 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070026680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026681#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070026682
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026683 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070026684#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026685 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070026686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26687
Mark Young0f183a82017-02-28 09:58:04 -070026688 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
26689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26690 template <typename Allocator = std::allocator<Rect2D>>
26691 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
26692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26693
Mark Lobodzinski54385432017-05-15 10:27:52 -060026694 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
26695#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026696 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060026697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26698
26699 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
26700#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26701 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
26702 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
26703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26704
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026705
26706
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026707 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026708 {
26709 return m_physicalDevice;
26710 }
26711
26712 explicit operator bool() const
26713 {
26714 return m_physicalDevice != VK_NULL_HANDLE;
26715 }
26716
26717 bool operator!() const
26718 {
26719 return m_physicalDevice == VK_NULL_HANDLE;
26720 }
26721
26722 private:
26723 VkPhysicalDevice m_physicalDevice;
26724 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026725
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026726 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
26727
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026728#ifndef VULKAN_HPP_NO_SMART_HANDLE
26729 class DeviceDeleter
26730 {
26731 public:
26732 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
26733 : m_allocator( allocator )
26734 {}
26735
26736 void operator()( Device device )
26737 {
26738 device.destroy( m_allocator );
26739 }
26740
26741 private:
26742 Optional<const AllocationCallbacks> m_allocator;
26743 };
26744#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26745
26746 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
26747 {
26748 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
26749 }
26750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26751 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
26752 {
26753 PhysicalDeviceProperties properties;
26754 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
26755 return properties;
26756 }
26757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26758
26759 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
26760 {
26761 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
26762 }
26763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26764 template <typename Allocator>
26765 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
26766 {
26767 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
26768 uint32_t queueFamilyPropertyCount;
26769 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26770 queueFamilyProperties.resize( queueFamilyPropertyCount );
26771 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
26772 return queueFamilyProperties;
26773 }
26774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26775
26776 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
26777 {
26778 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
26779 }
26780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26781 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
26782 {
26783 PhysicalDeviceMemoryProperties memoryProperties;
26784 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
26785 return memoryProperties;
26786 }
26787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26788
26789 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
26790 {
26791 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
26792 }
26793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26794 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
26795 {
26796 PhysicalDeviceFeatures features;
26797 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
26798 return features;
26799 }
26800#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26801
26802 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
26803 {
26804 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
26805 }
26806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26807 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
26808 {
26809 FormatProperties formatProperties;
26810 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
26811 return formatProperties;
26812 }
26813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26814
26815 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
26816 {
26817 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 ) ) );
26818 }
26819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26820 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
26821 {
26822 ImageFormatProperties imageFormatProperties;
26823 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 ) ) );
26824 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
26825 }
26826#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26827
26828 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
26829 {
26830 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
26831 }
26832#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26833 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26834 {
26835 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026836 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 -070026837 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
26838 }
26839#ifndef VULKAN_HPP_NO_SMART_HANDLE
26840 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26841 {
26842 DeviceDeleter deleter( allocator );
26843 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
26844 }
26845#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26846#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26847
26848 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
26849 {
26850 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
26851 }
26852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26853 template <typename Allocator>
26854 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
26855 {
26856 std::vector<LayerProperties,Allocator> properties;
26857 uint32_t propertyCount;
26858 Result result;
26859 do
26860 {
26861 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
26862 if ( ( result == Result::eSuccess ) && propertyCount )
26863 {
26864 properties.resize( propertyCount );
26865 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
26866 }
26867 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026868 assert( propertyCount <= properties.size() );
26869 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026870 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26871 }
26872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26873
26874 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26875 {
26876 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26877 }
26878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26879 template <typename Allocator>
26880 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26881 {
26882 std::vector<ExtensionProperties,Allocator> properties;
26883 uint32_t propertyCount;
26884 Result result;
26885 do
26886 {
26887 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26888 if ( ( result == Result::eSuccess ) && propertyCount )
26889 {
26890 properties.resize( propertyCount );
26891 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26892 }
26893 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026894 assert( propertyCount <= properties.size() );
26895 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026896 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26897 }
26898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26899
26900 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26901 {
26902 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 ) );
26903 }
26904#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26905 template <typename Allocator>
26906 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26907 {
26908 std::vector<SparseImageFormatProperties,Allocator> properties;
26909 uint32_t propertyCount;
26910 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 );
26911 properties.resize( propertyCount );
26912 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() ) );
26913 return properties;
26914 }
26915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26916
26917 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26918 {
26919 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26920 }
26921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26922 template <typename Allocator>
26923 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26924 {
26925 std::vector<DisplayPropertiesKHR,Allocator> properties;
26926 uint32_t propertyCount;
26927 Result result;
26928 do
26929 {
26930 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26931 if ( ( result == Result::eSuccess ) && propertyCount )
26932 {
26933 properties.resize( propertyCount );
26934 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26935 }
26936 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026937 assert( propertyCount <= properties.size() );
26938 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026939 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26940 }
26941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26942
26943 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26944 {
26945 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26946 }
26947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26948 template <typename Allocator>
26949 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26950 {
26951 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26952 uint32_t propertyCount;
26953 Result result;
26954 do
26955 {
26956 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26957 if ( ( result == Result::eSuccess ) && propertyCount )
26958 {
26959 properties.resize( propertyCount );
26960 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26961 }
26962 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026963 assert( propertyCount <= properties.size() );
26964 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26966 }
26967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26968
26969 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26970 {
26971 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26972 }
26973#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26974 template <typename Allocator>
26975 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26976 {
26977 std::vector<DisplayKHR,Allocator> displays;
26978 uint32_t displayCount;
26979 Result result;
26980 do
26981 {
26982 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26983 if ( ( result == Result::eSuccess ) && displayCount )
26984 {
26985 displays.resize( displayCount );
26986 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26987 }
26988 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026989 assert( displayCount <= displays.size() );
26990 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026991 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26992 }
26993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26994
26995 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26996 {
26997 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26998 }
26999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27000 template <typename Allocator>
27001 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
27002 {
27003 std::vector<DisplayModePropertiesKHR,Allocator> properties;
27004 uint32_t propertyCount;
27005 Result result;
27006 do
27007 {
27008 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
27009 if ( ( result == Result::eSuccess ) && propertyCount )
27010 {
27011 properties.resize( propertyCount );
27012 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
27013 }
27014 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027015 assert( propertyCount <= properties.size() );
27016 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027017 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
27018 }
27019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27020
27021 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
27022 {
27023 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 ) ) );
27024 }
27025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27026 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27027 {
27028 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027029 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 -070027030 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
27031 }
27032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27033
27034 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
27035 {
27036 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
27037 }
27038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27039 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
27040 {
27041 DisplayPlaneCapabilitiesKHR capabilities;
27042 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
27043 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
27044 }
27045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27046
27047#ifdef VK_USE_PLATFORM_MIR_KHR
27048 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
27049 {
27050 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
27051 }
27052#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27053 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
27054 {
27055 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
27056 }
27057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27058#endif /*VK_USE_PLATFORM_MIR_KHR*/
27059
27060 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
27061 {
27062 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
27063 }
27064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27065 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
27066 {
27067 Bool32 supported;
27068 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
27069 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
27070 }
27071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27072
27073 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
27074 {
27075 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
27076 }
27077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27078 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
27079 {
27080 SurfaceCapabilitiesKHR surfaceCapabilities;
27081 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
27082 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
27083 }
27084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27085
27086 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
27087 {
27088 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
27089 }
27090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27091 template <typename Allocator>
27092 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
27093 {
27094 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
27095 uint32_t surfaceFormatCount;
27096 Result result;
27097 do
27098 {
27099 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
27100 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
27101 {
27102 surfaceFormats.resize( surfaceFormatCount );
27103 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
27104 }
27105 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027106 assert( surfaceFormatCount <= surfaceFormats.size() );
27107 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027108 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
27109 }
27110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27111
27112 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
27113 {
27114 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
27115 }
27116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27117 template <typename Allocator>
27118 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
27119 {
27120 std::vector<PresentModeKHR,Allocator> presentModes;
27121 uint32_t presentModeCount;
27122 Result result;
27123 do
27124 {
27125 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
27126 if ( ( result == Result::eSuccess ) && presentModeCount )
27127 {
27128 presentModes.resize( presentModeCount );
27129 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
27130 }
27131 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027132 assert( presentModeCount <= presentModes.size() );
27133 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027134 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
27135 }
27136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27137
27138#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27139 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
27140 {
27141 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
27142 }
27143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27144 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
27145 {
27146 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
27147 }
27148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27149#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27150
27151#ifdef VK_USE_PLATFORM_WIN32_KHR
27152 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
27153 {
27154 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
27155 }
27156#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27157
27158#ifdef VK_USE_PLATFORM_XLIB_KHR
27159 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
27160 {
27161 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
27162 }
27163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27164 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
27165 {
27166 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
27167 }
27168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27169#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27170
27171#ifdef VK_USE_PLATFORM_XCB_KHR
27172 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
27173 {
27174 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
27175 }
27176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27177 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
27178 {
27179 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
27180 }
27181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27182#endif /*VK_USE_PLATFORM_XCB_KHR*/
27183
27184 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
27185 {
27186 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 ) ) );
27187 }
27188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27189 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
27190 {
27191 ExternalImageFormatPropertiesNV externalImageFormatProperties;
27192 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 ) ) );
27193 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
27194 }
27195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27196
27197 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
27198 {
27199 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
27200 }
27201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27202 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
27203 {
27204 DeviceGeneratedCommandsLimitsNVX limits;
27205 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
27206 return limits;
27207 }
27208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27209
27210 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
27211 {
27212 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
27213 }
27214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27215 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
27216 {
27217 PhysicalDeviceFeatures2KHR features;
27218 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
27219 return features;
27220 }
27221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27222
27223 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
27224 {
27225 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
27226 }
27227#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27228 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
27229 {
27230 PhysicalDeviceProperties2KHR properties;
27231 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
27232 return properties;
27233 }
27234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27235
27236 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
27237 {
27238 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
27239 }
27240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27241 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
27242 {
27243 FormatProperties2KHR formatProperties;
27244 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
27245 return formatProperties;
27246 }
27247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27248
27249 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
27250 {
27251 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
27252 }
27253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27254 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
27255 {
27256 ImageFormatProperties2KHR imageFormatProperties;
27257 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
27258 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
27259 }
27260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27261
27262 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
27263 {
27264 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
27265 }
27266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27267 template <typename Allocator>
27268 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
27269 {
27270 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
27271 uint32_t queueFamilyPropertyCount;
27272 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
27273 queueFamilyProperties.resize( queueFamilyPropertyCount );
27274 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
27275 return queueFamilyProperties;
27276 }
27277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27278
27279 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
27280 {
27281 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
27282 }
27283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27284 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
27285 {
27286 PhysicalDeviceMemoryProperties2KHR memoryProperties;
27287 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
27288 return memoryProperties;
27289 }
27290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27291
27292 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
27293 {
27294 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
27295 }
27296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27297 template <typename Allocator>
27298 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
27299 {
27300 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
27301 uint32_t propertyCount;
27302 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
27303 properties.resize( propertyCount );
27304 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
27305 return properties;
27306 }
27307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27308
Mark Young0f183a82017-02-28 09:58:04 -070027309 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
27310 {
27311 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
27312 }
27313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27314 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
27315 {
27316 ExternalBufferPropertiesKHX externalBufferProperties;
27317 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
27318 return externalBufferProperties;
27319 }
27320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27321
27322 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
27323 {
27324 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
27325 }
27326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27327 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
27328 {
27329 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
27330 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
27331 return externalSemaphoreProperties;
27332 }
27333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27334
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027335#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27336 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
27337 {
27338 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
27339 }
27340#else
27341 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
27342 {
27343 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
27344 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
27345 }
27346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27347
27348#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
27349 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
27350 {
27351 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
27352 }
27353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27354 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
27355 {
27356 Display dpy;
27357 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
27358 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
27359 }
27360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27361#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
27362
27363#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
27364 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
27365 {
27366 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
27367 }
27368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27369 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
27370 {
27371 DisplayKHR display;
27372 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
27373 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
27374 }
27375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27376#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
27377
27378 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
27379 {
27380 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
27381 }
27382#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27383 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
27384 {
27385 SurfaceCapabilities2EXT surfaceCapabilities;
27386 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
27387 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
27388 }
27389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027390
27391 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
27392 {
27393 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
27394 }
27395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27396 template <typename Allocator>
27397 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
27398 {
27399 std::vector<Rect2D,Allocator> rects;
27400 uint32_t rectCount;
27401 Result result;
27402 do
27403 {
27404 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
27405 if ( ( result == Result::eSuccess ) && rectCount )
27406 {
27407 rects.resize( rectCount );
27408 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
27409 }
27410 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027411 assert( rectCount <= rects.size() );
27412 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070027413 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
27414 }
27415#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027416
Mark Lobodzinski54385432017-05-15 10:27:52 -060027417 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
27418 {
27419 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
27420 }
27421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027422 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060027423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027424 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060027425 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
27426 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
27427 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060027428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27429
27430 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
27431 {
27432 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
27433 }
27434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27435 template <typename Allocator>
27436 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
27437 {
27438 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
27439 uint32_t surfaceFormatCount;
27440 Result result;
27441 do
27442 {
27443 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
27444 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
27445 {
27446 surfaceFormats.resize( surfaceFormatCount );
27447 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
27448 }
27449 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027450 assert( surfaceFormatCount <= surfaceFormats.size() );
27451 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060027452 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
27453 }
27454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27455
Mark Young0f183a82017-02-28 09:58:04 -070027456 struct CmdProcessCommandsInfoNVX
27457 {
27458 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 )
27459 : sType( StructureType::eCmdProcessCommandsInfoNVX )
27460 , pNext( nullptr )
27461 , objectTable( objectTable_ )
27462 , indirectCommandsLayout( indirectCommandsLayout_ )
27463 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
27464 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
27465 , maxSequencesCount( maxSequencesCount_ )
27466 , targetCommandBuffer( targetCommandBuffer_ )
27467 , sequencesCountBuffer( sequencesCountBuffer_ )
27468 , sequencesCountOffset( sequencesCountOffset_ )
27469 , sequencesIndexBuffer( sequencesIndexBuffer_ )
27470 , sequencesIndexOffset( sequencesIndexOffset_ )
27471 {
27472 }
27473
27474 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
27475 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027476 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070027477 }
27478
27479 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
27480 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027481 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070027482 return *this;
27483 }
Mark Young0f183a82017-02-28 09:58:04 -070027484 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
27485 {
27486 pNext = pNext_;
27487 return *this;
27488 }
27489
27490 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
27491 {
27492 objectTable = objectTable_;
27493 return *this;
27494 }
27495
27496 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
27497 {
27498 indirectCommandsLayout = indirectCommandsLayout_;
27499 return *this;
27500 }
27501
27502 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
27503 {
27504 indirectCommandsTokenCount = indirectCommandsTokenCount_;
27505 return *this;
27506 }
27507
27508 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
27509 {
27510 pIndirectCommandsTokens = pIndirectCommandsTokens_;
27511 return *this;
27512 }
27513
27514 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
27515 {
27516 maxSequencesCount = maxSequencesCount_;
27517 return *this;
27518 }
27519
27520 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
27521 {
27522 targetCommandBuffer = targetCommandBuffer_;
27523 return *this;
27524 }
27525
27526 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
27527 {
27528 sequencesCountBuffer = sequencesCountBuffer_;
27529 return *this;
27530 }
27531
27532 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
27533 {
27534 sequencesCountOffset = sequencesCountOffset_;
27535 return *this;
27536 }
27537
27538 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
27539 {
27540 sequencesIndexBuffer = sequencesIndexBuffer_;
27541 return *this;
27542 }
27543
27544 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
27545 {
27546 sequencesIndexOffset = sequencesIndexOffset_;
27547 return *this;
27548 }
27549
27550 operator const VkCmdProcessCommandsInfoNVX&() const
27551 {
27552 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
27553 }
27554
27555 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
27556 {
27557 return ( sType == rhs.sType )
27558 && ( pNext == rhs.pNext )
27559 && ( objectTable == rhs.objectTable )
27560 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
27561 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
27562 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
27563 && ( maxSequencesCount == rhs.maxSequencesCount )
27564 && ( targetCommandBuffer == rhs.targetCommandBuffer )
27565 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
27566 && ( sequencesCountOffset == rhs.sequencesCountOffset )
27567 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
27568 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
27569 }
27570
27571 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
27572 {
27573 return !operator==( rhs );
27574 }
27575
27576 private:
27577 StructureType sType;
27578
27579 public:
27580 const void* pNext;
27581 ObjectTableNVX objectTable;
27582 IndirectCommandsLayoutNVX indirectCommandsLayout;
27583 uint32_t indirectCommandsTokenCount;
27584 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
27585 uint32_t maxSequencesCount;
27586 CommandBuffer targetCommandBuffer;
27587 Buffer sequencesCountBuffer;
27588 DeviceSize sequencesCountOffset;
27589 Buffer sequencesIndexBuffer;
27590 DeviceSize sequencesIndexOffset;
27591 };
27592 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
27593
27594 struct PhysicalDeviceGroupPropertiesKHX
27595 {
27596 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
27597 {
27598 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
27599 }
27600
27601 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27602 {
27603 return ( sType == rhs.sType )
27604 && ( pNext == rhs.pNext )
27605 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27606 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
27607 && ( subsetAllocation == rhs.subsetAllocation );
27608 }
27609
27610 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27611 {
27612 return !operator==( rhs );
27613 }
27614
27615 private:
27616 StructureType sType;
27617
27618 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060027619 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027620 uint32_t physicalDeviceCount;
27621 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
27622 Bool32 subsetAllocation;
27623 };
27624 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
27625
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027626#ifndef VULKAN_HPP_NO_SMART_HANDLE
27627 class DebugReportCallbackEXTDeleter;
27628 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
27629 class SurfaceKHRDeleter;
27630 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
27631#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27632
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027633 class Instance
27634 {
27635 public:
27636 Instance()
27637 : m_instance(VK_NULL_HANDLE)
27638 {}
27639
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027640 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027641 : m_instance(VK_NULL_HANDLE)
27642 {}
27643
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027644 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
27645 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027646 {}
27647
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027648#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027649 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027650 {
27651 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027652 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027653 }
27654#endif
27655
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027656 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027657 {
27658 m_instance = VK_NULL_HANDLE;
27659 return *this;
27660 }
27661
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027662 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027663 {
27664 return m_instance == rhs.m_instance;
27665 }
27666
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027667 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027668 {
27669 return m_instance != rhs.m_instance;
27670 }
27671
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027672 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027673 {
27674 return m_instance < rhs.m_instance;
27675 }
27676
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027677 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027679 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27681
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027682 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027683#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027684 template <typename Allocator = std::allocator<PhysicalDevice>>
27685 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27687
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027688 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027690 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027691#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27692
27693#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027694 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027695#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027696 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27697#ifndef VULKAN_HPP_NO_SMART_HANDLE
27698 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27699#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027701#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027702
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027703 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027705 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27706#ifndef VULKAN_HPP_NO_SMART_HANDLE
27707 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27708#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027709#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27710
27711#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027712 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027713#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027714 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27715#ifndef VULKAN_HPP_NO_SMART_HANDLE
27716 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27717#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027718#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027719#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027720
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027721 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027723 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27725
Mark Young39389872017-01-19 21:10:49 -070027726#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027727 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27729 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27730#ifndef VULKAN_HPP_NO_SMART_HANDLE
27731 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27732#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070027734#endif /*VK_USE_PLATFORM_VI_NN*/
27735
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027736#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027737 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27739 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27740#ifndef VULKAN_HPP_NO_SMART_HANDLE
27741 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27742#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027744#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27745
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027746#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027747 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27749 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27750#ifndef VULKAN_HPP_NO_SMART_HANDLE
27751 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27752#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27753#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027754#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27755
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027756#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027757 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27759 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27760#ifndef VULKAN_HPP_NO_SMART_HANDLE
27761 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27762#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027764#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27765
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027766#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027767 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27769 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27770#ifndef VULKAN_HPP_NO_SMART_HANDLE
27771 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27772#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027774#endif /*VK_USE_PLATFORM_XCB_KHR*/
27775
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027776 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027778 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27779#ifndef VULKAN_HPP_NO_SMART_HANDLE
27780 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27781#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27783
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027784 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027786 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27788
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027789 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 -060027790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027791 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 -060027792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27793
Mark Young0f183a82017-02-28 09:58:04 -070027794 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
27795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27796 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
27797 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
27798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27799
27800#ifdef VK_USE_PLATFORM_IOS_MVK
27801 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27802#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27803 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27804#ifndef VULKAN_HPP_NO_SMART_HANDLE
27805 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27806#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27808#endif /*VK_USE_PLATFORM_IOS_MVK*/
27809
27810#ifdef VK_USE_PLATFORM_MACOS_MVK
27811 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27813 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27814#ifndef VULKAN_HPP_NO_SMART_HANDLE
27815 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27816#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27818#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27819
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027820
27821
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027822 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027823 {
27824 return m_instance;
27825 }
27826
27827 explicit operator bool() const
27828 {
27829 return m_instance != VK_NULL_HANDLE;
27830 }
27831
27832 bool operator!() const
27833 {
27834 return m_instance == VK_NULL_HANDLE;
27835 }
27836
27837 private:
27838 VkInstance m_instance;
27839 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027840
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027841 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
27842
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027843#ifndef VULKAN_HPP_NO_SMART_HANDLE
27844 class DebugReportCallbackEXTDeleter
27845 {
27846 public:
27847 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27848 : m_instance( instance )
27849 , m_allocator( allocator )
27850 {}
27851
27852 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
27853 {
27854 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
27855 }
27856
27857 private:
27858 Instance m_instance;
27859 Optional<const AllocationCallbacks> m_allocator;
27860 };
27861
27862 class SurfaceKHRDeleter
27863 {
27864 public:
27865 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27866 : m_instance( instance )
27867 , m_allocator( allocator )
27868 {}
27869
27870 void operator()( SurfaceKHR surfaceKHR )
27871 {
27872 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
27873 }
27874
27875 private:
27876 Instance m_instance;
27877 Optional<const AllocationCallbacks> m_allocator;
27878 };
27879#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27880
27881 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
27882 {
27883 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27884 }
27885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27886 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
27887 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027888 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027889 }
27890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27891
27892 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
27893 {
27894 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
27895 }
27896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27897 template <typename Allocator>
27898 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
27899 {
27900 std::vector<PhysicalDevice,Allocator> physicalDevices;
27901 uint32_t physicalDeviceCount;
27902 Result result;
27903 do
27904 {
27905 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
27906 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
27907 {
27908 physicalDevices.resize( physicalDeviceCount );
27909 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27910 }
27911 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027912 assert( physicalDeviceCount <= physicalDevices.size() );
27913 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027914 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27915 }
27916#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27917
27918 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27919 {
27920 return vkGetInstanceProcAddr( m_instance, pName );
27921 }
27922#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27923 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27924 {
27925 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27926 }
27927#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27928
27929#ifdef VK_USE_PLATFORM_ANDROID_KHR
27930 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27931 {
27932 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27933 }
27934#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27935 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27936 {
27937 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027938 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 -070027939 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27940 }
27941#ifndef VULKAN_HPP_NO_SMART_HANDLE
27942 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27943 {
27944 SurfaceKHRDeleter deleter( *this, allocator );
27945 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27946 }
27947#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27949#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27950
27951 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27952 {
27953 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27954 }
27955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27956 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27957 {
27958 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027959 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 -070027960 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27961 }
27962#ifndef VULKAN_HPP_NO_SMART_HANDLE
27963 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27964 {
27965 SurfaceKHRDeleter deleter( *this, allocator );
27966 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27967 }
27968#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27970
27971#ifdef VK_USE_PLATFORM_MIR_KHR
27972 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27973 {
27974 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27975 }
27976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27977 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27978 {
27979 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027980 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 -070027981 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27982 }
27983#ifndef VULKAN_HPP_NO_SMART_HANDLE
27984 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27985 {
27986 SurfaceKHRDeleter deleter( *this, allocator );
27987 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27988 }
27989#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27991#endif /*VK_USE_PLATFORM_MIR_KHR*/
27992
27993 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27994 {
27995 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27996 }
27997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27998 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27999 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028000 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028001 }
28002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28003
28004#ifdef VK_USE_PLATFORM_VI_NN
28005 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28006 {
28007 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28008 }
28009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28010 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
28011 {
28012 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028013 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 -070028014 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
28015 }
28016#ifndef VULKAN_HPP_NO_SMART_HANDLE
28017 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
28018 {
28019 SurfaceKHRDeleter deleter( *this, allocator );
28020 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
28021 }
28022#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28024#endif /*VK_USE_PLATFORM_VI_NN*/
28025
28026#ifdef VK_USE_PLATFORM_WAYLAND_KHR
28027 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28028 {
28029 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28030 }
28031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28032 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28033 {
28034 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028035 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 -070028036 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
28037 }
28038#ifndef VULKAN_HPP_NO_SMART_HANDLE
28039 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28040 {
28041 SurfaceKHRDeleter deleter( *this, allocator );
28042 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
28043 }
28044#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28046#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28047
28048#ifdef VK_USE_PLATFORM_WIN32_KHR
28049 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28050 {
28051 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28052 }
28053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28054 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28055 {
28056 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028057 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 -070028058 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
28059 }
28060#ifndef VULKAN_HPP_NO_SMART_HANDLE
28061 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28062 {
28063 SurfaceKHRDeleter deleter( *this, allocator );
28064 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
28065 }
28066#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28068#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28069
28070#ifdef VK_USE_PLATFORM_XLIB_KHR
28071 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28072 {
28073 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28074 }
28075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28076 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28077 {
28078 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028079 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 -070028080 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
28081 }
28082#ifndef VULKAN_HPP_NO_SMART_HANDLE
28083 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28084 {
28085 SurfaceKHRDeleter deleter( *this, allocator );
28086 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
28087 }
28088#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28090#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28091
28092#ifdef VK_USE_PLATFORM_XCB_KHR
28093 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28094 {
28095 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28096 }
28097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28098 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28099 {
28100 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028101 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 -070028102 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
28103 }
28104#ifndef VULKAN_HPP_NO_SMART_HANDLE
28105 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28106 {
28107 SurfaceKHRDeleter deleter( *this, allocator );
28108 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
28109 }
28110#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28112#endif /*VK_USE_PLATFORM_XCB_KHR*/
28113
28114 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
28115 {
28116 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
28117 }
28118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28119 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
28120 {
28121 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028122 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 -070028123 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
28124 }
28125#ifndef VULKAN_HPP_NO_SMART_HANDLE
28126 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
28127 {
28128 DebugReportCallbackEXTDeleter deleter( *this, allocator );
28129 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
28130 }
28131#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28133
28134 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
28135 {
28136 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28137 }
28138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28139 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
28140 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028141 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028142 }
28143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28144
28145 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
28146 {
28147 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
28148 }
28149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28150 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
28151 {
28152#ifdef VULKAN_HPP_NO_EXCEPTIONS
28153 assert( layerPrefix.size() == message.size() );
28154#else
28155 if ( layerPrefix.size() != message.size() )
28156 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028157 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028158 }
28159#endif // VULKAN_HPP_NO_EXCEPTIONS
28160 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
28161 }
28162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070028163
28164 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060028165 {
Mark Young0f183a82017-02-28 09:58:04 -070028166 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
28167 }
28168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28169 template <typename Allocator>
28170 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
28171 {
28172 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
28173 uint32_t physicalDeviceGroupCount;
28174 Result result;
28175 do
28176 {
28177 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
28178 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
28179 {
28180 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
28181 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
28182 }
28183 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028184 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
28185 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070028186 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
28187 }
28188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28189
28190#ifdef VK_USE_PLATFORM_IOS_MVK
28191 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28192 {
28193 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28194 }
28195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28196 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
28197 {
28198 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028199 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 -070028200 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
28201 }
28202#ifndef VULKAN_HPP_NO_SMART_HANDLE
28203 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
28204 {
28205 SurfaceKHRDeleter deleter( *this, allocator );
28206 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
28207 }
28208#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28210#endif /*VK_USE_PLATFORM_IOS_MVK*/
28211
28212#ifdef VK_USE_PLATFORM_MACOS_MVK
28213 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
28214 {
28215 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
28216 }
28217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28218 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
28219 {
28220 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028221 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 -070028222 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
28223 }
28224#ifndef VULKAN_HPP_NO_SMART_HANDLE
28225 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
28226 {
28227 SurfaceKHRDeleter deleter( *this, allocator );
28228 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
28229 }
28230#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28232#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028233
Mark Young0f183a82017-02-28 09:58:04 -070028234 struct DeviceGroupDeviceCreateInfoKHX
28235 {
28236 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
28237 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060028238 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070028239 , physicalDeviceCount( physicalDeviceCount_ )
28240 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060028241 {
28242 }
28243
Mark Young0f183a82017-02-28 09:58:04 -070028244 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060028245 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028246 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060028247 }
28248
Mark Young0f183a82017-02-28 09:58:04 -070028249 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060028250 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028251 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060028252 return *this;
28253 }
Mark Young0f183a82017-02-28 09:58:04 -070028254 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060028255 {
28256 pNext = pNext_;
28257 return *this;
28258 }
28259
Mark Young0f183a82017-02-28 09:58:04 -070028260 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060028261 {
Mark Young0f183a82017-02-28 09:58:04 -070028262 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060028263 return *this;
28264 }
28265
Mark Young0f183a82017-02-28 09:58:04 -070028266 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060028267 {
Mark Young0f183a82017-02-28 09:58:04 -070028268 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060028269 return *this;
28270 }
28271
Mark Young0f183a82017-02-28 09:58:04 -070028272 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060028273 {
Mark Young0f183a82017-02-28 09:58:04 -070028274 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060028275 }
28276
Mark Young0f183a82017-02-28 09:58:04 -070028277 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060028278 {
28279 return ( sType == rhs.sType )
28280 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070028281 && ( physicalDeviceCount == rhs.physicalDeviceCount )
28282 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060028283 }
28284
Mark Young0f183a82017-02-28 09:58:04 -070028285 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060028286 {
28287 return !operator==( rhs );
28288 }
28289
28290 private:
28291 StructureType sType;
28292
28293 public:
28294 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070028295 uint32_t physicalDeviceCount;
28296 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060028297 };
Mark Young0f183a82017-02-28 09:58:04 -070028298 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060028299
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028300#ifndef VULKAN_HPP_NO_SMART_HANDLE
28301 class InstanceDeleter;
28302 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
28303#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28304
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028305 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028307 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028308#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028309 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28312
28313#ifndef VULKAN_HPP_NO_SMART_HANDLE
28314 class InstanceDeleter
28315 {
28316 public:
28317 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
28318 : m_allocator( allocator )
28319 {}
28320
28321 void operator()( Instance instance )
28322 {
28323 instance.destroy( m_allocator );
28324 }
28325
28326 private:
28327 Optional<const AllocationCallbacks> m_allocator;
28328 };
28329#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28330
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028331 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028332 {
28333 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
28334 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028336 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028337 {
28338 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028339 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 -060028340 return createResultValue( result, instance, "vk::createInstance" );
28341 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028342#ifndef VULKAN_HPP_NO_SMART_HANDLE
28343 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
28344 {
28345 InstanceDeleter deleter( allocator );
28346 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
28347 }
28348#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28350
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028351
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028352 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028353 {
28354 return "(void)";
28355 }
28356
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028357 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028358 {
28359 return "{}";
28360 }
28361
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028362 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028363 {
28364 return "(void)";
28365 }
28366
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028367 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028368 {
28369 return "{}";
28370 }
28371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028372 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028373 {
28374 return "(void)";
28375 }
28376
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028377 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028378 {
28379 return "{}";
28380 }
28381
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028382 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028383 {
28384 return "(void)";
28385 }
28386
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028387 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028388 {
28389 return "{}";
28390 }
28391
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028392 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028393 {
28394 return "(void)";
28395 }
28396
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028397 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028398 {
28399 return "{}";
28400 }
28401
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028402 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028403 {
28404 return "(void)";
28405 }
28406
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028407 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028408 {
28409 return "{}";
28410 }
28411
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028412 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028413 {
28414 return "(void)";
28415 }
28416
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028417 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028418 {
28419 return "{}";
28420 }
28421
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028422 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028423 {
28424 return "(void)";
28425 }
28426
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028427 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028428 {
28429 return "{}";
28430 }
28431
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028432 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028433 {
28434 return "(void)";
28435 }
28436
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028437 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028438 {
28439 return "{}";
28440 }
28441
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028442 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028443 {
28444 return "(void)";
28445 }
28446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028447 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028448 {
28449 return "{}";
28450 }
28451
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028452 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028453 {
28454 return "(void)";
28455 }
28456
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028457 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028458 {
28459 return "{}";
28460 }
28461
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028462 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028463 {
28464 return "(void)";
28465 }
28466
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028467 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028468 {
28469 return "{}";
28470 }
28471
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028472 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028473 {
28474 return "(void)";
28475 }
28476
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028477 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028478 {
28479 return "{}";
28480 }
28481
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028482 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028483 {
28484 return "(void)";
28485 }
28486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028487 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028488 {
28489 return "{}";
28490 }
28491
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028492 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028493 {
28494 return "(void)";
28495 }
28496
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028497 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028498 {
28499 return "{}";
28500 }
28501
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028502 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028503 {
28504 return "(void)";
28505 }
28506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028507 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028508 {
28509 return "{}";
28510 }
28511
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028512 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028513 {
28514 return "(void)";
28515 }
28516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028517 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028518 {
28519 return "{}";
28520 }
28521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028522 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028523 {
28524 return "(void)";
28525 }
28526
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028527 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028528 {
28529 return "{}";
28530 }
28531
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028532 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028533 {
28534 return "(void)";
28535 }
28536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028537 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028538 {
28539 return "{}";
28540 }
28541
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028542 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028543 {
28544 return "(void)";
28545 }
28546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028547 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028548 {
28549 return "{}";
28550 }
28551
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028552 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028553 {
28554 return "(void)";
28555 }
28556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028557 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028558 {
28559 return "{}";
28560 }
28561
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028562 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028563 {
28564 return "(void)";
28565 }
28566
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028567 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028568 {
28569 return "{}";
28570 }
28571
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028572 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028573 {
28574 return "(void)";
28575 }
28576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028577 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028578 {
28579 return "{}";
28580 }
28581
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028582 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028583 {
28584 return "(void)";
28585 }
28586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028587 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028588 {
28589 return "{}";
28590 }
28591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028592 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028593 {
28594 return "(void)";
28595 }
28596
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028597 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028598 {
28599 return "{}";
28600 }
28601
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028602 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028603 {
28604 return "(void)";
28605 }
28606
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028607 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028608 {
28609 return "{}";
28610 }
28611
Mark Young0f183a82017-02-28 09:58:04 -070028612 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028613 {
28614 return "(void)";
28615 }
28616
Mark Young0f183a82017-02-28 09:58:04 -070028617 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028618 {
28619 return "{}";
28620 }
28621
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028622 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028623 {
28624 return "(void)";
28625 }
28626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028627 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028628 {
28629 return "{}";
28630 }
28631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028632 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028633 {
28634 return "(void)";
28635 }
28636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028637 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028638 {
28639 return "{}";
28640 }
28641
28642#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028643 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028644 {
28645 return "(void)";
28646 }
28647#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28648
28649#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028650 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028651 {
28652 return "{}";
28653 }
28654#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28655
28656#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028657 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028658 {
28659 return "(void)";
28660 }
28661#endif /*VK_USE_PLATFORM_MIR_KHR*/
28662
28663#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028664 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028665 {
28666 return "{}";
28667 }
28668#endif /*VK_USE_PLATFORM_MIR_KHR*/
28669
Mark Young39389872017-01-19 21:10:49 -070028670#ifdef VK_USE_PLATFORM_VI_NN
28671 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
28672 {
28673 return "(void)";
28674 }
28675#endif /*VK_USE_PLATFORM_VI_NN*/
28676
28677#ifdef VK_USE_PLATFORM_VI_NN
28678 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
28679 {
28680 return "{}";
28681 }
28682#endif /*VK_USE_PLATFORM_VI_NN*/
28683
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028684#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028685 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028686 {
28687 return "(void)";
28688 }
28689#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28690
28691#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028692 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028693 {
28694 return "{}";
28695 }
28696#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28697
28698#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028699 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028700 {
28701 return "(void)";
28702 }
28703#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28704
28705#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028706 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028707 {
28708 return "{}";
28709 }
28710#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28711
28712#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028713 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028714 {
28715 return "(void)";
28716 }
28717#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28718
28719#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028720 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028721 {
28722 return "{}";
28723 }
28724#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28725
28726#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028727 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028728 {
28729 return "(void)";
28730 }
28731#endif /*VK_USE_PLATFORM_XCB_KHR*/
28732
28733#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028734 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028735 {
28736 return "{}";
28737 }
28738#endif /*VK_USE_PLATFORM_XCB_KHR*/
28739
Mark Young0f183a82017-02-28 09:58:04 -070028740#ifdef VK_USE_PLATFORM_IOS_MVK
28741 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
28742 {
28743 return "(void)";
28744 }
28745#endif /*VK_USE_PLATFORM_IOS_MVK*/
28746
28747#ifdef VK_USE_PLATFORM_IOS_MVK
28748 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
28749 {
28750 return "{}";
28751 }
28752#endif /*VK_USE_PLATFORM_IOS_MVK*/
28753
28754#ifdef VK_USE_PLATFORM_MACOS_MVK
28755 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
28756 {
28757 return "(void)";
28758 }
28759#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28760
28761#ifdef VK_USE_PLATFORM_MACOS_MVK
28762 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
28763 {
28764 return "{}";
28765 }
28766#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28767
Mark Young39389872017-01-19 21:10:49 -070028768 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
28769 {
28770 return "(void)";
28771 }
28772
28773 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
28774 {
28775 return "{}";
28776 }
28777
Mark Young0f183a82017-02-28 09:58:04 -070028778 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
28779 {
28780 return "(void)";
28781 }
28782
28783 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
28784 {
28785 return "{}";
28786 }
28787
28788 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
28789 {
28790 return "(void)";
28791 }
28792
28793 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
28794 {
28795 return "{}";
28796 }
28797
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060028798 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
28799 {
28800 return "(void)";
28801 }
28802
28803 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
28804 {
28805 return "{}";
28806 }
28807
28808 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
28809 {
28810 return "(void)";
28811 }
28812
28813 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
28814 {
28815 return "{}";
28816 }
28817
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028818 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028819 {
28820 switch (value)
28821 {
28822 case ImageLayout::eUndefined: return "Undefined";
28823 case ImageLayout::eGeneral: return "General";
28824 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
28825 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
28826 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
28827 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
28828 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
28829 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
28830 case ImageLayout::ePreinitialized: return "Preinitialized";
28831 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060028832 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028833 default: return "invalid";
28834 }
28835 }
28836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028837 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028838 {
28839 switch (value)
28840 {
28841 case AttachmentLoadOp::eLoad: return "Load";
28842 case AttachmentLoadOp::eClear: return "Clear";
28843 case AttachmentLoadOp::eDontCare: return "DontCare";
28844 default: return "invalid";
28845 }
28846 }
28847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028848 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028849 {
28850 switch (value)
28851 {
28852 case AttachmentStoreOp::eStore: return "Store";
28853 case AttachmentStoreOp::eDontCare: return "DontCare";
28854 default: return "invalid";
28855 }
28856 }
28857
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028858 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028859 {
28860 switch (value)
28861 {
28862 case ImageType::e1D: return "1D";
28863 case ImageType::e2D: return "2D";
28864 case ImageType::e3D: return "3D";
28865 default: return "invalid";
28866 }
28867 }
28868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028869 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028870 {
28871 switch (value)
28872 {
28873 case ImageTiling::eOptimal: return "Optimal";
28874 case ImageTiling::eLinear: return "Linear";
28875 default: return "invalid";
28876 }
28877 }
28878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028879 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028880 {
28881 switch (value)
28882 {
28883 case ImageViewType::e1D: return "1D";
28884 case ImageViewType::e2D: return "2D";
28885 case ImageViewType::e3D: return "3D";
28886 case ImageViewType::eCube: return "Cube";
28887 case ImageViewType::e1DArray: return "1DArray";
28888 case ImageViewType::e2DArray: return "2DArray";
28889 case ImageViewType::eCubeArray: return "CubeArray";
28890 default: return "invalid";
28891 }
28892 }
28893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028894 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028895 {
28896 switch (value)
28897 {
28898 case CommandBufferLevel::ePrimary: return "Primary";
28899 case CommandBufferLevel::eSecondary: return "Secondary";
28900 default: return "invalid";
28901 }
28902 }
28903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028904 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028905 {
28906 switch (value)
28907 {
28908 case ComponentSwizzle::eIdentity: return "Identity";
28909 case ComponentSwizzle::eZero: return "Zero";
28910 case ComponentSwizzle::eOne: return "One";
28911 case ComponentSwizzle::eR: return "R";
28912 case ComponentSwizzle::eG: return "G";
28913 case ComponentSwizzle::eB: return "B";
28914 case ComponentSwizzle::eA: return "A";
28915 default: return "invalid";
28916 }
28917 }
28918
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028919 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028920 {
28921 switch (value)
28922 {
28923 case DescriptorType::eSampler: return "Sampler";
28924 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
28925 case DescriptorType::eSampledImage: return "SampledImage";
28926 case DescriptorType::eStorageImage: return "StorageImage";
28927 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28928 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28929 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28930 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28931 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28932 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28933 case DescriptorType::eInputAttachment: return "InputAttachment";
28934 default: return "invalid";
28935 }
28936 }
28937
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028938 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028939 {
28940 switch (value)
28941 {
28942 case QueryType::eOcclusion: return "Occlusion";
28943 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28944 case QueryType::eTimestamp: return "Timestamp";
28945 default: return "invalid";
28946 }
28947 }
28948
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028949 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028950 {
28951 switch (value)
28952 {
28953 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28954 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28955 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28956 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28957 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28958 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28959 default: return "invalid";
28960 }
28961 }
28962
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028963 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028964 {
28965 switch (value)
28966 {
28967 case PipelineBindPoint::eGraphics: return "Graphics";
28968 case PipelineBindPoint::eCompute: return "Compute";
28969 default: return "invalid";
28970 }
28971 }
28972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028973 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028974 {
28975 switch (value)
28976 {
28977 case PipelineCacheHeaderVersion::eOne: return "One";
28978 default: return "invalid";
28979 }
28980 }
28981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028982 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028983 {
28984 switch (value)
28985 {
28986 case PrimitiveTopology::ePointList: return "PointList";
28987 case PrimitiveTopology::eLineList: return "LineList";
28988 case PrimitiveTopology::eLineStrip: return "LineStrip";
28989 case PrimitiveTopology::eTriangleList: return "TriangleList";
28990 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28991 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28992 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28993 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28994 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28995 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28996 case PrimitiveTopology::ePatchList: return "PatchList";
28997 default: return "invalid";
28998 }
28999 }
29000
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029001 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029002 {
29003 switch (value)
29004 {
29005 case SharingMode::eExclusive: return "Exclusive";
29006 case SharingMode::eConcurrent: return "Concurrent";
29007 default: return "invalid";
29008 }
29009 }
29010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029011 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029012 {
29013 switch (value)
29014 {
29015 case IndexType::eUint16: return "Uint16";
29016 case IndexType::eUint32: return "Uint32";
29017 default: return "invalid";
29018 }
29019 }
29020
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029021 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029022 {
29023 switch (value)
29024 {
29025 case Filter::eNearest: return "Nearest";
29026 case Filter::eLinear: return "Linear";
29027 case Filter::eCubicIMG: return "CubicIMG";
29028 default: return "invalid";
29029 }
29030 }
29031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029032 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029033 {
29034 switch (value)
29035 {
29036 case SamplerMipmapMode::eNearest: return "Nearest";
29037 case SamplerMipmapMode::eLinear: return "Linear";
29038 default: return "invalid";
29039 }
29040 }
29041
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029042 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029043 {
29044 switch (value)
29045 {
29046 case SamplerAddressMode::eRepeat: return "Repeat";
29047 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
29048 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
29049 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
29050 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
29051 default: return "invalid";
29052 }
29053 }
29054
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029055 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029056 {
29057 switch (value)
29058 {
29059 case CompareOp::eNever: return "Never";
29060 case CompareOp::eLess: return "Less";
29061 case CompareOp::eEqual: return "Equal";
29062 case CompareOp::eLessOrEqual: return "LessOrEqual";
29063 case CompareOp::eGreater: return "Greater";
29064 case CompareOp::eNotEqual: return "NotEqual";
29065 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
29066 case CompareOp::eAlways: return "Always";
29067 default: return "invalid";
29068 }
29069 }
29070
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029071 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029072 {
29073 switch (value)
29074 {
29075 case PolygonMode::eFill: return "Fill";
29076 case PolygonMode::eLine: return "Line";
29077 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060029078 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029079 default: return "invalid";
29080 }
29081 }
29082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029083 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029084 {
29085 switch (value)
29086 {
29087 case CullModeFlagBits::eNone: return "None";
29088 case CullModeFlagBits::eFront: return "Front";
29089 case CullModeFlagBits::eBack: return "Back";
29090 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
29091 default: return "invalid";
29092 }
29093 }
29094
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029095 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029096 {
29097 if (!value) return "{}";
29098 std::string result;
29099 if (value & CullModeFlagBits::eNone) result += "None | ";
29100 if (value & CullModeFlagBits::eFront) result += "Front | ";
29101 if (value & CullModeFlagBits::eBack) result += "Back | ";
29102 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
29103 return "{" + result.substr(0, result.size() - 3) + "}";
29104 }
29105
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029106 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029107 {
29108 switch (value)
29109 {
29110 case FrontFace::eCounterClockwise: return "CounterClockwise";
29111 case FrontFace::eClockwise: return "Clockwise";
29112 default: return "invalid";
29113 }
29114 }
29115
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029116 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029117 {
29118 switch (value)
29119 {
29120 case BlendFactor::eZero: return "Zero";
29121 case BlendFactor::eOne: return "One";
29122 case BlendFactor::eSrcColor: return "SrcColor";
29123 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
29124 case BlendFactor::eDstColor: return "DstColor";
29125 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
29126 case BlendFactor::eSrcAlpha: return "SrcAlpha";
29127 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
29128 case BlendFactor::eDstAlpha: return "DstAlpha";
29129 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
29130 case BlendFactor::eConstantColor: return "ConstantColor";
29131 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
29132 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
29133 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
29134 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
29135 case BlendFactor::eSrc1Color: return "Src1Color";
29136 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
29137 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
29138 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
29139 default: return "invalid";
29140 }
29141 }
29142
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029143 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029144 {
29145 switch (value)
29146 {
29147 case BlendOp::eAdd: return "Add";
29148 case BlendOp::eSubtract: return "Subtract";
29149 case BlendOp::eReverseSubtract: return "ReverseSubtract";
29150 case BlendOp::eMin: return "Min";
29151 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060029152 case BlendOp::eZeroEXT: return "ZeroEXT";
29153 case BlendOp::eSrcEXT: return "SrcEXT";
29154 case BlendOp::eDstEXT: return "DstEXT";
29155 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
29156 case BlendOp::eDstOverEXT: return "DstOverEXT";
29157 case BlendOp::eSrcInEXT: return "SrcInEXT";
29158 case BlendOp::eDstInEXT: return "DstInEXT";
29159 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
29160 case BlendOp::eDstOutEXT: return "DstOutEXT";
29161 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
29162 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
29163 case BlendOp::eXorEXT: return "XorEXT";
29164 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
29165 case BlendOp::eScreenEXT: return "ScreenEXT";
29166 case BlendOp::eOverlayEXT: return "OverlayEXT";
29167 case BlendOp::eDarkenEXT: return "DarkenEXT";
29168 case BlendOp::eLightenEXT: return "LightenEXT";
29169 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
29170 case BlendOp::eColorburnEXT: return "ColorburnEXT";
29171 case BlendOp::eHardlightEXT: return "HardlightEXT";
29172 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
29173 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
29174 case BlendOp::eExclusionEXT: return "ExclusionEXT";
29175 case BlendOp::eInvertEXT: return "InvertEXT";
29176 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
29177 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
29178 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
29179 case BlendOp::eVividlightEXT: return "VividlightEXT";
29180 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
29181 case BlendOp::ePinlightEXT: return "PinlightEXT";
29182 case BlendOp::eHardmixEXT: return "HardmixEXT";
29183 case BlendOp::eHslHueEXT: return "HslHueEXT";
29184 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
29185 case BlendOp::eHslColorEXT: return "HslColorEXT";
29186 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
29187 case BlendOp::ePlusEXT: return "PlusEXT";
29188 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
29189 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
29190 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
29191 case BlendOp::eMinusEXT: return "MinusEXT";
29192 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
29193 case BlendOp::eContrastEXT: return "ContrastEXT";
29194 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
29195 case BlendOp::eRedEXT: return "RedEXT";
29196 case BlendOp::eGreenEXT: return "GreenEXT";
29197 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029198 default: return "invalid";
29199 }
29200 }
29201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029202 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029203 {
29204 switch (value)
29205 {
29206 case StencilOp::eKeep: return "Keep";
29207 case StencilOp::eZero: return "Zero";
29208 case StencilOp::eReplace: return "Replace";
29209 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
29210 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
29211 case StencilOp::eInvert: return "Invert";
29212 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
29213 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
29214 default: return "invalid";
29215 }
29216 }
29217
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029218 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029219 {
29220 switch (value)
29221 {
29222 case LogicOp::eClear: return "Clear";
29223 case LogicOp::eAnd: return "And";
29224 case LogicOp::eAndReverse: return "AndReverse";
29225 case LogicOp::eCopy: return "Copy";
29226 case LogicOp::eAndInverted: return "AndInverted";
29227 case LogicOp::eNoOp: return "NoOp";
29228 case LogicOp::eXor: return "Xor";
29229 case LogicOp::eOr: return "Or";
29230 case LogicOp::eNor: return "Nor";
29231 case LogicOp::eEquivalent: return "Equivalent";
29232 case LogicOp::eInvert: return "Invert";
29233 case LogicOp::eOrReverse: return "OrReverse";
29234 case LogicOp::eCopyInverted: return "CopyInverted";
29235 case LogicOp::eOrInverted: return "OrInverted";
29236 case LogicOp::eNand: return "Nand";
29237 case LogicOp::eSet: return "Set";
29238 default: return "invalid";
29239 }
29240 }
29241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029242 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029243 {
29244 switch (value)
29245 {
29246 case InternalAllocationType::eExecutable: return "Executable";
29247 default: return "invalid";
29248 }
29249 }
29250
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029251 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029252 {
29253 switch (value)
29254 {
29255 case SystemAllocationScope::eCommand: return "Command";
29256 case SystemAllocationScope::eObject: return "Object";
29257 case SystemAllocationScope::eCache: return "Cache";
29258 case SystemAllocationScope::eDevice: return "Device";
29259 case SystemAllocationScope::eInstance: return "Instance";
29260 default: return "invalid";
29261 }
29262 }
29263
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029264 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029265 {
29266 switch (value)
29267 {
29268 case PhysicalDeviceType::eOther: return "Other";
29269 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
29270 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
29271 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
29272 case PhysicalDeviceType::eCpu: return "Cpu";
29273 default: return "invalid";
29274 }
29275 }
29276
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029277 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029278 {
29279 switch (value)
29280 {
29281 case VertexInputRate::eVertex: return "Vertex";
29282 case VertexInputRate::eInstance: return "Instance";
29283 default: return "invalid";
29284 }
29285 }
29286
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029287 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029288 {
29289 switch (value)
29290 {
29291 case Format::eUndefined: return "Undefined";
29292 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
29293 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
29294 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
29295 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
29296 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
29297 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
29298 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
29299 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
29300 case Format::eR8Unorm: return "R8Unorm";
29301 case Format::eR8Snorm: return "R8Snorm";
29302 case Format::eR8Uscaled: return "R8Uscaled";
29303 case Format::eR8Sscaled: return "R8Sscaled";
29304 case Format::eR8Uint: return "R8Uint";
29305 case Format::eR8Sint: return "R8Sint";
29306 case Format::eR8Srgb: return "R8Srgb";
29307 case Format::eR8G8Unorm: return "R8G8Unorm";
29308 case Format::eR8G8Snorm: return "R8G8Snorm";
29309 case Format::eR8G8Uscaled: return "R8G8Uscaled";
29310 case Format::eR8G8Sscaled: return "R8G8Sscaled";
29311 case Format::eR8G8Uint: return "R8G8Uint";
29312 case Format::eR8G8Sint: return "R8G8Sint";
29313 case Format::eR8G8Srgb: return "R8G8Srgb";
29314 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
29315 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
29316 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
29317 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
29318 case Format::eR8G8B8Uint: return "R8G8B8Uint";
29319 case Format::eR8G8B8Sint: return "R8G8B8Sint";
29320 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
29321 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
29322 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
29323 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
29324 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
29325 case Format::eB8G8R8Uint: return "B8G8R8Uint";
29326 case Format::eB8G8R8Sint: return "B8G8R8Sint";
29327 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
29328 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
29329 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
29330 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
29331 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
29332 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
29333 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
29334 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
29335 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
29336 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
29337 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
29338 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
29339 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
29340 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
29341 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
29342 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
29343 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
29344 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
29345 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
29346 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
29347 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
29348 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
29349 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
29350 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
29351 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
29352 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
29353 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
29354 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
29355 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
29356 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
29357 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
29358 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
29359 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
29360 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
29361 case Format::eR16Unorm: return "R16Unorm";
29362 case Format::eR16Snorm: return "R16Snorm";
29363 case Format::eR16Uscaled: return "R16Uscaled";
29364 case Format::eR16Sscaled: return "R16Sscaled";
29365 case Format::eR16Uint: return "R16Uint";
29366 case Format::eR16Sint: return "R16Sint";
29367 case Format::eR16Sfloat: return "R16Sfloat";
29368 case Format::eR16G16Unorm: return "R16G16Unorm";
29369 case Format::eR16G16Snorm: return "R16G16Snorm";
29370 case Format::eR16G16Uscaled: return "R16G16Uscaled";
29371 case Format::eR16G16Sscaled: return "R16G16Sscaled";
29372 case Format::eR16G16Uint: return "R16G16Uint";
29373 case Format::eR16G16Sint: return "R16G16Sint";
29374 case Format::eR16G16Sfloat: return "R16G16Sfloat";
29375 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
29376 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
29377 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
29378 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
29379 case Format::eR16G16B16Uint: return "R16G16B16Uint";
29380 case Format::eR16G16B16Sint: return "R16G16B16Sint";
29381 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
29382 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
29383 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
29384 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
29385 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
29386 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
29387 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
29388 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
29389 case Format::eR32Uint: return "R32Uint";
29390 case Format::eR32Sint: return "R32Sint";
29391 case Format::eR32Sfloat: return "R32Sfloat";
29392 case Format::eR32G32Uint: return "R32G32Uint";
29393 case Format::eR32G32Sint: return "R32G32Sint";
29394 case Format::eR32G32Sfloat: return "R32G32Sfloat";
29395 case Format::eR32G32B32Uint: return "R32G32B32Uint";
29396 case Format::eR32G32B32Sint: return "R32G32B32Sint";
29397 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
29398 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
29399 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
29400 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
29401 case Format::eR64Uint: return "R64Uint";
29402 case Format::eR64Sint: return "R64Sint";
29403 case Format::eR64Sfloat: return "R64Sfloat";
29404 case Format::eR64G64Uint: return "R64G64Uint";
29405 case Format::eR64G64Sint: return "R64G64Sint";
29406 case Format::eR64G64Sfloat: return "R64G64Sfloat";
29407 case Format::eR64G64B64Uint: return "R64G64B64Uint";
29408 case Format::eR64G64B64Sint: return "R64G64B64Sint";
29409 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
29410 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
29411 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
29412 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
29413 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
29414 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
29415 case Format::eD16Unorm: return "D16Unorm";
29416 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
29417 case Format::eD32Sfloat: return "D32Sfloat";
29418 case Format::eS8Uint: return "S8Uint";
29419 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
29420 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
29421 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
29422 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
29423 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
29424 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
29425 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
29426 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
29427 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
29428 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
29429 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
29430 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
29431 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
29432 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
29433 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
29434 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
29435 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
29436 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
29437 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
29438 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
29439 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
29440 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
29441 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
29442 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
29443 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
29444 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
29445 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
29446 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
29447 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
29448 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
29449 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
29450 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
29451 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
29452 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
29453 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
29454 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
29455 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
29456 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
29457 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
29458 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
29459 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
29460 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
29461 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
29462 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
29463 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
29464 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
29465 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
29466 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
29467 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
29468 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
29469 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
29470 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
29471 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
29472 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
29473 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
29474 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
29475 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060029476 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
29477 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
29478 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
29479 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
29480 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
29481 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
29482 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
29483 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029484 default: return "invalid";
29485 }
29486 }
29487
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029488 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029489 {
29490 switch (value)
29491 {
29492 case StructureType::eApplicationInfo: return "ApplicationInfo";
29493 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
29494 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
29495 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
29496 case StructureType::eSubmitInfo: return "SubmitInfo";
29497 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
29498 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
29499 case StructureType::eBindSparseInfo: return "BindSparseInfo";
29500 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
29501 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
29502 case StructureType::eEventCreateInfo: return "EventCreateInfo";
29503 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
29504 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
29505 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
29506 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
29507 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
29508 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
29509 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
29510 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
29511 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
29512 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
29513 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
29514 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
29515 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
29516 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
29517 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
29518 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
29519 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
29520 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
29521 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
29522 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
29523 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
29524 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
29525 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
29526 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
29527 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
29528 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
29529 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
29530 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
29531 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
29532 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
29533 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
29534 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
29535 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
29536 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
29537 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
29538 case StructureType::eMemoryBarrier: return "MemoryBarrier";
29539 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
29540 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
29541 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
29542 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
29543 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
29544 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
29545 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
29546 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
29547 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
29548 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
29549 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
29550 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
29551 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
29552 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
29553 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
29554 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
29555 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
29556 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
29557 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
29558 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
29559 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029560 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070029561 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
29562 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
29563 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060029564 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
29565 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
29566 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
29567 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
29568 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070029569 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
29570 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
29571 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
29572 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
29573 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
29574 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
29575 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
29576 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
29577 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029578 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
29579 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
29580 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
29581 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
29582 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
29583 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
29584 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
29585 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
29586 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
29587 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
29588 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
29589 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
29590 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060029591 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070029592 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070029593 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
29594 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
29595 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
29596 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
29597 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
29598 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
29599 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Young0f183a82017-02-28 09:58:04 -070029600 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
29601 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
29602 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
29603 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
29604 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
29605 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
29606 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
29607 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
29608 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
29609 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
29610 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
29611 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
29612 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
29613 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
29614 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
29615 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
29616 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060029617 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070029618 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029619 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
29620 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
29621 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
29622 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
29623 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
29624 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070029625 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070029626 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
29627 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
29628 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
29629 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
29630 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029631 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070029632 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
29633 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
29634 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
29635 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029636 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060029637 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
29638 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
29639 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
29640 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029641 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
29642 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060029643 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
29644 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
29645 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
29646 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
29647 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
29648 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
29649 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029650 default: return "invalid";
29651 }
29652 }
29653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029654 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029655 {
29656 switch (value)
29657 {
29658 case SubpassContents::eInline: return "Inline";
29659 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
29660 default: return "invalid";
29661 }
29662 }
29663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029664 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029665 {
29666 switch (value)
29667 {
29668 case DynamicState::eViewport: return "Viewport";
29669 case DynamicState::eScissor: return "Scissor";
29670 case DynamicState::eLineWidth: return "LineWidth";
29671 case DynamicState::eDepthBias: return "DepthBias";
29672 case DynamicState::eBlendConstants: return "BlendConstants";
29673 case DynamicState::eDepthBounds: return "DepthBounds";
29674 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
29675 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
29676 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070029677 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
29678 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
29679 default: return "invalid";
29680 }
29681 }
29682
29683 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
29684 {
29685 switch (value)
29686 {
29687 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
29688 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029689 default: return "invalid";
29690 }
29691 }
29692
Mark Lobodzinski54385432017-05-15 10:27:52 -060029693 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
29694 {
29695 switch (value)
29696 {
29697 case ObjectType::eUnknown: return "Unknown";
29698 case ObjectType::eInstance: return "Instance";
29699 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
29700 case ObjectType::eDevice: return "Device";
29701 case ObjectType::eQueue: return "Queue";
29702 case ObjectType::eSemaphore: return "Semaphore";
29703 case ObjectType::eCommandBuffer: return "CommandBuffer";
29704 case ObjectType::eFence: return "Fence";
29705 case ObjectType::eDeviceMemory: return "DeviceMemory";
29706 case ObjectType::eBuffer: return "Buffer";
29707 case ObjectType::eImage: return "Image";
29708 case ObjectType::eEvent: return "Event";
29709 case ObjectType::eQueryPool: return "QueryPool";
29710 case ObjectType::eBufferView: return "BufferView";
29711 case ObjectType::eImageView: return "ImageView";
29712 case ObjectType::eShaderModule: return "ShaderModule";
29713 case ObjectType::ePipelineCache: return "PipelineCache";
29714 case ObjectType::ePipelineLayout: return "PipelineLayout";
29715 case ObjectType::eRenderPass: return "RenderPass";
29716 case ObjectType::ePipeline: return "Pipeline";
29717 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
29718 case ObjectType::eSampler: return "Sampler";
29719 case ObjectType::eDescriptorPool: return "DescriptorPool";
29720 case ObjectType::eDescriptorSet: return "DescriptorSet";
29721 case ObjectType::eFramebuffer: return "Framebuffer";
29722 case ObjectType::eCommandPool: return "CommandPool";
29723 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
29724 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
29725 case ObjectType::eDisplayKHR: return "DisplayKHR";
29726 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
29727 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
29728 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
29729 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
29730 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
29731 default: return "invalid";
29732 }
29733 }
29734
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029735 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029736 {
29737 switch (value)
29738 {
29739 case QueueFlagBits::eGraphics: return "Graphics";
29740 case QueueFlagBits::eCompute: return "Compute";
29741 case QueueFlagBits::eTransfer: return "Transfer";
29742 case QueueFlagBits::eSparseBinding: return "SparseBinding";
29743 default: return "invalid";
29744 }
29745 }
29746
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029747 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029748 {
29749 if (!value) return "{}";
29750 std::string result;
29751 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
29752 if (value & QueueFlagBits::eCompute) result += "Compute | ";
29753 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
29754 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
29755 return "{" + result.substr(0, result.size() - 3) + "}";
29756 }
29757
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029758 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029759 {
29760 switch (value)
29761 {
29762 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
29763 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
29764 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
29765 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
29766 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
29767 default: return "invalid";
29768 }
29769 }
29770
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029771 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029772 {
29773 if (!value) return "{}";
29774 std::string result;
29775 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
29776 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
29777 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
29778 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
29779 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
29780 return "{" + result.substr(0, result.size() - 3) + "}";
29781 }
29782
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029783 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029784 {
29785 switch (value)
29786 {
29787 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070029788 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029789 default: return "invalid";
29790 }
29791 }
29792
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029793 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029794 {
29795 if (!value) return "{}";
29796 std::string result;
29797 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070029798 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029799 return "{" + result.substr(0, result.size() - 3) + "}";
29800 }
29801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029802 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029803 {
29804 switch (value)
29805 {
29806 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
29807 case AccessFlagBits::eIndexRead: return "IndexRead";
29808 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
29809 case AccessFlagBits::eUniformRead: return "UniformRead";
29810 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
29811 case AccessFlagBits::eShaderRead: return "ShaderRead";
29812 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
29813 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
29814 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
29815 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
29816 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
29817 case AccessFlagBits::eTransferRead: return "TransferRead";
29818 case AccessFlagBits::eTransferWrite: return "TransferWrite";
29819 case AccessFlagBits::eHostRead: return "HostRead";
29820 case AccessFlagBits::eHostWrite: return "HostWrite";
29821 case AccessFlagBits::eMemoryRead: return "MemoryRead";
29822 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029823 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
29824 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060029825 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029826 default: return "invalid";
29827 }
29828 }
29829
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029830 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029831 {
29832 if (!value) return "{}";
29833 std::string result;
29834 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
29835 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
29836 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
29837 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
29838 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
29839 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
29840 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
29841 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
29842 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
29843 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
29844 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
29845 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
29846 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
29847 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
29848 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
29849 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
29850 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029851 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
29852 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060029853 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029854 return "{" + result.substr(0, result.size() - 3) + "}";
29855 }
29856
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029857 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029858 {
29859 switch (value)
29860 {
29861 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
29862 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
29863 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29864 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29865 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
29866 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
29867 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
29868 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
29869 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
29870 default: return "invalid";
29871 }
29872 }
29873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029874 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029875 {
29876 if (!value) return "{}";
29877 std::string result;
29878 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29879 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
29880 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29881 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29882 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
29883 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
29884 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
29885 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29886 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
29887 return "{" + result.substr(0, result.size() - 3) + "}";
29888 }
29889
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029890 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029891 {
29892 switch (value)
29893 {
29894 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
29895 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
29896 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
29897 default: return "invalid";
29898 }
29899 }
29900
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029901 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029902 {
29903 if (!value) return "{}";
29904 std::string result;
29905 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29906 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29907 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29908 return "{" + result.substr(0, result.size() - 3) + "}";
29909 }
29910
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029911 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029912 {
29913 switch (value)
29914 {
29915 case ShaderStageFlagBits::eVertex: return "Vertex";
29916 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
29917 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
29918 case ShaderStageFlagBits::eGeometry: return "Geometry";
29919 case ShaderStageFlagBits::eFragment: return "Fragment";
29920 case ShaderStageFlagBits::eCompute: return "Compute";
29921 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
29922 case ShaderStageFlagBits::eAll: return "All";
29923 default: return "invalid";
29924 }
29925 }
29926
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029927 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029928 {
29929 if (!value) return "{}";
29930 std::string result;
29931 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
29932 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
29933 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
29934 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
29935 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
29936 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
29937 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29938 if (value & ShaderStageFlagBits::eAll) result += "All | ";
29939 return "{" + result.substr(0, result.size() - 3) + "}";
29940 }
29941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029942 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029943 {
29944 switch (value)
29945 {
29946 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
29947 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
29948 case ImageUsageFlagBits::eSampled: return "Sampled";
29949 case ImageUsageFlagBits::eStorage: return "Storage";
29950 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
29951 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29952 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
29953 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
29954 default: return "invalid";
29955 }
29956 }
29957
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029958 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029959 {
29960 if (!value) return "{}";
29961 std::string result;
29962 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29963 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
29964 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
29965 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
29966 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
29967 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29968 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
29969 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
29970 return "{" + result.substr(0, result.size() - 3) + "}";
29971 }
29972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029973 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029974 {
29975 switch (value)
29976 {
29977 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
29978 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
29979 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
29980 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
29981 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070029982 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070029983 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029984 default: return "invalid";
29985 }
29986 }
29987
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029988 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029989 {
29990 if (!value) return "{}";
29991 std::string result;
29992 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29993 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29994 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29995 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
29996 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070029997 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070029998 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029999 return "{" + result.substr(0, result.size() - 3) + "}";
30000 }
30001
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030002 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030003 {
30004 switch (value)
30005 {
30006 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
30007 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
30008 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070030009 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
30010 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030011 default: return "invalid";
30012 }
30013 }
30014
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030015 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030016 {
30017 if (!value) return "{}";
30018 std::string result;
30019 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
30020 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
30021 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070030022 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
30023 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030024 return "{" + result.substr(0, result.size() - 3) + "}";
30025 }
30026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030027 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030028 {
30029 switch (value)
30030 {
30031 case ColorComponentFlagBits::eR: return "R";
30032 case ColorComponentFlagBits::eG: return "G";
30033 case ColorComponentFlagBits::eB: return "B";
30034 case ColorComponentFlagBits::eA: return "A";
30035 default: return "invalid";
30036 }
30037 }
30038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030039 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030040 {
30041 if (!value) return "{}";
30042 std::string result;
30043 if (value & ColorComponentFlagBits::eR) result += "R | ";
30044 if (value & ColorComponentFlagBits::eG) result += "G | ";
30045 if (value & ColorComponentFlagBits::eB) result += "B | ";
30046 if (value & ColorComponentFlagBits::eA) result += "A | ";
30047 return "{" + result.substr(0, result.size() - 3) + "}";
30048 }
30049
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030050 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030051 {
30052 switch (value)
30053 {
30054 case FenceCreateFlagBits::eSignaled: return "Signaled";
30055 default: return "invalid";
30056 }
30057 }
30058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030059 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030060 {
30061 if (!value) return "{}";
30062 std::string result;
30063 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
30064 return "{" + result.substr(0, result.size() - 3) + "}";
30065 }
30066
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030067 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030068 {
30069 switch (value)
30070 {
30071 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
30072 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
30073 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
30074 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
30075 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
30076 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
30077 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
30078 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
30079 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
30080 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
30081 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
30082 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
30083 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
30084 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070030085 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
30086 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030087 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030088 default: return "invalid";
30089 }
30090 }
30091
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030092 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030093 {
30094 if (!value) return "{}";
30095 std::string result;
30096 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
30097 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
30098 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
30099 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
30100 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
30101 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
30102 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
30103 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
30104 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
30105 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
30106 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
30107 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
30108 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
30109 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070030110 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
30111 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060030112 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030113 return "{" + result.substr(0, result.size() - 3) + "}";
30114 }
30115
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030116 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030117 {
30118 switch (value)
30119 {
30120 case QueryControlFlagBits::ePrecise: return "Precise";
30121 default: return "invalid";
30122 }
30123 }
30124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030125 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030126 {
30127 if (!value) return "{}";
30128 std::string result;
30129 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
30130 return "{" + result.substr(0, result.size() - 3) + "}";
30131 }
30132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030133 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030134 {
30135 switch (value)
30136 {
30137 case QueryResultFlagBits::e64: return "64";
30138 case QueryResultFlagBits::eWait: return "Wait";
30139 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
30140 case QueryResultFlagBits::ePartial: return "Partial";
30141 default: return "invalid";
30142 }
30143 }
30144
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030145 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030146 {
30147 if (!value) return "{}";
30148 std::string result;
30149 if (value & QueryResultFlagBits::e64) result += "64 | ";
30150 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
30151 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
30152 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
30153 return "{" + result.substr(0, result.size() - 3) + "}";
30154 }
30155
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030156 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030157 {
30158 switch (value)
30159 {
30160 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
30161 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
30162 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
30163 default: return "invalid";
30164 }
30165 }
30166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030167 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030168 {
30169 if (!value) return "{}";
30170 std::string result;
30171 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
30172 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
30173 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
30174 return "{" + result.substr(0, result.size() - 3) + "}";
30175 }
30176
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030177 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030178 {
30179 switch (value)
30180 {
30181 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
30182 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
30183 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
30184 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
30185 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
30186 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
30187 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
30188 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
30189 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
30190 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
30191 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
30192 default: return "invalid";
30193 }
30194 }
30195
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030196 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030197 {
30198 if (!value) return "{}";
30199 std::string result;
30200 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
30201 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
30202 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
30203 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
30204 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
30205 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
30206 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
30207 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
30208 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
30209 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
30210 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
30211 return "{" + result.substr(0, result.size() - 3) + "}";
30212 }
30213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030214 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030215 {
30216 switch (value)
30217 {
30218 case ImageAspectFlagBits::eColor: return "Color";
30219 case ImageAspectFlagBits::eDepth: return "Depth";
30220 case ImageAspectFlagBits::eStencil: return "Stencil";
30221 case ImageAspectFlagBits::eMetadata: return "Metadata";
30222 default: return "invalid";
30223 }
30224 }
30225
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030226 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030227 {
30228 if (!value) return "{}";
30229 std::string result;
30230 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
30231 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
30232 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
30233 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
30234 return "{" + result.substr(0, result.size() - 3) + "}";
30235 }
30236
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030237 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030238 {
30239 switch (value)
30240 {
30241 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
30242 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
30243 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
30244 default: return "invalid";
30245 }
30246 }
30247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030248 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030249 {
30250 if (!value) return "{}";
30251 std::string result;
30252 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
30253 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
30254 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
30255 return "{" + result.substr(0, result.size() - 3) + "}";
30256 }
30257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030258 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030259 {
30260 switch (value)
30261 {
30262 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
30263 default: return "invalid";
30264 }
30265 }
30266
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030267 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030268 {
30269 if (!value) return "{}";
30270 std::string result;
30271 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
30272 return "{" + result.substr(0, result.size() - 3) + "}";
30273 }
30274
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030275 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030276 {
30277 switch (value)
30278 {
30279 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
30280 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
30281 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
30282 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
30283 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
30284 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
30285 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
30286 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
30287 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
30288 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
30289 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
30290 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
30291 case PipelineStageFlagBits::eTransfer: return "Transfer";
30292 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
30293 case PipelineStageFlagBits::eHost: return "Host";
30294 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
30295 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030296 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030297 default: return "invalid";
30298 }
30299 }
30300
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030301 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030302 {
30303 if (!value) return "{}";
30304 std::string result;
30305 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
30306 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
30307 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
30308 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
30309 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
30310 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
30311 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
30312 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
30313 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
30314 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
30315 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
30316 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
30317 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
30318 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
30319 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
30320 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
30321 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030322 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030323 return "{" + result.substr(0, result.size() - 3) + "}";
30324 }
30325
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030326 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030327 {
30328 switch (value)
30329 {
30330 case CommandPoolCreateFlagBits::eTransient: return "Transient";
30331 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
30332 default: return "invalid";
30333 }
30334 }
30335
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030336 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030337 {
30338 if (!value) return "{}";
30339 std::string result;
30340 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
30341 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
30342 return "{" + result.substr(0, result.size() - 3) + "}";
30343 }
30344
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030345 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030346 {
30347 switch (value)
30348 {
30349 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
30350 default: return "invalid";
30351 }
30352 }
30353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030354 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030355 {
30356 if (!value) return "{}";
30357 std::string result;
30358 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
30359 return "{" + result.substr(0, result.size() - 3) + "}";
30360 }
30361
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030362 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030363 {
30364 switch (value)
30365 {
30366 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
30367 default: return "invalid";
30368 }
30369 }
30370
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030371 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030372 {
30373 if (!value) return "{}";
30374 std::string result;
30375 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
30376 return "{" + result.substr(0, result.size() - 3) + "}";
30377 }
30378
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030379 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030380 {
30381 switch (value)
30382 {
30383 case SampleCountFlagBits::e1: return "1";
30384 case SampleCountFlagBits::e2: return "2";
30385 case SampleCountFlagBits::e4: return "4";
30386 case SampleCountFlagBits::e8: return "8";
30387 case SampleCountFlagBits::e16: return "16";
30388 case SampleCountFlagBits::e32: return "32";
30389 case SampleCountFlagBits::e64: return "64";
30390 default: return "invalid";
30391 }
30392 }
30393
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030394 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030395 {
30396 if (!value) return "{}";
30397 std::string result;
30398 if (value & SampleCountFlagBits::e1) result += "1 | ";
30399 if (value & SampleCountFlagBits::e2) result += "2 | ";
30400 if (value & SampleCountFlagBits::e4) result += "4 | ";
30401 if (value & SampleCountFlagBits::e8) result += "8 | ";
30402 if (value & SampleCountFlagBits::e16) result += "16 | ";
30403 if (value & SampleCountFlagBits::e32) result += "32 | ";
30404 if (value & SampleCountFlagBits::e64) result += "64 | ";
30405 return "{" + result.substr(0, result.size() - 3) + "}";
30406 }
30407
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030408 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030409 {
30410 switch (value)
30411 {
30412 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
30413 default: return "invalid";
30414 }
30415 }
30416
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030417 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030418 {
30419 if (!value) return "{}";
30420 std::string result;
30421 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
30422 return "{" + result.substr(0, result.size() - 3) + "}";
30423 }
30424
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030425 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030426 {
30427 switch (value)
30428 {
30429 case StencilFaceFlagBits::eFront: return "Front";
30430 case StencilFaceFlagBits::eBack: return "Back";
30431 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
30432 default: return "invalid";
30433 }
30434 }
30435
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030436 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030437 {
30438 if (!value) return "{}";
30439 std::string result;
30440 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
30441 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
30442 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
30443 return "{" + result.substr(0, result.size() - 3) + "}";
30444 }
30445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030446 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030447 {
30448 switch (value)
30449 {
30450 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
30451 default: return "invalid";
30452 }
30453 }
30454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030455 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030456 {
30457 if (!value) return "{}";
30458 std::string result;
30459 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
30460 return "{" + result.substr(0, result.size() - 3) + "}";
30461 }
30462
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030463 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030464 {
30465 switch (value)
30466 {
30467 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070030468 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
30469 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030470 default: return "invalid";
30471 }
30472 }
30473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030474 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030475 {
30476 if (!value) return "{}";
30477 std::string result;
30478 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070030479 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
30480 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030481 return "{" + result.substr(0, result.size() - 3) + "}";
30482 }
30483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030484 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030485 {
30486 switch (value)
30487 {
30488 case PresentModeKHR::eImmediate: return "Immediate";
30489 case PresentModeKHR::eMailbox: return "Mailbox";
30490 case PresentModeKHR::eFifo: return "Fifo";
30491 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030492 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
30493 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030494 default: return "invalid";
30495 }
30496 }
30497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030498 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030499 {
30500 switch (value)
30501 {
30502 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060030503 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
30504 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
30505 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
30506 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
30507 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
30508 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
30509 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
30510 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
30511 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
30512 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
30513 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
30514 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
30515 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030516 default: return "invalid";
30517 }
30518 }
30519
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030520 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030521 {
30522 switch (value)
30523 {
30524 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
30525 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
30526 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
30527 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
30528 default: return "invalid";
30529 }
30530 }
30531
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030532 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030533 {
30534 if (!value) return "{}";
30535 std::string result;
30536 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
30537 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
30538 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
30539 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
30540 return "{" + result.substr(0, result.size() - 3) + "}";
30541 }
30542
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030543 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030544 {
30545 switch (value)
30546 {
30547 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
30548 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
30549 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
30550 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
30551 default: return "invalid";
30552 }
30553 }
30554
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030555 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030556 {
30557 if (!value) return "{}";
30558 std::string result;
30559 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
30560 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
30561 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
30562 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
30563 return "{" + result.substr(0, result.size() - 3) + "}";
30564 }
30565
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030566 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030567 {
30568 switch (value)
30569 {
30570 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
30571 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
30572 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
30573 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
30574 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
30575 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
30576 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
30577 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
30578 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
30579 default: return "invalid";
30580 }
30581 }
30582
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030583 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030584 {
30585 if (!value) return "{}";
30586 std::string result;
30587 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
30588 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
30589 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
30590 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
30591 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
30592 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
30593 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
30594 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
30595 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
30596 return "{" + result.substr(0, result.size() - 3) + "}";
30597 }
30598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030599 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030600 {
30601 switch (value)
30602 {
30603 case DebugReportFlagBitsEXT::eInformation: return "Information";
30604 case DebugReportFlagBitsEXT::eWarning: return "Warning";
30605 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
30606 case DebugReportFlagBitsEXT::eError: return "Error";
30607 case DebugReportFlagBitsEXT::eDebug: return "Debug";
30608 default: return "invalid";
30609 }
30610 }
30611
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030612 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030613 {
30614 if (!value) return "{}";
30615 std::string result;
30616 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
30617 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
30618 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
30619 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
30620 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
30621 return "{" + result.substr(0, result.size() - 3) + "}";
30622 }
30623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030624 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030625 {
30626 switch (value)
30627 {
30628 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
30629 case DebugReportObjectTypeEXT::eInstance: return "Instance";
30630 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
30631 case DebugReportObjectTypeEXT::eDevice: return "Device";
30632 case DebugReportObjectTypeEXT::eQueue: return "Queue";
30633 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
30634 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
30635 case DebugReportObjectTypeEXT::eFence: return "Fence";
30636 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
30637 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
30638 case DebugReportObjectTypeEXT::eImage: return "Image";
30639 case DebugReportObjectTypeEXT::eEvent: return "Event";
30640 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
30641 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
30642 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
30643 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
30644 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
30645 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
30646 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
30647 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
30648 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
30649 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
30650 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
30651 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
30652 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
30653 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
30654 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
30655 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030656 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030657 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
30658 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
30659 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
30660 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030661 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030662 default: return "invalid";
30663 }
30664 }
30665
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030666 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030667 {
30668 switch (value)
30669 {
30670 case RasterizationOrderAMD::eStrict: return "Strict";
30671 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
30672 default: return "invalid";
30673 }
30674 }
30675
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030676 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030677 {
30678 switch (value)
30679 {
30680 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
30681 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30682 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
30683 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
30684 default: return "invalid";
30685 }
30686 }
30687
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030688 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030689 {
30690 if (!value) return "{}";
30691 std::string result;
30692 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
30693 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30694 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
30695 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
30696 return "{" + result.substr(0, result.size() - 3) + "}";
30697 }
30698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030699 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030700 {
30701 switch (value)
30702 {
30703 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
30704 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
30705 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
30706 default: return "invalid";
30707 }
30708 }
30709
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030710 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030711 {
30712 if (!value) return "{}";
30713 std::string result;
30714 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
30715 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
30716 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
30717 return "{" + result.substr(0, result.size() - 3) + "}";
30718 }
30719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030720 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060030721 {
30722 switch (value)
30723 {
30724 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030725 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060030726 default: return "invalid";
30727 }
30728 }
30729
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030730 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
30731 {
30732 switch (value)
30733 {
30734 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
30735 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
30736 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
30737 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
30738 default: return "invalid";
30739 }
30740 }
30741
30742 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
30743 {
30744 if (!value) return "{}";
30745 std::string result;
30746 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
30747 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
30748 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
30749 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
30750 return "{" + result.substr(0, result.size() - 3) + "}";
30751 }
30752
30753 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
30754 {
30755 switch (value)
30756 {
30757 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
30758 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
30759 default: return "invalid";
30760 }
30761 }
30762
30763 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
30764 {
30765 if (!value) return "{}";
30766 std::string result;
30767 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
30768 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
30769 return "{" + result.substr(0, result.size() - 3) + "}";
30770 }
30771
30772 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
30773 {
30774 switch (value)
30775 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060030776 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
30777 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
30778 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
30779 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
30780 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
30781 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
30782 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
30783 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030784 default: return "invalid";
30785 }
30786 }
30787
30788 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
30789 {
30790 switch (value)
30791 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060030792 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
30793 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
30794 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
30795 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
30796 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030797 default: return "invalid";
30798 }
30799 }
30800
Mark Young0f183a82017-02-28 09:58:04 -070030801 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
30802 {
30803 switch (value)
30804 {
30805 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
30806 default: return "invalid";
30807 }
30808 }
30809
30810 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
30811 {
30812 if (!value) return "{}";
30813 std::string result;
30814 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
30815 return "{" + result.substr(0, result.size() - 3) + "}";
30816 }
30817
30818 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
30819 {
30820 switch (value)
30821 {
30822 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30823 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30824 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30825 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
30826 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
30827 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
30828 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
30829 default: return "invalid";
30830 }
30831 }
30832
30833 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
30834 {
30835 if (!value) return "{}";
30836 std::string result;
30837 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30838 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30839 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30840 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
30841 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
30842 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
30843 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
30844 return "{" + result.substr(0, result.size() - 3) + "}";
30845 }
30846
30847 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
30848 {
30849 switch (value)
30850 {
30851 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
30852 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
30853 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
30854 default: return "invalid";
30855 }
30856 }
30857
30858 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
30859 {
30860 if (!value) return "{}";
30861 std::string result;
30862 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
30863 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30864 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30865 return "{" + result.substr(0, result.size() - 3) + "}";
30866 }
30867
30868 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
30869 {
30870 switch (value)
30871 {
30872 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30873 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30874 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30875 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
30876 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
30877 default: return "invalid";
30878 }
30879 }
30880
30881 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
30882 {
30883 if (!value) return "{}";
30884 std::string result;
30885 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30886 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30887 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30888 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
30889 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
30890 return "{" + result.substr(0, result.size() - 3) + "}";
30891 }
30892
30893 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
30894 {
30895 switch (value)
30896 {
30897 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
30898 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
30899 default: return "invalid";
30900 }
30901 }
30902
30903 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
30904 {
30905 if (!value) return "{}";
30906 std::string result;
30907 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30908 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30909 return "{" + result.substr(0, result.size() - 3) + "}";
30910 }
30911
Mark Young39389872017-01-19 21:10:49 -070030912 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
30913 {
30914 switch (value)
30915 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060030916 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070030917 default: return "invalid";
30918 }
30919 }
30920
30921 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
30922 {
30923 if (!value) return "{}";
30924 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030925 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070030926 return "{" + result.substr(0, result.size() - 3) + "}";
30927 }
30928
30929 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
30930 {
30931 switch (value)
30932 {
30933 case DisplayPowerStateEXT::eOff: return "Off";
30934 case DisplayPowerStateEXT::eSuspend: return "Suspend";
30935 case DisplayPowerStateEXT::eOn: return "On";
30936 default: return "invalid";
30937 }
30938 }
30939
30940 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
30941 {
30942 switch (value)
30943 {
30944 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
30945 default: return "invalid";
30946 }
30947 }
30948
30949 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
30950 {
30951 switch (value)
30952 {
30953 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
30954 default: return "invalid";
30955 }
30956 }
30957
Mark Young0f183a82017-02-28 09:58:04 -070030958 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
30959 {
30960 switch (value)
30961 {
30962 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
30963 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
30964 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
30965 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
30966 default: return "invalid";
30967 }
30968 }
30969
30970 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
30971 {
30972 if (!value) return "{}";
30973 std::string result;
30974 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
30975 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
30976 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
30977 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
30978 return "{" + result.substr(0, result.size() - 3) + "}";
30979 }
30980
30981 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
30982 {
30983 switch (value)
30984 {
30985 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
30986 default: return "invalid";
30987 }
30988 }
30989
30990 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
30991 {
30992 if (!value) return "{}";
30993 std::string result;
30994 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
30995 return "{" + result.substr(0, result.size() - 3) + "}";
30996 }
30997
30998 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
30999 {
31000 switch (value)
31001 {
31002 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
31003 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
31004 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
31005 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
31006 default: return "invalid";
31007 }
31008 }
31009
31010 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
31011 {
31012 if (!value) return "{}";
31013 std::string result;
31014 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
31015 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
31016 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
31017 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
31018 return "{" + result.substr(0, result.size() - 3) + "}";
31019 }
31020
31021 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
31022 {
31023 switch (value)
31024 {
31025 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
31026 default: return "invalid";
31027 }
31028 }
31029
31030 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
31031 {
31032 if (!value) return "{}";
31033 std::string result;
31034 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
31035 return "{" + result.substr(0, result.size() - 3) + "}";
31036 }
31037
31038 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
31039 {
31040 switch (value)
31041 {
31042 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
31043 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
31044 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
31045 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
31046 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
31047 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
31048 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
31049 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
31050 default: return "invalid";
31051 }
31052 }
31053
31054 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
31055 {
31056 switch (value)
31057 {
31058 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
31059 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
31060 default: return "invalid";
31061 }
31062 }
31063
31064 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
31065 {
31066 switch (value)
31067 {
31068 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
31069 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
31070 default: return "invalid";
31071 }
31072 }
31073
31074 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
31075 {
31076 if (!value) return "{}";
31077 std::string result;
31078 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
31079 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
31080 return "{" + result.substr(0, result.size() - 3) + "}";
31081 }
31082
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031083 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
31084 {
31085 switch (value)
31086 {
31087 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
31088 case SamplerReductionModeEXT::eMin: return "Min";
31089 case SamplerReductionModeEXT::eMax: return "Max";
31090 default: return "invalid";
31091 }
31092 }
31093
31094 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
31095 {
31096 switch (value)
31097 {
31098 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
31099 case BlendOverlapEXT::eDisjoint: return "Disjoint";
31100 case BlendOverlapEXT::eConjoint: return "Conjoint";
31101 default: return "invalid";
31102 }
31103 }
31104
31105 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
31106 {
31107 switch (value)
31108 {
31109 case CoverageModulationModeNV::eNone: return "None";
31110 case CoverageModulationModeNV::eRgb: return "Rgb";
31111 case CoverageModulationModeNV::eAlpha: return "Alpha";
31112 case CoverageModulationModeNV::eRgba: return "Rgba";
31113 default: return "invalid";
31114 }
31115 }
31116
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031117} // namespace vk
31118
31119#endif