blob: f8ead835a57028c570dcd148c94b6b4ae64c4ada [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//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22// This header is generated from the Khronos Vulkan XML API Registry.
23
24
25#ifndef VULKAN_HPP
26#define VULKAN_HPP
27
28#include <algorithm>
29#include <array>
30#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032#include <cstdint>
33#include <cstring>
34#include <initializer_list>
35#include <string>
36#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070037#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060038#include <type_traits>
39#include <vulkan/vulkan.h>
40#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
41# include <memory>
42# include <vector>
43#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060045static_assert( VK_HEADER_VERSION == 43 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060046
47// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
48// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020049#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 -070050# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
51# define VULKAN_HPP_TYPESAFE_CONVERSION
52# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053#endif
54
55#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
56# if defined(__clang__)
57# if __has_feature(cxx_unrestricted_unions)
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060061# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060062# if 40600 <= GCC_VERSION
63# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
64# endif
65# elif defined(_MSC_VER)
66# if 1900 <= _MSC_VER
67# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
68# endif
69# endif
70#endif
71
Mark Lobodzinski2d589822016-12-12 09:44:34 -070072#if !defined(VULKAN_HPP_INLINE)
73# if defined(__clang___)
74# if __has_attribute(always_inline)
75# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
76# else
77# define VULKAN_HPP_INLINE inline
78# endif
79# elif defined(__GNUC__)
80# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
81# elif defined(_MSC_VER)
82# define VULKAN_HPP_INLINE __forceinline
83# else
84# define VULKAN_HPP_INLINE inline
85# endif
86#endif
87
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070088#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
89# define VULKAN_HPP_TYPESAFE_EXPLICIT
90#else
91# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
92#endif
93
Lenny Komowbed9b5c2016-08-11 11:23:15 -060094namespace vk
95{
Mark Lobodzinski2d589822016-12-12 09:44:34 -070096 template <typename FlagBitsType> struct FlagTraits
97 {
98 enum { allFlags = 0 };
99 };
100
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600101 template <typename BitType, typename MaskType = VkFlags>
102 class Flags
103 {
104 public:
105 Flags()
106 : m_mask(0)
107 {
108 }
109
110 Flags(BitType bit)
111 : m_mask(static_cast<MaskType>(bit))
112 {
113 }
114
115 Flags(Flags<BitType> const& rhs)
116 : m_mask(rhs.m_mask)
117 {
118 }
119
120 Flags<BitType> & operator=(Flags<BitType> const& rhs)
121 {
122 m_mask = rhs.m_mask;
123 return *this;
124 }
125
126 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
127 {
128 m_mask |= rhs.m_mask;
129 return *this;
130 }
131
132 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
133 {
134 m_mask &= rhs.m_mask;
135 return *this;
136 }
137
138 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
139 {
140 m_mask ^= rhs.m_mask;
141 return *this;
142 }
143
144 Flags<BitType> operator|(Flags<BitType> const& rhs) const
145 {
146 Flags<BitType> result(*this);
147 result |= rhs;
148 return result;
149 }
150
151 Flags<BitType> operator&(Flags<BitType> const& rhs) const
152 {
153 Flags<BitType> result(*this);
154 result &= rhs;
155 return result;
156 }
157
158 Flags<BitType> operator^(Flags<BitType> const& rhs) const
159 {
160 Flags<BitType> result(*this);
161 result ^= rhs;
162 return result;
163 }
164
165 bool operator!() const
166 {
167 return !m_mask;
168 }
169
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700170 Flags<BitType> operator~() const
171 {
172 Flags<BitType> result(*this);
173 result.m_mask ^= FlagTraits<BitType>::allFlags;
174 return result;
175 }
176
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600177 bool operator==(Flags<BitType> const& rhs) const
178 {
179 return m_mask == rhs.m_mask;
180 }
181
182 bool operator!=(Flags<BitType> const& rhs) const
183 {
184 return m_mask != rhs.m_mask;
185 }
186
187 explicit operator bool() const
188 {
189 return !!m_mask;
190 }
191
192 explicit operator MaskType() const
193 {
194 return m_mask;
195 }
196
197 private:
198 MaskType m_mask;
199 };
200
201 template <typename BitType>
202 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
203 {
204 return flags | bit;
205 }
206
207 template <typename BitType>
208 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
209 {
210 return flags & bit;
211 }
212
213 template <typename BitType>
214 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
215 {
216 return flags ^ bit;
217 }
218
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700219
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600220 template <typename RefType>
221 class Optional
222 {
223 public:
224 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700225 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600226 Optional(std::nullptr_t) { m_ptr = nullptr; }
227
228 operator RefType*() const { return m_ptr; }
229 RefType const* operator->() const { return m_ptr; }
230 explicit operator bool() const { return !!m_ptr; }
231
232 private:
233 RefType *m_ptr;
234 };
235
236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
237 template <typename T>
238 class ArrayProxy
239 {
240 public:
241 ArrayProxy(std::nullptr_t)
242 : m_count(0)
243 , m_ptr(nullptr)
244 {}
245
246 ArrayProxy(T & ptr)
247 : m_count(1)
248 , m_ptr(&ptr)
249 {}
250
251 ArrayProxy(uint32_t count, T * ptr)
252 : m_count(count)
253 , m_ptr(ptr)
254 {}
255
256 template <size_t N>
257 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
258 : m_count(N)
259 , m_ptr(data.data())
260 {}
261
262 template <size_t N>
263 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
264 : m_count(N)
265 , m_ptr(data.data())
266 {}
267
268 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
269 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
270 : m_count(static_cast<uint32_t>(data.size()))
271 , m_ptr(data.data())
272 {}
273
274 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
275 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
276 : m_count(static_cast<uint32_t>(data.size()))
277 , m_ptr(data.data())
278 {}
279
280 ArrayProxy(std::initializer_list<T> const& data)
281 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
282 , m_ptr(data.begin())
283 {}
284
285 const T * begin() const
286 {
287 return m_ptr;
288 }
289
290 const T * end() const
291 {
292 return m_ptr + m_count;
293 }
294
295 const T & front() const
296 {
297 assert(m_count && m_ptr);
298 return *m_ptr;
299 }
300
301 const T & back() const
302 {
303 assert(m_count && m_ptr);
304 return *(m_ptr + m_count - 1);
305 }
306
307 bool empty() const
308 {
309 return (m_count == 0);
310 }
311
312 uint32_t size() const
313 {
314 return m_count;
315 }
316
317 T * data() const
318 {
319 return m_ptr;
320 }
321
322 private:
323 uint32_t m_count;
324 T * m_ptr;
325 };
326#endif
327
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700328
329#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
330# define VULKAN_HPP_NO_SMART_HANDLE
331#endif
332
333#ifndef VULKAN_HPP_NO_SMART_HANDLE
334 template <typename Type, typename Deleter>
335 class UniqueHandle
336 {
337 public:
338 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
339 : m_value( value )
340 , m_deleter( deleter )
341 {}
342
343 UniqueHandle( UniqueHandle const& ) = delete;
344
345 UniqueHandle( UniqueHandle && other )
346 : m_value( other.release() )
347 , m_deleter( std::move( other.m_deleter ) )
348 {}
349
350 ~UniqueHandle()
351 {
352 destroy();
353 }
354
355 UniqueHandle & operator=( UniqueHandle const& ) = delete;
356
357 UniqueHandle & operator=( UniqueHandle && other )
358 {
359 reset( other.release() );
360 m_deleter = std::move( other.m_deleter );
361 return *this;
362 }
363
364 explicit operator bool() const
365 {
366 return m_value.operator bool();
367 }
368
369 Type const* operator->() const
370 {
371 return &m_value;
372 }
373
374 Type const& operator*() const
375 {
376 return m_value;
377 }
378
379 Type get() const
380 {
381 return m_value;
382 }
383
384 Deleter & getDeleter()
385 {
386 return m_deleter;
387 }
388
389 Deleter const& getDeleter() const
390 {
391 return m_deleter;
392 }
393
394 void reset( Type const& value = Type() )
395 {
396 if ( m_value != value )
397 {
398 destroy();
399 m_value = value;
400 }
401 }
402
403 Type release()
404 {
405 Type value = m_value;
406 m_value = nullptr;
407 return value;
408 }
409
410 void swap( UniqueHandle<Type, Deleter> & rhs )
411 {
412 std::swap(m_value, rhs.m_value);
413 std::swap(m_deleter, rhs.m_deleter);
414 }
415
416 private:
417 void destroy()
418 {
419 if ( m_value )
420 {
421 m_deleter( m_value );
422 }
423 }
424
425 private:
426 Type m_value;
427 Deleter m_deleter;
428 };
429
430 template <typename Type, typename Deleter>
431 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
432 {
433 lhs.swap( rhs );
434 }
435#endif
436
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600437 enum class Result
438 {
439 eSuccess = VK_SUCCESS,
440 eNotReady = VK_NOT_READY,
441 eTimeout = VK_TIMEOUT,
442 eEventSet = VK_EVENT_SET,
443 eEventReset = VK_EVENT_RESET,
444 eIncomplete = VK_INCOMPLETE,
445 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
446 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
447 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
448 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
449 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
450 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
451 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
452 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
453 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
454 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
455 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600456 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600457 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
458 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
459 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
460 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
461 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
462 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700463 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700464 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
465 eErrorInvalidExternalHandleKHX = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600466 };
467
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700468 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600469 {
470 switch (value)
471 {
472 case Result::eSuccess: return "Success";
473 case Result::eNotReady: return "NotReady";
474 case Result::eTimeout: return "Timeout";
475 case Result::eEventSet: return "EventSet";
476 case Result::eEventReset: return "EventReset";
477 case Result::eIncomplete: return "Incomplete";
478 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
479 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
480 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
481 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
482 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
483 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
484 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
485 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
486 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
487 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
488 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600489 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600490 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
491 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
492 case Result::eSuboptimalKHR: return "SuboptimalKHR";
493 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
494 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
495 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
496 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700497 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Young0f183a82017-02-28 09:58:04 -0700498 case Result::eErrorInvalidExternalHandleKHX: return "ErrorInvalidExternalHandleKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600499 default: return "invalid";
500 }
501 }
502
503#if defined(_MSC_VER) && (_MSC_VER == 1800)
504# define noexcept _NOEXCEPT
505#endif
506
507 class ErrorCategoryImpl : public std::error_category
508 {
509 public:
510 virtual const char* name() const noexcept override { return "vk::Result"; }
511 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
512 };
513
514#if defined(_MSC_VER) && (_MSC_VER == 1800)
515# undef noexcept
516#endif
517
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700518 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600519 {
520 static ErrorCategoryImpl instance;
521 return instance;
522 }
523
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700524 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600525 {
526 return std::error_code(static_cast<int>(e), errorCategory());
527 }
528
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700529 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600530 {
531 return std::error_condition(static_cast<int>(e), errorCategory());
532 }
533
534} // namespace vk
535
536namespace std
537{
538 template <>
539 struct is_error_code_enum<vk::Result> : public true_type
540 {};
541}
542
543namespace vk
544{
545 template <typename T>
546 struct ResultValue
547 {
548 ResultValue( Result r, T & v )
549 : result( r )
550 , value( v )
551 {}
552
553 Result result;
554 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700555
556 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600557 };
558
559 template <typename T>
560 struct ResultValueType
561 {
562#ifdef VULKAN_HPP_NO_EXCEPTIONS
563 typedef ResultValue<T> type;
564#else
565 typedef T type;
566#endif
567 };
568
569 template <> struct ResultValueType<void>
570 {
571#ifdef VULKAN_HPP_NO_EXCEPTIONS
572 typedef Result type;
573#else
574 typedef void type;
575#endif
576 };
577
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700578 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600579 {
580#ifdef VULKAN_HPP_NO_EXCEPTIONS
581 assert( result == Result::eSuccess );
582 return result;
583#else
584 if ( result != Result::eSuccess )
585 {
586 throw std::system_error( result, message );
587 }
588#endif
589 }
590
591 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700592 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600593 {
594#ifdef VULKAN_HPP_NO_EXCEPTIONS
595 assert( result == Result::eSuccess );
596 return ResultValue<T>( result, data );
597#else
598 if ( result != Result::eSuccess )
599 {
600 throw std::system_error( result, message );
601 }
602 return data;
603#endif
604 }
605
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700606 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600607 {
608#ifdef VULKAN_HPP_NO_EXCEPTIONS
609 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
610#else
611 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
612 {
613 throw std::system_error( result, message );
614 }
615#endif
616 return result;
617 }
618
619 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700620 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 -0600621 {
622#ifdef VULKAN_HPP_NO_EXCEPTIONS
623 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
624#else
625 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
626 {
627 throw std::system_error( result, message );
628 }
629#endif
630 return ResultValue<T>( result, data );
631 }
632
633 using SampleMask = uint32_t;
634
635 using Bool32 = uint32_t;
636
637 using DeviceSize = uint64_t;
638
639 enum class FramebufferCreateFlagBits
640 {
641 };
642
643 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
644
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700645 VULKAN_HPP_INLINE FramebufferCreateFlags operator|( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600646 {
647 return FramebufferCreateFlags( bit0 ) | bit1;
648 }
649
650 enum class QueryPoolCreateFlagBits
651 {
652 };
653
654 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
655
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700656 VULKAN_HPP_INLINE QueryPoolCreateFlags operator|( QueryPoolCreateFlagBits bit0, QueryPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600657 {
658 return QueryPoolCreateFlags( bit0 ) | bit1;
659 }
660
661 enum class RenderPassCreateFlagBits
662 {
663 };
664
665 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
666
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700667 VULKAN_HPP_INLINE RenderPassCreateFlags operator|( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600668 {
669 return RenderPassCreateFlags( bit0 ) | bit1;
670 }
671
672 enum class SamplerCreateFlagBits
673 {
674 };
675
676 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
677
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700678 VULKAN_HPP_INLINE SamplerCreateFlags operator|( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600679 {
680 return SamplerCreateFlags( bit0 ) | bit1;
681 }
682
683 enum class PipelineLayoutCreateFlagBits
684 {
685 };
686
687 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
688
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700689 VULKAN_HPP_INLINE PipelineLayoutCreateFlags operator|( PipelineLayoutCreateFlagBits bit0, PipelineLayoutCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600690 {
691 return PipelineLayoutCreateFlags( bit0 ) | bit1;
692 }
693
694 enum class PipelineCacheCreateFlagBits
695 {
696 };
697
698 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
699
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700700 VULKAN_HPP_INLINE PipelineCacheCreateFlags operator|( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600701 {
702 return PipelineCacheCreateFlags( bit0 ) | bit1;
703 }
704
705 enum class PipelineDepthStencilStateCreateFlagBits
706 {
707 };
708
709 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
710
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700711 VULKAN_HPP_INLINE PipelineDepthStencilStateCreateFlags operator|( PipelineDepthStencilStateCreateFlagBits bit0, PipelineDepthStencilStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600712 {
713 return PipelineDepthStencilStateCreateFlags( bit0 ) | bit1;
714 }
715
716 enum class PipelineDynamicStateCreateFlagBits
717 {
718 };
719
720 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
721
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700722 VULKAN_HPP_INLINE PipelineDynamicStateCreateFlags operator|( PipelineDynamicStateCreateFlagBits bit0, PipelineDynamicStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600723 {
724 return PipelineDynamicStateCreateFlags( bit0 ) | bit1;
725 }
726
727 enum class PipelineColorBlendStateCreateFlagBits
728 {
729 };
730
731 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
732
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700733 VULKAN_HPP_INLINE PipelineColorBlendStateCreateFlags operator|( PipelineColorBlendStateCreateFlagBits bit0, PipelineColorBlendStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600734 {
735 return PipelineColorBlendStateCreateFlags( bit0 ) | bit1;
736 }
737
738 enum class PipelineMultisampleStateCreateFlagBits
739 {
740 };
741
742 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
743
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700744 VULKAN_HPP_INLINE PipelineMultisampleStateCreateFlags operator|( PipelineMultisampleStateCreateFlagBits bit0, PipelineMultisampleStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600745 {
746 return PipelineMultisampleStateCreateFlags( bit0 ) | bit1;
747 }
748
749 enum class PipelineRasterizationStateCreateFlagBits
750 {
751 };
752
753 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
754
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700755 VULKAN_HPP_INLINE PipelineRasterizationStateCreateFlags operator|( PipelineRasterizationStateCreateFlagBits bit0, PipelineRasterizationStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600756 {
757 return PipelineRasterizationStateCreateFlags( bit0 ) | bit1;
758 }
759
760 enum class PipelineViewportStateCreateFlagBits
761 {
762 };
763
764 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
765
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700766 VULKAN_HPP_INLINE PipelineViewportStateCreateFlags operator|( PipelineViewportStateCreateFlagBits bit0, PipelineViewportStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600767 {
768 return PipelineViewportStateCreateFlags( bit0 ) | bit1;
769 }
770
771 enum class PipelineTessellationStateCreateFlagBits
772 {
773 };
774
775 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
776
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700777 VULKAN_HPP_INLINE PipelineTessellationStateCreateFlags operator|( PipelineTessellationStateCreateFlagBits bit0, PipelineTessellationStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600778 {
779 return PipelineTessellationStateCreateFlags( bit0 ) | bit1;
780 }
781
782 enum class PipelineInputAssemblyStateCreateFlagBits
783 {
784 };
785
786 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
787
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700788 VULKAN_HPP_INLINE PipelineInputAssemblyStateCreateFlags operator|( PipelineInputAssemblyStateCreateFlagBits bit0, PipelineInputAssemblyStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600789 {
790 return PipelineInputAssemblyStateCreateFlags( bit0 ) | bit1;
791 }
792
793 enum class PipelineVertexInputStateCreateFlagBits
794 {
795 };
796
797 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
798
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700799 VULKAN_HPP_INLINE PipelineVertexInputStateCreateFlags operator|( PipelineVertexInputStateCreateFlagBits bit0, PipelineVertexInputStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600800 {
801 return PipelineVertexInputStateCreateFlags( bit0 ) | bit1;
802 }
803
804 enum class PipelineShaderStageCreateFlagBits
805 {
806 };
807
808 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
809
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700810 VULKAN_HPP_INLINE PipelineShaderStageCreateFlags operator|( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600811 {
812 return PipelineShaderStageCreateFlags( bit0 ) | bit1;
813 }
814
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600815 enum class BufferViewCreateFlagBits
816 {
817 };
818
819 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
820
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700821 VULKAN_HPP_INLINE BufferViewCreateFlags operator|( BufferViewCreateFlagBits bit0, BufferViewCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600822 {
823 return BufferViewCreateFlags( bit0 ) | bit1;
824 }
825
826 enum class InstanceCreateFlagBits
827 {
828 };
829
830 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
831
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700832 VULKAN_HPP_INLINE InstanceCreateFlags operator|( InstanceCreateFlagBits bit0, InstanceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600833 {
834 return InstanceCreateFlags( bit0 ) | bit1;
835 }
836
837 enum class DeviceCreateFlagBits
838 {
839 };
840
841 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
842
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700843 VULKAN_HPP_INLINE DeviceCreateFlags operator|( DeviceCreateFlagBits bit0, DeviceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600844 {
845 return DeviceCreateFlags( bit0 ) | bit1;
846 }
847
848 enum class DeviceQueueCreateFlagBits
849 {
850 };
851
852 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
853
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700854 VULKAN_HPP_INLINE DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600855 {
856 return DeviceQueueCreateFlags( bit0 ) | bit1;
857 }
858
859 enum class ImageViewCreateFlagBits
860 {
861 };
862
863 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
864
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700865 VULKAN_HPP_INLINE ImageViewCreateFlags operator|( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600866 {
867 return ImageViewCreateFlags( bit0 ) | bit1;
868 }
869
870 enum class SemaphoreCreateFlagBits
871 {
872 };
873
874 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
875
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700876 VULKAN_HPP_INLINE SemaphoreCreateFlags operator|( SemaphoreCreateFlagBits bit0, SemaphoreCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600877 {
878 return SemaphoreCreateFlags( bit0 ) | bit1;
879 }
880
881 enum class ShaderModuleCreateFlagBits
882 {
883 };
884
885 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
886
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700887 VULKAN_HPP_INLINE ShaderModuleCreateFlags operator|( ShaderModuleCreateFlagBits bit0, ShaderModuleCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600888 {
889 return ShaderModuleCreateFlags( bit0 ) | bit1;
890 }
891
892 enum class EventCreateFlagBits
893 {
894 };
895
896 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
897
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700898 VULKAN_HPP_INLINE EventCreateFlags operator|( EventCreateFlagBits bit0, EventCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600899 {
900 return EventCreateFlags( bit0 ) | bit1;
901 }
902
903 enum class MemoryMapFlagBits
904 {
905 };
906
907 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
908
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700909 VULKAN_HPP_INLINE MemoryMapFlags operator|( MemoryMapFlagBits bit0, MemoryMapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600910 {
911 return MemoryMapFlags( bit0 ) | bit1;
912 }
913
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600914 enum class DescriptorPoolResetFlagBits
915 {
916 };
917
918 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
919
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700920 VULKAN_HPP_INLINE DescriptorPoolResetFlags operator|( DescriptorPoolResetFlagBits bit0, DescriptorPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600921 {
922 return DescriptorPoolResetFlags( bit0 ) | bit1;
923 }
924
Mark Young0f183a82017-02-28 09:58:04 -0700925 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600926 {
927 };
928
Mark Young0f183a82017-02-28 09:58:04 -0700929 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600930
Mark Young0f183a82017-02-28 09:58:04 -0700931 VULKAN_HPP_INLINE DescriptorUpdateTemplateCreateFlagsKHR operator|( DescriptorUpdateTemplateCreateFlagBitsKHR bit0, DescriptorUpdateTemplateCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600932 {
Mark Young0f183a82017-02-28 09:58:04 -0700933 return DescriptorUpdateTemplateCreateFlagsKHR( bit0 ) | bit1;
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600934 }
935
936 enum class DisplayModeCreateFlagBitsKHR
937 {
938 };
939
940 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
941
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700942 VULKAN_HPP_INLINE DisplayModeCreateFlagsKHR operator|( DisplayModeCreateFlagBitsKHR bit0, DisplayModeCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600943 {
944 return DisplayModeCreateFlagsKHR( bit0 ) | bit1;
945 }
946
947 enum class DisplaySurfaceCreateFlagBitsKHR
948 {
949 };
950
951 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
952
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700953 VULKAN_HPP_INLINE DisplaySurfaceCreateFlagsKHR operator|( DisplaySurfaceCreateFlagBitsKHR bit0, DisplaySurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600954 {
955 return DisplaySurfaceCreateFlagsKHR( bit0 ) | bit1;
956 }
957
958#ifdef VK_USE_PLATFORM_ANDROID_KHR
959 enum class AndroidSurfaceCreateFlagBitsKHR
960 {
961 };
962#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
963
964#ifdef VK_USE_PLATFORM_ANDROID_KHR
965 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
966
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700967 VULKAN_HPP_INLINE AndroidSurfaceCreateFlagsKHR operator|( AndroidSurfaceCreateFlagBitsKHR bit0, AndroidSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600968 {
969 return AndroidSurfaceCreateFlagsKHR( bit0 ) | bit1;
970 }
971#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
972
973#ifdef VK_USE_PLATFORM_MIR_KHR
974 enum class MirSurfaceCreateFlagBitsKHR
975 {
976 };
977#endif /*VK_USE_PLATFORM_MIR_KHR*/
978
979#ifdef VK_USE_PLATFORM_MIR_KHR
980 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
981
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700982 VULKAN_HPP_INLINE MirSurfaceCreateFlagsKHR operator|( MirSurfaceCreateFlagBitsKHR bit0, MirSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600983 {
984 return MirSurfaceCreateFlagsKHR( bit0 ) | bit1;
985 }
986#endif /*VK_USE_PLATFORM_MIR_KHR*/
987
Mark Young39389872017-01-19 21:10:49 -0700988#ifdef VK_USE_PLATFORM_VI_NN
989 enum class ViSurfaceCreateFlagBitsNN
990 {
991 };
992#endif /*VK_USE_PLATFORM_VI_NN*/
993
994#ifdef VK_USE_PLATFORM_VI_NN
995 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
996
997 VULKAN_HPP_INLINE ViSurfaceCreateFlagsNN operator|( ViSurfaceCreateFlagBitsNN bit0, ViSurfaceCreateFlagBitsNN bit1 )
998 {
999 return ViSurfaceCreateFlagsNN( bit0 ) | bit1;
1000 }
1001#endif /*VK_USE_PLATFORM_VI_NN*/
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1004 enum class WaylandSurfaceCreateFlagBitsKHR
1005 {
1006 };
1007#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1008
1009#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1010 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
1011
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001012 VULKAN_HPP_INLINE WaylandSurfaceCreateFlagsKHR operator|( WaylandSurfaceCreateFlagBitsKHR bit0, WaylandSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001013 {
1014 return WaylandSurfaceCreateFlagsKHR( bit0 ) | bit1;
1015 }
1016#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1017
1018#ifdef VK_USE_PLATFORM_WIN32_KHR
1019 enum class Win32SurfaceCreateFlagBitsKHR
1020 {
1021 };
1022#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1023
1024#ifdef VK_USE_PLATFORM_WIN32_KHR
1025 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
1026
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001027 VULKAN_HPP_INLINE Win32SurfaceCreateFlagsKHR operator|( Win32SurfaceCreateFlagBitsKHR bit0, Win32SurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 {
1029 return Win32SurfaceCreateFlagsKHR( bit0 ) | bit1;
1030 }
1031#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1032
1033#ifdef VK_USE_PLATFORM_XLIB_KHR
1034 enum class XlibSurfaceCreateFlagBitsKHR
1035 {
1036 };
1037#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1038
1039#ifdef VK_USE_PLATFORM_XLIB_KHR
1040 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
1041
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001042 VULKAN_HPP_INLINE XlibSurfaceCreateFlagsKHR operator|( XlibSurfaceCreateFlagBitsKHR bit0, XlibSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001043 {
1044 return XlibSurfaceCreateFlagsKHR( bit0 ) | bit1;
1045 }
1046#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1047
1048#ifdef VK_USE_PLATFORM_XCB_KHR
1049 enum class XcbSurfaceCreateFlagBitsKHR
1050 {
1051 };
1052#endif /*VK_USE_PLATFORM_XCB_KHR*/
1053
1054#ifdef VK_USE_PLATFORM_XCB_KHR
1055 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
1056
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001057 VULKAN_HPP_INLINE XcbSurfaceCreateFlagsKHR operator|( XcbSurfaceCreateFlagBitsKHR bit0, XcbSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001058 {
1059 return XcbSurfaceCreateFlagsKHR( bit0 ) | bit1;
1060 }
1061#endif /*VK_USE_PLATFORM_XCB_KHR*/
1062
Mark Young0f183a82017-02-28 09:58:04 -07001063#ifdef VK_USE_PLATFORM_IOS_MVK
1064 enum class IOSSurfaceCreateFlagBitsMVK
1065 {
1066 };
1067#endif /*VK_USE_PLATFORM_IOS_MVK*/
1068
1069#ifdef VK_USE_PLATFORM_IOS_MVK
1070 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
1071
1072 VULKAN_HPP_INLINE IOSSurfaceCreateFlagsMVK operator|( IOSSurfaceCreateFlagBitsMVK bit0, IOSSurfaceCreateFlagBitsMVK bit1 )
1073 {
1074 return IOSSurfaceCreateFlagsMVK( bit0 ) | bit1;
1075 }
1076#endif /*VK_USE_PLATFORM_IOS_MVK*/
1077
1078#ifdef VK_USE_PLATFORM_MACOS_MVK
1079 enum class MacOSSurfaceCreateFlagBitsMVK
1080 {
1081 };
1082#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1083
1084#ifdef VK_USE_PLATFORM_MACOS_MVK
1085 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
1086
1087 VULKAN_HPP_INLINE MacOSSurfaceCreateFlagsMVK operator|( MacOSSurfaceCreateFlagBitsMVK bit0, MacOSSurfaceCreateFlagBitsMVK bit1 )
1088 {
1089 return MacOSSurfaceCreateFlagsMVK( bit0 ) | bit1;
1090 }
1091#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1092
Mark Young39389872017-01-19 21:10:49 -07001093 enum class CommandPoolTrimFlagBitsKHR
1094 {
1095 };
1096
1097 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1098
1099 VULKAN_HPP_INLINE CommandPoolTrimFlagsKHR operator|( CommandPoolTrimFlagBitsKHR bit0, CommandPoolTrimFlagBitsKHR bit1 )
1100 {
1101 return CommandPoolTrimFlagsKHR( bit0 ) | bit1;
1102 }
1103
Mark Young0f183a82017-02-28 09:58:04 -07001104 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1105 {
1106 };
1107
1108 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1109
1110 VULKAN_HPP_INLINE PipelineViewportSwizzleStateCreateFlagsNV operator|( PipelineViewportSwizzleStateCreateFlagBitsNV bit0, PipelineViewportSwizzleStateCreateFlagBitsNV bit1 )
1111 {
1112 return PipelineViewportSwizzleStateCreateFlagsNV( bit0 ) | bit1;
1113 }
1114
1115 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1116 {
1117 };
1118
1119 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1120
1121 VULKAN_HPP_INLINE PipelineDiscardRectangleStateCreateFlagsEXT operator|( PipelineDiscardRectangleStateCreateFlagBitsEXT bit0, PipelineDiscardRectangleStateCreateFlagBitsEXT bit1 )
1122 {
1123 return PipelineDiscardRectangleStateCreateFlagsEXT( bit0 ) | bit1;
1124 }
1125
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001126 class DeviceMemory
1127 {
1128 public:
1129 DeviceMemory()
1130 : m_deviceMemory(VK_NULL_HANDLE)
1131 {}
1132
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001133 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001134 : m_deviceMemory(VK_NULL_HANDLE)
1135 {}
1136
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001137 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001138 : m_deviceMemory(deviceMemory)
1139 {}
1140
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001141#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001142 DeviceMemory& operator=(VkDeviceMemory deviceMemory)
1143 {
1144 m_deviceMemory = deviceMemory;
1145 return *this;
1146 }
1147#endif
1148
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001149 DeviceMemory& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001150 {
1151 m_deviceMemory = VK_NULL_HANDLE;
1152 return *this;
1153 }
1154
Lenny Komowebf33162016-08-26 14:10:08 -06001155 bool operator==(DeviceMemory const &rhs) const
1156 {
1157 return m_deviceMemory == rhs.m_deviceMemory;
1158 }
1159
1160 bool operator!=(DeviceMemory const &rhs) const
1161 {
1162 return m_deviceMemory != rhs.m_deviceMemory;
1163 }
1164
1165 bool operator<(DeviceMemory const &rhs) const
1166 {
1167 return m_deviceMemory < rhs.m_deviceMemory;
1168 }
1169
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001170 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001171 {
1172 return m_deviceMemory;
1173 }
1174
1175 explicit operator bool() const
1176 {
1177 return m_deviceMemory != VK_NULL_HANDLE;
1178 }
1179
1180 bool operator!() const
1181 {
1182 return m_deviceMemory == VK_NULL_HANDLE;
1183 }
1184
1185 private:
1186 VkDeviceMemory m_deviceMemory;
1187 };
1188 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1189
1190 class CommandPool
1191 {
1192 public:
1193 CommandPool()
1194 : m_commandPool(VK_NULL_HANDLE)
1195 {}
1196
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001197 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001198 : m_commandPool(VK_NULL_HANDLE)
1199 {}
1200
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001201 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001202 : m_commandPool(commandPool)
1203 {}
1204
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001205#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001206 CommandPool& operator=(VkCommandPool commandPool)
1207 {
1208 m_commandPool = commandPool;
1209 return *this;
1210 }
1211#endif
1212
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001213 CommandPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001214 {
1215 m_commandPool = VK_NULL_HANDLE;
1216 return *this;
1217 }
1218
Lenny Komowebf33162016-08-26 14:10:08 -06001219 bool operator==(CommandPool const &rhs) const
1220 {
1221 return m_commandPool == rhs.m_commandPool;
1222 }
1223
1224 bool operator!=(CommandPool const &rhs) const
1225 {
1226 return m_commandPool != rhs.m_commandPool;
1227 }
1228
1229 bool operator<(CommandPool const &rhs) const
1230 {
1231 return m_commandPool < rhs.m_commandPool;
1232 }
1233
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001234 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001235 {
1236 return m_commandPool;
1237 }
1238
1239 explicit operator bool() const
1240 {
1241 return m_commandPool != VK_NULL_HANDLE;
1242 }
1243
1244 bool operator!() const
1245 {
1246 return m_commandPool == VK_NULL_HANDLE;
1247 }
1248
1249 private:
1250 VkCommandPool m_commandPool;
1251 };
1252 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1253
1254 class Buffer
1255 {
1256 public:
1257 Buffer()
1258 : m_buffer(VK_NULL_HANDLE)
1259 {}
1260
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001261 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001262 : m_buffer(VK_NULL_HANDLE)
1263 {}
1264
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001265 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001266 : m_buffer(buffer)
1267 {}
1268
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001269#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001270 Buffer& operator=(VkBuffer buffer)
1271 {
1272 m_buffer = buffer;
1273 return *this;
1274 }
1275#endif
1276
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001277 Buffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001278 {
1279 m_buffer = VK_NULL_HANDLE;
1280 return *this;
1281 }
1282
Lenny Komowebf33162016-08-26 14:10:08 -06001283 bool operator==(Buffer const &rhs) const
1284 {
1285 return m_buffer == rhs.m_buffer;
1286 }
1287
1288 bool operator!=(Buffer const &rhs) const
1289 {
1290 return m_buffer != rhs.m_buffer;
1291 }
1292
1293 bool operator<(Buffer const &rhs) const
1294 {
1295 return m_buffer < rhs.m_buffer;
1296 }
1297
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001298 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001299 {
1300 return m_buffer;
1301 }
1302
1303 explicit operator bool() const
1304 {
1305 return m_buffer != VK_NULL_HANDLE;
1306 }
1307
1308 bool operator!() const
1309 {
1310 return m_buffer == VK_NULL_HANDLE;
1311 }
1312
1313 private:
1314 VkBuffer m_buffer;
1315 };
1316 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1317
1318 class BufferView
1319 {
1320 public:
1321 BufferView()
1322 : m_bufferView(VK_NULL_HANDLE)
1323 {}
1324
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001325 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001326 : m_bufferView(VK_NULL_HANDLE)
1327 {}
1328
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001329 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001330 : m_bufferView(bufferView)
1331 {}
1332
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001333#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001334 BufferView& operator=(VkBufferView bufferView)
1335 {
1336 m_bufferView = bufferView;
1337 return *this;
1338 }
1339#endif
1340
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001341 BufferView& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001342 {
1343 m_bufferView = VK_NULL_HANDLE;
1344 return *this;
1345 }
1346
Lenny Komowebf33162016-08-26 14:10:08 -06001347 bool operator==(BufferView const &rhs) const
1348 {
1349 return m_bufferView == rhs.m_bufferView;
1350 }
1351
1352 bool operator!=(BufferView const &rhs) const
1353 {
1354 return m_bufferView != rhs.m_bufferView;
1355 }
1356
1357 bool operator<(BufferView const &rhs) const
1358 {
1359 return m_bufferView < rhs.m_bufferView;
1360 }
1361
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001362 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001363 {
1364 return m_bufferView;
1365 }
1366
1367 explicit operator bool() const
1368 {
1369 return m_bufferView != VK_NULL_HANDLE;
1370 }
1371
1372 bool operator!() const
1373 {
1374 return m_bufferView == VK_NULL_HANDLE;
1375 }
1376
1377 private:
1378 VkBufferView m_bufferView;
1379 };
1380 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1381
1382 class Image
1383 {
1384 public:
1385 Image()
1386 : m_image(VK_NULL_HANDLE)
1387 {}
1388
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001389 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001390 : m_image(VK_NULL_HANDLE)
1391 {}
1392
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001393 VULKAN_HPP_TYPESAFE_EXPLICIT Image(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001394 : m_image(image)
1395 {}
1396
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001397#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001398 Image& operator=(VkImage image)
1399 {
1400 m_image = image;
1401 return *this;
1402 }
1403#endif
1404
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001405 Image& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001406 {
1407 m_image = VK_NULL_HANDLE;
1408 return *this;
1409 }
1410
Lenny Komowebf33162016-08-26 14:10:08 -06001411 bool operator==(Image const &rhs) const
1412 {
1413 return m_image == rhs.m_image;
1414 }
1415
1416 bool operator!=(Image const &rhs) const
1417 {
1418 return m_image != rhs.m_image;
1419 }
1420
1421 bool operator<(Image const &rhs) const
1422 {
1423 return m_image < rhs.m_image;
1424 }
1425
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001426 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001427 {
1428 return m_image;
1429 }
1430
1431 explicit operator bool() const
1432 {
1433 return m_image != VK_NULL_HANDLE;
1434 }
1435
1436 bool operator!() const
1437 {
1438 return m_image == VK_NULL_HANDLE;
1439 }
1440
1441 private:
1442 VkImage m_image;
1443 };
1444 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1445
1446 class ImageView
1447 {
1448 public:
1449 ImageView()
1450 : m_imageView(VK_NULL_HANDLE)
1451 {}
1452
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001453 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001454 : m_imageView(VK_NULL_HANDLE)
1455 {}
1456
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001457 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001458 : m_imageView(imageView)
1459 {}
1460
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001461#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001462 ImageView& operator=(VkImageView imageView)
1463 {
1464 m_imageView = imageView;
1465 return *this;
1466 }
1467#endif
1468
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001469 ImageView& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001470 {
1471 m_imageView = VK_NULL_HANDLE;
1472 return *this;
1473 }
1474
Lenny Komowebf33162016-08-26 14:10:08 -06001475 bool operator==(ImageView const &rhs) const
1476 {
1477 return m_imageView == rhs.m_imageView;
1478 }
1479
1480 bool operator!=(ImageView const &rhs) const
1481 {
1482 return m_imageView != rhs.m_imageView;
1483 }
1484
1485 bool operator<(ImageView const &rhs) const
1486 {
1487 return m_imageView < rhs.m_imageView;
1488 }
1489
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001490 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001491 {
1492 return m_imageView;
1493 }
1494
1495 explicit operator bool() const
1496 {
1497 return m_imageView != VK_NULL_HANDLE;
1498 }
1499
1500 bool operator!() const
1501 {
1502 return m_imageView == VK_NULL_HANDLE;
1503 }
1504
1505 private:
1506 VkImageView m_imageView;
1507 };
1508 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1509
1510 class ShaderModule
1511 {
1512 public:
1513 ShaderModule()
1514 : m_shaderModule(VK_NULL_HANDLE)
1515 {}
1516
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001517 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001518 : m_shaderModule(VK_NULL_HANDLE)
1519 {}
1520
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001521 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001522 : m_shaderModule(shaderModule)
1523 {}
1524
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001525#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001526 ShaderModule& operator=(VkShaderModule shaderModule)
1527 {
1528 m_shaderModule = shaderModule;
1529 return *this;
1530 }
1531#endif
1532
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001533 ShaderModule& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001534 {
1535 m_shaderModule = VK_NULL_HANDLE;
1536 return *this;
1537 }
1538
Lenny Komowebf33162016-08-26 14:10:08 -06001539 bool operator==(ShaderModule const &rhs) const
1540 {
1541 return m_shaderModule == rhs.m_shaderModule;
1542 }
1543
1544 bool operator!=(ShaderModule const &rhs) const
1545 {
1546 return m_shaderModule != rhs.m_shaderModule;
1547 }
1548
1549 bool operator<(ShaderModule const &rhs) const
1550 {
1551 return m_shaderModule < rhs.m_shaderModule;
1552 }
1553
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001554 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001555 {
1556 return m_shaderModule;
1557 }
1558
1559 explicit operator bool() const
1560 {
1561 return m_shaderModule != VK_NULL_HANDLE;
1562 }
1563
1564 bool operator!() const
1565 {
1566 return m_shaderModule == VK_NULL_HANDLE;
1567 }
1568
1569 private:
1570 VkShaderModule m_shaderModule;
1571 };
1572 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1573
1574 class Pipeline
1575 {
1576 public:
1577 Pipeline()
1578 : m_pipeline(VK_NULL_HANDLE)
1579 {}
1580
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001581 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001582 : m_pipeline(VK_NULL_HANDLE)
1583 {}
1584
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001585 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001586 : m_pipeline(pipeline)
1587 {}
1588
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001589#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001590 Pipeline& operator=(VkPipeline pipeline)
1591 {
1592 m_pipeline = pipeline;
1593 return *this;
1594 }
1595#endif
1596
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001597 Pipeline& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001598 {
1599 m_pipeline = VK_NULL_HANDLE;
1600 return *this;
1601 }
1602
Lenny Komowebf33162016-08-26 14:10:08 -06001603 bool operator==(Pipeline const &rhs) const
1604 {
1605 return m_pipeline == rhs.m_pipeline;
1606 }
1607
1608 bool operator!=(Pipeline const &rhs) const
1609 {
1610 return m_pipeline != rhs.m_pipeline;
1611 }
1612
1613 bool operator<(Pipeline const &rhs) const
1614 {
1615 return m_pipeline < rhs.m_pipeline;
1616 }
1617
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001618 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001619 {
1620 return m_pipeline;
1621 }
1622
1623 explicit operator bool() const
1624 {
1625 return m_pipeline != VK_NULL_HANDLE;
1626 }
1627
1628 bool operator!() const
1629 {
1630 return m_pipeline == VK_NULL_HANDLE;
1631 }
1632
1633 private:
1634 VkPipeline m_pipeline;
1635 };
1636 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1637
1638 class PipelineLayout
1639 {
1640 public:
1641 PipelineLayout()
1642 : m_pipelineLayout(VK_NULL_HANDLE)
1643 {}
1644
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001645 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001646 : m_pipelineLayout(VK_NULL_HANDLE)
1647 {}
1648
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001649 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001650 : m_pipelineLayout(pipelineLayout)
1651 {}
1652
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001653#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001654 PipelineLayout& operator=(VkPipelineLayout pipelineLayout)
1655 {
1656 m_pipelineLayout = pipelineLayout;
1657 return *this;
1658 }
1659#endif
1660
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001661 PipelineLayout& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001662 {
1663 m_pipelineLayout = VK_NULL_HANDLE;
1664 return *this;
1665 }
1666
Lenny Komowebf33162016-08-26 14:10:08 -06001667 bool operator==(PipelineLayout const &rhs) const
1668 {
1669 return m_pipelineLayout == rhs.m_pipelineLayout;
1670 }
1671
1672 bool operator!=(PipelineLayout const &rhs) const
1673 {
1674 return m_pipelineLayout != rhs.m_pipelineLayout;
1675 }
1676
1677 bool operator<(PipelineLayout const &rhs) const
1678 {
1679 return m_pipelineLayout < rhs.m_pipelineLayout;
1680 }
1681
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001682 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001683 {
1684 return m_pipelineLayout;
1685 }
1686
1687 explicit operator bool() const
1688 {
1689 return m_pipelineLayout != VK_NULL_HANDLE;
1690 }
1691
1692 bool operator!() const
1693 {
1694 return m_pipelineLayout == VK_NULL_HANDLE;
1695 }
1696
1697 private:
1698 VkPipelineLayout m_pipelineLayout;
1699 };
1700 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1701
1702 class Sampler
1703 {
1704 public:
1705 Sampler()
1706 : m_sampler(VK_NULL_HANDLE)
1707 {}
1708
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001709 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001710 : m_sampler(VK_NULL_HANDLE)
1711 {}
1712
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001713 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001714 : m_sampler(sampler)
1715 {}
1716
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001717#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001718 Sampler& operator=(VkSampler sampler)
1719 {
1720 m_sampler = sampler;
1721 return *this;
1722 }
1723#endif
1724
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001725 Sampler& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001726 {
1727 m_sampler = VK_NULL_HANDLE;
1728 return *this;
1729 }
1730
Lenny Komowebf33162016-08-26 14:10:08 -06001731 bool operator==(Sampler const &rhs) const
1732 {
1733 return m_sampler == rhs.m_sampler;
1734 }
1735
1736 bool operator!=(Sampler const &rhs) const
1737 {
1738 return m_sampler != rhs.m_sampler;
1739 }
1740
1741 bool operator<(Sampler const &rhs) const
1742 {
1743 return m_sampler < rhs.m_sampler;
1744 }
1745
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001746 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001747 {
1748 return m_sampler;
1749 }
1750
1751 explicit operator bool() const
1752 {
1753 return m_sampler != VK_NULL_HANDLE;
1754 }
1755
1756 bool operator!() const
1757 {
1758 return m_sampler == VK_NULL_HANDLE;
1759 }
1760
1761 private:
1762 VkSampler m_sampler;
1763 };
1764 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1765
1766 class DescriptorSet
1767 {
1768 public:
1769 DescriptorSet()
1770 : m_descriptorSet(VK_NULL_HANDLE)
1771 {}
1772
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001773 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001774 : m_descriptorSet(VK_NULL_HANDLE)
1775 {}
1776
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001777 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001778 : m_descriptorSet(descriptorSet)
1779 {}
1780
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001781#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001782 DescriptorSet& operator=(VkDescriptorSet descriptorSet)
1783 {
1784 m_descriptorSet = descriptorSet;
1785 return *this;
1786 }
1787#endif
1788
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001789 DescriptorSet& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001790 {
1791 m_descriptorSet = VK_NULL_HANDLE;
1792 return *this;
1793 }
1794
Lenny Komowebf33162016-08-26 14:10:08 -06001795 bool operator==(DescriptorSet const &rhs) const
1796 {
1797 return m_descriptorSet == rhs.m_descriptorSet;
1798 }
1799
1800 bool operator!=(DescriptorSet const &rhs) const
1801 {
1802 return m_descriptorSet != rhs.m_descriptorSet;
1803 }
1804
1805 bool operator<(DescriptorSet const &rhs) const
1806 {
1807 return m_descriptorSet < rhs.m_descriptorSet;
1808 }
1809
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001810 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001811 {
1812 return m_descriptorSet;
1813 }
1814
1815 explicit operator bool() const
1816 {
1817 return m_descriptorSet != VK_NULL_HANDLE;
1818 }
1819
1820 bool operator!() const
1821 {
1822 return m_descriptorSet == VK_NULL_HANDLE;
1823 }
1824
1825 private:
1826 VkDescriptorSet m_descriptorSet;
1827 };
1828 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1829
1830 class DescriptorSetLayout
1831 {
1832 public:
1833 DescriptorSetLayout()
1834 : m_descriptorSetLayout(VK_NULL_HANDLE)
1835 {}
1836
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001837 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001838 : m_descriptorSetLayout(VK_NULL_HANDLE)
1839 {}
1840
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001841 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001842 : m_descriptorSetLayout(descriptorSetLayout)
1843 {}
1844
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001845#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001846 DescriptorSetLayout& operator=(VkDescriptorSetLayout descriptorSetLayout)
1847 {
1848 m_descriptorSetLayout = descriptorSetLayout;
1849 return *this;
1850 }
1851#endif
1852
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001853 DescriptorSetLayout& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001854 {
1855 m_descriptorSetLayout = VK_NULL_HANDLE;
1856 return *this;
1857 }
1858
Lenny Komowebf33162016-08-26 14:10:08 -06001859 bool operator==(DescriptorSetLayout const &rhs) const
1860 {
1861 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
1862 }
1863
1864 bool operator!=(DescriptorSetLayout const &rhs) const
1865 {
1866 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
1867 }
1868
1869 bool operator<(DescriptorSetLayout const &rhs) const
1870 {
1871 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
1872 }
1873
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001874 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001875 {
1876 return m_descriptorSetLayout;
1877 }
1878
1879 explicit operator bool() const
1880 {
1881 return m_descriptorSetLayout != VK_NULL_HANDLE;
1882 }
1883
1884 bool operator!() const
1885 {
1886 return m_descriptorSetLayout == VK_NULL_HANDLE;
1887 }
1888
1889 private:
1890 VkDescriptorSetLayout m_descriptorSetLayout;
1891 };
1892 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
1893
1894 class DescriptorPool
1895 {
1896 public:
1897 DescriptorPool()
1898 : m_descriptorPool(VK_NULL_HANDLE)
1899 {}
1900
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001901 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001902 : m_descriptorPool(VK_NULL_HANDLE)
1903 {}
1904
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001905 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001906 : m_descriptorPool(descriptorPool)
1907 {}
1908
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001909#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001910 DescriptorPool& operator=(VkDescriptorPool descriptorPool)
1911 {
1912 m_descriptorPool = descriptorPool;
1913 return *this;
1914 }
1915#endif
1916
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001917 DescriptorPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001918 {
1919 m_descriptorPool = VK_NULL_HANDLE;
1920 return *this;
1921 }
1922
Lenny Komowebf33162016-08-26 14:10:08 -06001923 bool operator==(DescriptorPool const &rhs) const
1924 {
1925 return m_descriptorPool == rhs.m_descriptorPool;
1926 }
1927
1928 bool operator!=(DescriptorPool const &rhs) const
1929 {
1930 return m_descriptorPool != rhs.m_descriptorPool;
1931 }
1932
1933 bool operator<(DescriptorPool const &rhs) const
1934 {
1935 return m_descriptorPool < rhs.m_descriptorPool;
1936 }
1937
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001938 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001939 {
1940 return m_descriptorPool;
1941 }
1942
1943 explicit operator bool() const
1944 {
1945 return m_descriptorPool != VK_NULL_HANDLE;
1946 }
1947
1948 bool operator!() const
1949 {
1950 return m_descriptorPool == VK_NULL_HANDLE;
1951 }
1952
1953 private:
1954 VkDescriptorPool m_descriptorPool;
1955 };
1956 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
1957
1958 class Fence
1959 {
1960 public:
1961 Fence()
1962 : m_fence(VK_NULL_HANDLE)
1963 {}
1964
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001965 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001966 : m_fence(VK_NULL_HANDLE)
1967 {}
1968
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001969 VULKAN_HPP_TYPESAFE_EXPLICIT Fence(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001970 : m_fence(fence)
1971 {}
1972
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001973#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001974 Fence& operator=(VkFence fence)
1975 {
1976 m_fence = fence;
1977 return *this;
1978 }
1979#endif
1980
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001981 Fence& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001982 {
1983 m_fence = VK_NULL_HANDLE;
1984 return *this;
1985 }
1986
Lenny Komowebf33162016-08-26 14:10:08 -06001987 bool operator==(Fence const &rhs) const
1988 {
1989 return m_fence == rhs.m_fence;
1990 }
1991
1992 bool operator!=(Fence const &rhs) const
1993 {
1994 return m_fence != rhs.m_fence;
1995 }
1996
1997 bool operator<(Fence const &rhs) const
1998 {
1999 return m_fence < rhs.m_fence;
2000 }
2001
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002002 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002003 {
2004 return m_fence;
2005 }
2006
2007 explicit operator bool() const
2008 {
2009 return m_fence != VK_NULL_HANDLE;
2010 }
2011
2012 bool operator!() const
2013 {
2014 return m_fence == VK_NULL_HANDLE;
2015 }
2016
2017 private:
2018 VkFence m_fence;
2019 };
2020 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2021
2022 class Semaphore
2023 {
2024 public:
2025 Semaphore()
2026 : m_semaphore(VK_NULL_HANDLE)
2027 {}
2028
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002029 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002030 : m_semaphore(VK_NULL_HANDLE)
2031 {}
2032
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002033 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002034 : m_semaphore(semaphore)
2035 {}
2036
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002037#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002038 Semaphore& operator=(VkSemaphore semaphore)
2039 {
2040 m_semaphore = semaphore;
2041 return *this;
2042 }
2043#endif
2044
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002045 Semaphore& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002046 {
2047 m_semaphore = VK_NULL_HANDLE;
2048 return *this;
2049 }
2050
Lenny Komowebf33162016-08-26 14:10:08 -06002051 bool operator==(Semaphore const &rhs) const
2052 {
2053 return m_semaphore == rhs.m_semaphore;
2054 }
2055
2056 bool operator!=(Semaphore const &rhs) const
2057 {
2058 return m_semaphore != rhs.m_semaphore;
2059 }
2060
2061 bool operator<(Semaphore const &rhs) const
2062 {
2063 return m_semaphore < rhs.m_semaphore;
2064 }
2065
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002066 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002067 {
2068 return m_semaphore;
2069 }
2070
2071 explicit operator bool() const
2072 {
2073 return m_semaphore != VK_NULL_HANDLE;
2074 }
2075
2076 bool operator!() const
2077 {
2078 return m_semaphore == VK_NULL_HANDLE;
2079 }
2080
2081 private:
2082 VkSemaphore m_semaphore;
2083 };
2084 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2085
2086 class Event
2087 {
2088 public:
2089 Event()
2090 : m_event(VK_NULL_HANDLE)
2091 {}
2092
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002093 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002094 : m_event(VK_NULL_HANDLE)
2095 {}
2096
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002097 VULKAN_HPP_TYPESAFE_EXPLICIT Event(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002098 : m_event(event)
2099 {}
2100
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002101#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002102 Event& operator=(VkEvent event)
2103 {
2104 m_event = event;
2105 return *this;
2106 }
2107#endif
2108
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002109 Event& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002110 {
2111 m_event = VK_NULL_HANDLE;
2112 return *this;
2113 }
2114
Lenny Komowebf33162016-08-26 14:10:08 -06002115 bool operator==(Event const &rhs) const
2116 {
2117 return m_event == rhs.m_event;
2118 }
2119
2120 bool operator!=(Event const &rhs) const
2121 {
2122 return m_event != rhs.m_event;
2123 }
2124
2125 bool operator<(Event const &rhs) const
2126 {
2127 return m_event < rhs.m_event;
2128 }
2129
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002130 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002131 {
2132 return m_event;
2133 }
2134
2135 explicit operator bool() const
2136 {
2137 return m_event != VK_NULL_HANDLE;
2138 }
2139
2140 bool operator!() const
2141 {
2142 return m_event == VK_NULL_HANDLE;
2143 }
2144
2145 private:
2146 VkEvent m_event;
2147 };
2148 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2149
2150 class QueryPool
2151 {
2152 public:
2153 QueryPool()
2154 : m_queryPool(VK_NULL_HANDLE)
2155 {}
2156
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002157 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002158 : m_queryPool(VK_NULL_HANDLE)
2159 {}
2160
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002161 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002162 : m_queryPool(queryPool)
2163 {}
2164
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002165#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002166 QueryPool& operator=(VkQueryPool queryPool)
2167 {
2168 m_queryPool = queryPool;
2169 return *this;
2170 }
2171#endif
2172
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002173 QueryPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002174 {
2175 m_queryPool = VK_NULL_HANDLE;
2176 return *this;
2177 }
2178
Lenny Komowebf33162016-08-26 14:10:08 -06002179 bool operator==(QueryPool const &rhs) const
2180 {
2181 return m_queryPool == rhs.m_queryPool;
2182 }
2183
2184 bool operator!=(QueryPool const &rhs) const
2185 {
2186 return m_queryPool != rhs.m_queryPool;
2187 }
2188
2189 bool operator<(QueryPool const &rhs) const
2190 {
2191 return m_queryPool < rhs.m_queryPool;
2192 }
2193
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002194 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002195 {
2196 return m_queryPool;
2197 }
2198
2199 explicit operator bool() const
2200 {
2201 return m_queryPool != VK_NULL_HANDLE;
2202 }
2203
2204 bool operator!() const
2205 {
2206 return m_queryPool == VK_NULL_HANDLE;
2207 }
2208
2209 private:
2210 VkQueryPool m_queryPool;
2211 };
2212 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2213
2214 class Framebuffer
2215 {
2216 public:
2217 Framebuffer()
2218 : m_framebuffer(VK_NULL_HANDLE)
2219 {}
2220
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002221 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002222 : m_framebuffer(VK_NULL_HANDLE)
2223 {}
2224
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002225 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002226 : m_framebuffer(framebuffer)
2227 {}
2228
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002229#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002230 Framebuffer& operator=(VkFramebuffer framebuffer)
2231 {
2232 m_framebuffer = framebuffer;
2233 return *this;
2234 }
2235#endif
2236
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002237 Framebuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002238 {
2239 m_framebuffer = VK_NULL_HANDLE;
2240 return *this;
2241 }
2242
Lenny Komowebf33162016-08-26 14:10:08 -06002243 bool operator==(Framebuffer const &rhs) const
2244 {
2245 return m_framebuffer == rhs.m_framebuffer;
2246 }
2247
2248 bool operator!=(Framebuffer const &rhs) const
2249 {
2250 return m_framebuffer != rhs.m_framebuffer;
2251 }
2252
2253 bool operator<(Framebuffer const &rhs) const
2254 {
2255 return m_framebuffer < rhs.m_framebuffer;
2256 }
2257
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002258 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002259 {
2260 return m_framebuffer;
2261 }
2262
2263 explicit operator bool() const
2264 {
2265 return m_framebuffer != VK_NULL_HANDLE;
2266 }
2267
2268 bool operator!() const
2269 {
2270 return m_framebuffer == VK_NULL_HANDLE;
2271 }
2272
2273 private:
2274 VkFramebuffer m_framebuffer;
2275 };
2276 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2277
2278 class RenderPass
2279 {
2280 public:
2281 RenderPass()
2282 : m_renderPass(VK_NULL_HANDLE)
2283 {}
2284
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002285 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002286 : m_renderPass(VK_NULL_HANDLE)
2287 {}
2288
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002289 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002290 : m_renderPass(renderPass)
2291 {}
2292
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002293#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002294 RenderPass& operator=(VkRenderPass renderPass)
2295 {
2296 m_renderPass = renderPass;
2297 return *this;
2298 }
2299#endif
2300
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002301 RenderPass& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002302 {
2303 m_renderPass = VK_NULL_HANDLE;
2304 return *this;
2305 }
2306
Lenny Komowebf33162016-08-26 14:10:08 -06002307 bool operator==(RenderPass const &rhs) const
2308 {
2309 return m_renderPass == rhs.m_renderPass;
2310 }
2311
2312 bool operator!=(RenderPass const &rhs) const
2313 {
2314 return m_renderPass != rhs.m_renderPass;
2315 }
2316
2317 bool operator<(RenderPass const &rhs) const
2318 {
2319 return m_renderPass < rhs.m_renderPass;
2320 }
2321
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002322 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002323 {
2324 return m_renderPass;
2325 }
2326
2327 explicit operator bool() const
2328 {
2329 return m_renderPass != VK_NULL_HANDLE;
2330 }
2331
2332 bool operator!() const
2333 {
2334 return m_renderPass == VK_NULL_HANDLE;
2335 }
2336
2337 private:
2338 VkRenderPass m_renderPass;
2339 };
2340 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2341
2342 class PipelineCache
2343 {
2344 public:
2345 PipelineCache()
2346 : m_pipelineCache(VK_NULL_HANDLE)
2347 {}
2348
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002349 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002350 : m_pipelineCache(VK_NULL_HANDLE)
2351 {}
2352
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002353 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002354 : m_pipelineCache(pipelineCache)
2355 {}
2356
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002357#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002358 PipelineCache& operator=(VkPipelineCache pipelineCache)
2359 {
2360 m_pipelineCache = pipelineCache;
2361 return *this;
2362 }
2363#endif
2364
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002365 PipelineCache& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002366 {
2367 m_pipelineCache = VK_NULL_HANDLE;
2368 return *this;
2369 }
2370
Lenny Komowebf33162016-08-26 14:10:08 -06002371 bool operator==(PipelineCache const &rhs) const
2372 {
2373 return m_pipelineCache == rhs.m_pipelineCache;
2374 }
2375
2376 bool operator!=(PipelineCache const &rhs) const
2377 {
2378 return m_pipelineCache != rhs.m_pipelineCache;
2379 }
2380
2381 bool operator<(PipelineCache const &rhs) const
2382 {
2383 return m_pipelineCache < rhs.m_pipelineCache;
2384 }
2385
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002386 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002387 {
2388 return m_pipelineCache;
2389 }
2390
2391 explicit operator bool() const
2392 {
2393 return m_pipelineCache != VK_NULL_HANDLE;
2394 }
2395
2396 bool operator!() const
2397 {
2398 return m_pipelineCache == VK_NULL_HANDLE;
2399 }
2400
2401 private:
2402 VkPipelineCache m_pipelineCache;
2403 };
2404 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2405
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002406 class ObjectTableNVX
2407 {
2408 public:
2409 ObjectTableNVX()
2410 : m_objectTableNVX(VK_NULL_HANDLE)
2411 {}
2412
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002413 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002414 : m_objectTableNVX(VK_NULL_HANDLE)
2415 {}
2416
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002417 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002418 : m_objectTableNVX(objectTableNVX)
2419 {}
2420
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002421#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002422 ObjectTableNVX& operator=(VkObjectTableNVX objectTableNVX)
2423 {
2424 m_objectTableNVX = objectTableNVX;
2425 return *this;
2426 }
2427#endif
2428
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002429 ObjectTableNVX& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002430 {
2431 m_objectTableNVX = VK_NULL_HANDLE;
2432 return *this;
2433 }
2434
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002435 bool operator==(ObjectTableNVX const &rhs) const
2436 {
2437 return m_objectTableNVX == rhs.m_objectTableNVX;
2438 }
2439
2440 bool operator!=(ObjectTableNVX const &rhs) const
2441 {
2442 return m_objectTableNVX != rhs.m_objectTableNVX;
2443 }
2444
2445 bool operator<(ObjectTableNVX const &rhs) const
2446 {
2447 return m_objectTableNVX < rhs.m_objectTableNVX;
2448 }
2449
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002450 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002451 {
2452 return m_objectTableNVX;
2453 }
2454
2455 explicit operator bool() const
2456 {
2457 return m_objectTableNVX != VK_NULL_HANDLE;
2458 }
2459
2460 bool operator!() const
2461 {
2462 return m_objectTableNVX == VK_NULL_HANDLE;
2463 }
2464
2465 private:
2466 VkObjectTableNVX m_objectTableNVX;
2467 };
2468 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2469
2470 class IndirectCommandsLayoutNVX
2471 {
2472 public:
2473 IndirectCommandsLayoutNVX()
2474 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2475 {}
2476
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002477 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002478 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2479 {}
2480
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002481 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002482 : m_indirectCommandsLayoutNVX(indirectCommandsLayoutNVX)
2483 {}
2484
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002485#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002486 IndirectCommandsLayoutNVX& operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
2487 {
2488 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
2489 return *this;
2490 }
2491#endif
2492
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002493 IndirectCommandsLayoutNVX& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002494 {
2495 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2496 return *this;
2497 }
2498
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002499 bool operator==(IndirectCommandsLayoutNVX const &rhs) const
2500 {
2501 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2502 }
2503
2504 bool operator!=(IndirectCommandsLayoutNVX const &rhs) const
2505 {
2506 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2507 }
2508
2509 bool operator<(IndirectCommandsLayoutNVX const &rhs) const
2510 {
2511 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2512 }
2513
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002514 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002515 {
2516 return m_indirectCommandsLayoutNVX;
2517 }
2518
2519 explicit operator bool() const
2520 {
2521 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2522 }
2523
2524 bool operator!() const
2525 {
2526 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2527 }
2528
2529 private:
2530 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2531 };
2532 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2533
Mark Young0f183a82017-02-28 09:58:04 -07002534 class DescriptorUpdateTemplateKHR
2535 {
2536 public:
2537 DescriptorUpdateTemplateKHR()
2538 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2539 {}
2540
2541 DescriptorUpdateTemplateKHR( std::nullptr_t )
2542 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2543 {}
2544
2545 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
2546 : m_descriptorUpdateTemplateKHR(descriptorUpdateTemplateKHR)
2547 {}
2548
2549#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2550 DescriptorUpdateTemplateKHR& operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
2551 {
2552 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
2553 return *this;
2554 }
2555#endif
2556
2557 DescriptorUpdateTemplateKHR& operator=( std::nullptr_t )
2558 {
2559 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2560 return *this;
2561 }
2562
2563 bool operator==(DescriptorUpdateTemplateKHR const &rhs) const
2564 {
2565 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2566 }
2567
2568 bool operator!=(DescriptorUpdateTemplateKHR const &rhs) const
2569 {
2570 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2571 }
2572
2573 bool operator<(DescriptorUpdateTemplateKHR const &rhs) const
2574 {
2575 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2576 }
2577
2578 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2579 {
2580 return m_descriptorUpdateTemplateKHR;
2581 }
2582
2583 explicit operator bool() const
2584 {
2585 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2586 }
2587
2588 bool operator!() const
2589 {
2590 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2591 }
2592
2593 private:
2594 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2595 };
2596 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2597
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002598 class DisplayKHR
2599 {
2600 public:
2601 DisplayKHR()
2602 : m_displayKHR(VK_NULL_HANDLE)
2603 {}
2604
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002605 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002606 : m_displayKHR(VK_NULL_HANDLE)
2607 {}
2608
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002609 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002610 : m_displayKHR(displayKHR)
2611 {}
2612
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002613#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002614 DisplayKHR& operator=(VkDisplayKHR displayKHR)
2615 {
2616 m_displayKHR = displayKHR;
2617 return *this;
2618 }
2619#endif
2620
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002621 DisplayKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002622 {
2623 m_displayKHR = VK_NULL_HANDLE;
2624 return *this;
2625 }
2626
Lenny Komowebf33162016-08-26 14:10:08 -06002627 bool operator==(DisplayKHR const &rhs) const
2628 {
2629 return m_displayKHR == rhs.m_displayKHR;
2630 }
2631
2632 bool operator!=(DisplayKHR const &rhs) const
2633 {
2634 return m_displayKHR != rhs.m_displayKHR;
2635 }
2636
2637 bool operator<(DisplayKHR const &rhs) const
2638 {
2639 return m_displayKHR < rhs.m_displayKHR;
2640 }
2641
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002642 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002643 {
2644 return m_displayKHR;
2645 }
2646
2647 explicit operator bool() const
2648 {
2649 return m_displayKHR != VK_NULL_HANDLE;
2650 }
2651
2652 bool operator!() const
2653 {
2654 return m_displayKHR == VK_NULL_HANDLE;
2655 }
2656
2657 private:
2658 VkDisplayKHR m_displayKHR;
2659 };
2660 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2661
2662 class DisplayModeKHR
2663 {
2664 public:
2665 DisplayModeKHR()
2666 : m_displayModeKHR(VK_NULL_HANDLE)
2667 {}
2668
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002669 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002670 : m_displayModeKHR(VK_NULL_HANDLE)
2671 {}
2672
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002673 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002674 : m_displayModeKHR(displayModeKHR)
2675 {}
2676
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002677#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002678 DisplayModeKHR& operator=(VkDisplayModeKHR displayModeKHR)
2679 {
2680 m_displayModeKHR = displayModeKHR;
2681 return *this;
2682 }
2683#endif
2684
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002685 DisplayModeKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002686 {
2687 m_displayModeKHR = VK_NULL_HANDLE;
2688 return *this;
2689 }
2690
Lenny Komowebf33162016-08-26 14:10:08 -06002691 bool operator==(DisplayModeKHR const &rhs) const
2692 {
2693 return m_displayModeKHR == rhs.m_displayModeKHR;
2694 }
2695
2696 bool operator!=(DisplayModeKHR const &rhs) const
2697 {
2698 return m_displayModeKHR != rhs.m_displayModeKHR;
2699 }
2700
2701 bool operator<(DisplayModeKHR const &rhs) const
2702 {
2703 return m_displayModeKHR < rhs.m_displayModeKHR;
2704 }
2705
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002706 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002707 {
2708 return m_displayModeKHR;
2709 }
2710
2711 explicit operator bool() const
2712 {
2713 return m_displayModeKHR != VK_NULL_HANDLE;
2714 }
2715
2716 bool operator!() const
2717 {
2718 return m_displayModeKHR == VK_NULL_HANDLE;
2719 }
2720
2721 private:
2722 VkDisplayModeKHR m_displayModeKHR;
2723 };
2724 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2725
2726 class SurfaceKHR
2727 {
2728 public:
2729 SurfaceKHR()
2730 : m_surfaceKHR(VK_NULL_HANDLE)
2731 {}
2732
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002733 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002734 : m_surfaceKHR(VK_NULL_HANDLE)
2735 {}
2736
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002737 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002738 : m_surfaceKHR(surfaceKHR)
2739 {}
2740
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002741#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002742 SurfaceKHR& operator=(VkSurfaceKHR surfaceKHR)
2743 {
2744 m_surfaceKHR = surfaceKHR;
2745 return *this;
2746 }
2747#endif
2748
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002749 SurfaceKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002750 {
2751 m_surfaceKHR = VK_NULL_HANDLE;
2752 return *this;
2753 }
2754
Lenny Komowebf33162016-08-26 14:10:08 -06002755 bool operator==(SurfaceKHR const &rhs) const
2756 {
2757 return m_surfaceKHR == rhs.m_surfaceKHR;
2758 }
2759
2760 bool operator!=(SurfaceKHR const &rhs) const
2761 {
2762 return m_surfaceKHR != rhs.m_surfaceKHR;
2763 }
2764
2765 bool operator<(SurfaceKHR const &rhs) const
2766 {
2767 return m_surfaceKHR < rhs.m_surfaceKHR;
2768 }
2769
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002770 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002771 {
2772 return m_surfaceKHR;
2773 }
2774
2775 explicit operator bool() const
2776 {
2777 return m_surfaceKHR != VK_NULL_HANDLE;
2778 }
2779
2780 bool operator!() const
2781 {
2782 return m_surfaceKHR == VK_NULL_HANDLE;
2783 }
2784
2785 private:
2786 VkSurfaceKHR m_surfaceKHR;
2787 };
2788 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
2789
2790 class SwapchainKHR
2791 {
2792 public:
2793 SwapchainKHR()
2794 : m_swapchainKHR(VK_NULL_HANDLE)
2795 {}
2796
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002797 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002798 : m_swapchainKHR(VK_NULL_HANDLE)
2799 {}
2800
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002801 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002802 : m_swapchainKHR(swapchainKHR)
2803 {}
2804
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002805#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002806 SwapchainKHR& operator=(VkSwapchainKHR swapchainKHR)
2807 {
2808 m_swapchainKHR = swapchainKHR;
2809 return *this;
2810 }
2811#endif
2812
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002813 SwapchainKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002814 {
2815 m_swapchainKHR = VK_NULL_HANDLE;
2816 return *this;
2817 }
2818
Lenny Komowebf33162016-08-26 14:10:08 -06002819 bool operator==(SwapchainKHR const &rhs) const
2820 {
2821 return m_swapchainKHR == rhs.m_swapchainKHR;
2822 }
2823
2824 bool operator!=(SwapchainKHR const &rhs) const
2825 {
2826 return m_swapchainKHR != rhs.m_swapchainKHR;
2827 }
2828
2829 bool operator<(SwapchainKHR const &rhs) const
2830 {
2831 return m_swapchainKHR < rhs.m_swapchainKHR;
2832 }
2833
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002834 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002835 {
2836 return m_swapchainKHR;
2837 }
2838
2839 explicit operator bool() const
2840 {
2841 return m_swapchainKHR != VK_NULL_HANDLE;
2842 }
2843
2844 bool operator!() const
2845 {
2846 return m_swapchainKHR == VK_NULL_HANDLE;
2847 }
2848
2849 private:
2850 VkSwapchainKHR m_swapchainKHR;
2851 };
2852 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
2853
2854 class DebugReportCallbackEXT
2855 {
2856 public:
2857 DebugReportCallbackEXT()
2858 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2859 {}
2860
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002861 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002862 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2863 {}
2864
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002865 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002866 : m_debugReportCallbackEXT(debugReportCallbackEXT)
2867 {}
2868
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002869#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002870 DebugReportCallbackEXT& operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
2871 {
2872 m_debugReportCallbackEXT = debugReportCallbackEXT;
2873 return *this;
2874 }
2875#endif
2876
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002877 DebugReportCallbackEXT& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002878 {
2879 m_debugReportCallbackEXT = VK_NULL_HANDLE;
2880 return *this;
2881 }
2882
Lenny Komowebf33162016-08-26 14:10:08 -06002883 bool operator==(DebugReportCallbackEXT const &rhs) const
2884 {
2885 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
2886 }
2887
2888 bool operator!=(DebugReportCallbackEXT const &rhs) const
2889 {
2890 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
2891 }
2892
2893 bool operator<(DebugReportCallbackEXT const &rhs) const
2894 {
2895 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
2896 }
2897
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002898 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002899 {
2900 return m_debugReportCallbackEXT;
2901 }
2902
2903 explicit operator bool() const
2904 {
2905 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
2906 }
2907
2908 bool operator!() const
2909 {
2910 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
2911 }
2912
2913 private:
2914 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
2915 };
2916 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
2917
2918 struct Offset2D
2919 {
2920 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
2921 : x( x_ )
2922 , y( y_ )
2923 {
2924 }
2925
2926 Offset2D( VkOffset2D const & rhs )
2927 {
2928 memcpy( this, &rhs, sizeof(Offset2D) );
2929 }
2930
2931 Offset2D& operator=( VkOffset2D const & rhs )
2932 {
2933 memcpy( this, &rhs, sizeof(Offset2D) );
2934 return *this;
2935 }
2936
2937 Offset2D& setX( int32_t x_ )
2938 {
2939 x = x_;
2940 return *this;
2941 }
2942
2943 Offset2D& setY( int32_t y_ )
2944 {
2945 y = y_;
2946 return *this;
2947 }
2948
2949 operator const VkOffset2D&() const
2950 {
2951 return *reinterpret_cast<const VkOffset2D*>(this);
2952 }
2953
2954 bool operator==( Offset2D const& rhs ) const
2955 {
2956 return ( x == rhs.x )
2957 && ( y == rhs.y );
2958 }
2959
2960 bool operator!=( Offset2D const& rhs ) const
2961 {
2962 return !operator==( rhs );
2963 }
2964
2965 int32_t x;
2966 int32_t y;
2967 };
2968 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
2969
2970 struct Offset3D
2971 {
2972 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
2973 : x( x_ )
2974 , y( y_ )
2975 , z( z_ )
2976 {
2977 }
2978
2979 Offset3D( VkOffset3D const & rhs )
2980 {
2981 memcpy( this, &rhs, sizeof(Offset3D) );
2982 }
2983
2984 Offset3D& operator=( VkOffset3D const & rhs )
2985 {
2986 memcpy( this, &rhs, sizeof(Offset3D) );
2987 return *this;
2988 }
2989
2990 Offset3D& setX( int32_t x_ )
2991 {
2992 x = x_;
2993 return *this;
2994 }
2995
2996 Offset3D& setY( int32_t y_ )
2997 {
2998 y = y_;
2999 return *this;
3000 }
3001
3002 Offset3D& setZ( int32_t z_ )
3003 {
3004 z = z_;
3005 return *this;
3006 }
3007
3008 operator const VkOffset3D&() const
3009 {
3010 return *reinterpret_cast<const VkOffset3D*>(this);
3011 }
3012
3013 bool operator==( Offset3D const& rhs ) const
3014 {
3015 return ( x == rhs.x )
3016 && ( y == rhs.y )
3017 && ( z == rhs.z );
3018 }
3019
3020 bool operator!=( Offset3D const& rhs ) const
3021 {
3022 return !operator==( rhs );
3023 }
3024
3025 int32_t x;
3026 int32_t y;
3027 int32_t z;
3028 };
3029 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3030
3031 struct Extent2D
3032 {
3033 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3034 : width( width_ )
3035 , height( height_ )
3036 {
3037 }
3038
3039 Extent2D( VkExtent2D const & rhs )
3040 {
3041 memcpy( this, &rhs, sizeof(Extent2D) );
3042 }
3043
3044 Extent2D& operator=( VkExtent2D const & rhs )
3045 {
3046 memcpy( this, &rhs, sizeof(Extent2D) );
3047 return *this;
3048 }
3049
3050 Extent2D& setWidth( uint32_t width_ )
3051 {
3052 width = width_;
3053 return *this;
3054 }
3055
3056 Extent2D& setHeight( uint32_t height_ )
3057 {
3058 height = height_;
3059 return *this;
3060 }
3061
3062 operator const VkExtent2D&() const
3063 {
3064 return *reinterpret_cast<const VkExtent2D*>(this);
3065 }
3066
3067 bool operator==( Extent2D const& rhs ) const
3068 {
3069 return ( width == rhs.width )
3070 && ( height == rhs.height );
3071 }
3072
3073 bool operator!=( Extent2D const& rhs ) const
3074 {
3075 return !operator==( rhs );
3076 }
3077
3078 uint32_t width;
3079 uint32_t height;
3080 };
3081 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3082
3083 struct Extent3D
3084 {
3085 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3086 : width( width_ )
3087 , height( height_ )
3088 , depth( depth_ )
3089 {
3090 }
3091
3092 Extent3D( VkExtent3D const & rhs )
3093 {
3094 memcpy( this, &rhs, sizeof(Extent3D) );
3095 }
3096
3097 Extent3D& operator=( VkExtent3D const & rhs )
3098 {
3099 memcpy( this, &rhs, sizeof(Extent3D) );
3100 return *this;
3101 }
3102
3103 Extent3D& setWidth( uint32_t width_ )
3104 {
3105 width = width_;
3106 return *this;
3107 }
3108
3109 Extent3D& setHeight( uint32_t height_ )
3110 {
3111 height = height_;
3112 return *this;
3113 }
3114
3115 Extent3D& setDepth( uint32_t depth_ )
3116 {
3117 depth = depth_;
3118 return *this;
3119 }
3120
3121 operator const VkExtent3D&() const
3122 {
3123 return *reinterpret_cast<const VkExtent3D*>(this);
3124 }
3125
3126 bool operator==( Extent3D const& rhs ) const
3127 {
3128 return ( width == rhs.width )
3129 && ( height == rhs.height )
3130 && ( depth == rhs.depth );
3131 }
3132
3133 bool operator!=( Extent3D const& rhs ) const
3134 {
3135 return !operator==( rhs );
3136 }
3137
3138 uint32_t width;
3139 uint32_t height;
3140 uint32_t depth;
3141 };
3142 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3143
3144 struct Viewport
3145 {
3146 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3147 : x( x_ )
3148 , y( y_ )
3149 , width( width_ )
3150 , height( height_ )
3151 , minDepth( minDepth_ )
3152 , maxDepth( maxDepth_ )
3153 {
3154 }
3155
3156 Viewport( VkViewport const & rhs )
3157 {
3158 memcpy( this, &rhs, sizeof(Viewport) );
3159 }
3160
3161 Viewport& operator=( VkViewport const & rhs )
3162 {
3163 memcpy( this, &rhs, sizeof(Viewport) );
3164 return *this;
3165 }
3166
3167 Viewport& setX( float x_ )
3168 {
3169 x = x_;
3170 return *this;
3171 }
3172
3173 Viewport& setY( float y_ )
3174 {
3175 y = y_;
3176 return *this;
3177 }
3178
3179 Viewport& setWidth( float width_ )
3180 {
3181 width = width_;
3182 return *this;
3183 }
3184
3185 Viewport& setHeight( float height_ )
3186 {
3187 height = height_;
3188 return *this;
3189 }
3190
3191 Viewport& setMinDepth( float minDepth_ )
3192 {
3193 minDepth = minDepth_;
3194 return *this;
3195 }
3196
3197 Viewport& setMaxDepth( float maxDepth_ )
3198 {
3199 maxDepth = maxDepth_;
3200 return *this;
3201 }
3202
3203 operator const VkViewport&() const
3204 {
3205 return *reinterpret_cast<const VkViewport*>(this);
3206 }
3207
3208 bool operator==( Viewport const& rhs ) const
3209 {
3210 return ( x == rhs.x )
3211 && ( y == rhs.y )
3212 && ( width == rhs.width )
3213 && ( height == rhs.height )
3214 && ( minDepth == rhs.minDepth )
3215 && ( maxDepth == rhs.maxDepth );
3216 }
3217
3218 bool operator!=( Viewport const& rhs ) const
3219 {
3220 return !operator==( rhs );
3221 }
3222
3223 float x;
3224 float y;
3225 float width;
3226 float height;
3227 float minDepth;
3228 float maxDepth;
3229 };
3230 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3231
3232 struct Rect2D
3233 {
3234 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3235 : offset( offset_ )
3236 , extent( extent_ )
3237 {
3238 }
3239
3240 Rect2D( VkRect2D const & rhs )
3241 {
3242 memcpy( this, &rhs, sizeof(Rect2D) );
3243 }
3244
3245 Rect2D& operator=( VkRect2D const & rhs )
3246 {
3247 memcpy( this, &rhs, sizeof(Rect2D) );
3248 return *this;
3249 }
3250
3251 Rect2D& setOffset( Offset2D offset_ )
3252 {
3253 offset = offset_;
3254 return *this;
3255 }
3256
3257 Rect2D& setExtent( Extent2D extent_ )
3258 {
3259 extent = extent_;
3260 return *this;
3261 }
3262
3263 operator const VkRect2D&() const
3264 {
3265 return *reinterpret_cast<const VkRect2D*>(this);
3266 }
3267
3268 bool operator==( Rect2D const& rhs ) const
3269 {
3270 return ( offset == rhs.offset )
3271 && ( extent == rhs.extent );
3272 }
3273
3274 bool operator!=( Rect2D const& rhs ) const
3275 {
3276 return !operator==( rhs );
3277 }
3278
3279 Offset2D offset;
3280 Extent2D extent;
3281 };
3282 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3283
3284 struct ClearRect
3285 {
3286 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3287 : rect( rect_ )
3288 , baseArrayLayer( baseArrayLayer_ )
3289 , layerCount( layerCount_ )
3290 {
3291 }
3292
3293 ClearRect( VkClearRect const & rhs )
3294 {
3295 memcpy( this, &rhs, sizeof(ClearRect) );
3296 }
3297
3298 ClearRect& operator=( VkClearRect const & rhs )
3299 {
3300 memcpy( this, &rhs, sizeof(ClearRect) );
3301 return *this;
3302 }
3303
3304 ClearRect& setRect( Rect2D rect_ )
3305 {
3306 rect = rect_;
3307 return *this;
3308 }
3309
3310 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3311 {
3312 baseArrayLayer = baseArrayLayer_;
3313 return *this;
3314 }
3315
3316 ClearRect& setLayerCount( uint32_t layerCount_ )
3317 {
3318 layerCount = layerCount_;
3319 return *this;
3320 }
3321
3322 operator const VkClearRect&() const
3323 {
3324 return *reinterpret_cast<const VkClearRect*>(this);
3325 }
3326
3327 bool operator==( ClearRect const& rhs ) const
3328 {
3329 return ( rect == rhs.rect )
3330 && ( baseArrayLayer == rhs.baseArrayLayer )
3331 && ( layerCount == rhs.layerCount );
3332 }
3333
3334 bool operator!=( ClearRect const& rhs ) const
3335 {
3336 return !operator==( rhs );
3337 }
3338
3339 Rect2D rect;
3340 uint32_t baseArrayLayer;
3341 uint32_t layerCount;
3342 };
3343 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3344
3345 struct ExtensionProperties
3346 {
3347 operator const VkExtensionProperties&() const
3348 {
3349 return *reinterpret_cast<const VkExtensionProperties*>(this);
3350 }
3351
3352 bool operator==( ExtensionProperties const& rhs ) const
3353 {
3354 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3355 && ( specVersion == rhs.specVersion );
3356 }
3357
3358 bool operator!=( ExtensionProperties const& rhs ) const
3359 {
3360 return !operator==( rhs );
3361 }
3362
3363 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3364 uint32_t specVersion;
3365 };
3366 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3367
3368 struct LayerProperties
3369 {
3370 operator const VkLayerProperties&() const
3371 {
3372 return *reinterpret_cast<const VkLayerProperties*>(this);
3373 }
3374
3375 bool operator==( LayerProperties const& rhs ) const
3376 {
3377 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3378 && ( specVersion == rhs.specVersion )
3379 && ( implementationVersion == rhs.implementationVersion )
3380 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3381 }
3382
3383 bool operator!=( LayerProperties const& rhs ) const
3384 {
3385 return !operator==( rhs );
3386 }
3387
3388 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3389 uint32_t specVersion;
3390 uint32_t implementationVersion;
3391 char description[VK_MAX_DESCRIPTION_SIZE];
3392 };
3393 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3394
3395 struct AllocationCallbacks
3396 {
3397 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3398 : pUserData( pUserData_ )
3399 , pfnAllocation( pfnAllocation_ )
3400 , pfnReallocation( pfnReallocation_ )
3401 , pfnFree( pfnFree_ )
3402 , pfnInternalAllocation( pfnInternalAllocation_ )
3403 , pfnInternalFree( pfnInternalFree_ )
3404 {
3405 }
3406
3407 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3408 {
3409 memcpy( this, &rhs, sizeof(AllocationCallbacks) );
3410 }
3411
3412 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3413 {
3414 memcpy( this, &rhs, sizeof(AllocationCallbacks) );
3415 return *this;
3416 }
3417
3418 AllocationCallbacks& setPUserData( void* pUserData_ )
3419 {
3420 pUserData = pUserData_;
3421 return *this;
3422 }
3423
3424 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3425 {
3426 pfnAllocation = pfnAllocation_;
3427 return *this;
3428 }
3429
3430 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3431 {
3432 pfnReallocation = pfnReallocation_;
3433 return *this;
3434 }
3435
3436 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3437 {
3438 pfnFree = pfnFree_;
3439 return *this;
3440 }
3441
3442 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3443 {
3444 pfnInternalAllocation = pfnInternalAllocation_;
3445 return *this;
3446 }
3447
3448 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3449 {
3450 pfnInternalFree = pfnInternalFree_;
3451 return *this;
3452 }
3453
3454 operator const VkAllocationCallbacks&() const
3455 {
3456 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3457 }
3458
3459 bool operator==( AllocationCallbacks const& rhs ) const
3460 {
3461 return ( pUserData == rhs.pUserData )
3462 && ( pfnAllocation == rhs.pfnAllocation )
3463 && ( pfnReallocation == rhs.pfnReallocation )
3464 && ( pfnFree == rhs.pfnFree )
3465 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3466 && ( pfnInternalFree == rhs.pfnInternalFree );
3467 }
3468
3469 bool operator!=( AllocationCallbacks const& rhs ) const
3470 {
3471 return !operator==( rhs );
3472 }
3473
3474 void* pUserData;
3475 PFN_vkAllocationFunction pfnAllocation;
3476 PFN_vkReallocationFunction pfnReallocation;
3477 PFN_vkFreeFunction pfnFree;
3478 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3479 PFN_vkInternalFreeNotification pfnInternalFree;
3480 };
3481 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3482
3483 struct MemoryRequirements
3484 {
3485 operator const VkMemoryRequirements&() const
3486 {
3487 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3488 }
3489
3490 bool operator==( MemoryRequirements const& rhs ) const
3491 {
3492 return ( size == rhs.size )
3493 && ( alignment == rhs.alignment )
3494 && ( memoryTypeBits == rhs.memoryTypeBits );
3495 }
3496
3497 bool operator!=( MemoryRequirements const& rhs ) const
3498 {
3499 return !operator==( rhs );
3500 }
3501
3502 DeviceSize size;
3503 DeviceSize alignment;
3504 uint32_t memoryTypeBits;
3505 };
3506 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3507
3508 struct DescriptorBufferInfo
3509 {
3510 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3511 : buffer( buffer_ )
3512 , offset( offset_ )
3513 , range( range_ )
3514 {
3515 }
3516
3517 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3518 {
3519 memcpy( this, &rhs, sizeof(DescriptorBufferInfo) );
3520 }
3521
3522 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3523 {
3524 memcpy( this, &rhs, sizeof(DescriptorBufferInfo) );
3525 return *this;
3526 }
3527
3528 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3529 {
3530 buffer = buffer_;
3531 return *this;
3532 }
3533
3534 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3535 {
3536 offset = offset_;
3537 return *this;
3538 }
3539
3540 DescriptorBufferInfo& setRange( DeviceSize range_ )
3541 {
3542 range = range_;
3543 return *this;
3544 }
3545
3546 operator const VkDescriptorBufferInfo&() const
3547 {
3548 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3549 }
3550
3551 bool operator==( DescriptorBufferInfo const& rhs ) const
3552 {
3553 return ( buffer == rhs.buffer )
3554 && ( offset == rhs.offset )
3555 && ( range == rhs.range );
3556 }
3557
3558 bool operator!=( DescriptorBufferInfo const& rhs ) const
3559 {
3560 return !operator==( rhs );
3561 }
3562
3563 Buffer buffer;
3564 DeviceSize offset;
3565 DeviceSize range;
3566 };
3567 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3568
3569 struct SubresourceLayout
3570 {
3571 operator const VkSubresourceLayout&() const
3572 {
3573 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3574 }
3575
3576 bool operator==( SubresourceLayout const& rhs ) const
3577 {
3578 return ( offset == rhs.offset )
3579 && ( size == rhs.size )
3580 && ( rowPitch == rhs.rowPitch )
3581 && ( arrayPitch == rhs.arrayPitch )
3582 && ( depthPitch == rhs.depthPitch );
3583 }
3584
3585 bool operator!=( SubresourceLayout const& rhs ) const
3586 {
3587 return !operator==( rhs );
3588 }
3589
3590 DeviceSize offset;
3591 DeviceSize size;
3592 DeviceSize rowPitch;
3593 DeviceSize arrayPitch;
3594 DeviceSize depthPitch;
3595 };
3596 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3597
3598 struct BufferCopy
3599 {
3600 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3601 : srcOffset( srcOffset_ )
3602 , dstOffset( dstOffset_ )
3603 , size( size_ )
3604 {
3605 }
3606
3607 BufferCopy( VkBufferCopy const & rhs )
3608 {
3609 memcpy( this, &rhs, sizeof(BufferCopy) );
3610 }
3611
3612 BufferCopy& operator=( VkBufferCopy const & rhs )
3613 {
3614 memcpy( this, &rhs, sizeof(BufferCopy) );
3615 return *this;
3616 }
3617
3618 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3619 {
3620 srcOffset = srcOffset_;
3621 return *this;
3622 }
3623
3624 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3625 {
3626 dstOffset = dstOffset_;
3627 return *this;
3628 }
3629
3630 BufferCopy& setSize( DeviceSize size_ )
3631 {
3632 size = size_;
3633 return *this;
3634 }
3635
3636 operator const VkBufferCopy&() const
3637 {
3638 return *reinterpret_cast<const VkBufferCopy*>(this);
3639 }
3640
3641 bool operator==( BufferCopy const& rhs ) const
3642 {
3643 return ( srcOffset == rhs.srcOffset )
3644 && ( dstOffset == rhs.dstOffset )
3645 && ( size == rhs.size );
3646 }
3647
3648 bool operator!=( BufferCopy const& rhs ) const
3649 {
3650 return !operator==( rhs );
3651 }
3652
3653 DeviceSize srcOffset;
3654 DeviceSize dstOffset;
3655 DeviceSize size;
3656 };
3657 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3658
3659 struct SpecializationMapEntry
3660 {
3661 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3662 : constantID( constantID_ )
3663 , offset( offset_ )
3664 , size( size_ )
3665 {
3666 }
3667
3668 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3669 {
3670 memcpy( this, &rhs, sizeof(SpecializationMapEntry) );
3671 }
3672
3673 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3674 {
3675 memcpy( this, &rhs, sizeof(SpecializationMapEntry) );
3676 return *this;
3677 }
3678
3679 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3680 {
3681 constantID = constantID_;
3682 return *this;
3683 }
3684
3685 SpecializationMapEntry& setOffset( uint32_t offset_ )
3686 {
3687 offset = offset_;
3688 return *this;
3689 }
3690
3691 SpecializationMapEntry& setSize( size_t size_ )
3692 {
3693 size = size_;
3694 return *this;
3695 }
3696
3697 operator const VkSpecializationMapEntry&() const
3698 {
3699 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3700 }
3701
3702 bool operator==( SpecializationMapEntry const& rhs ) const
3703 {
3704 return ( constantID == rhs.constantID )
3705 && ( offset == rhs.offset )
3706 && ( size == rhs.size );
3707 }
3708
3709 bool operator!=( SpecializationMapEntry const& rhs ) const
3710 {
3711 return !operator==( rhs );
3712 }
3713
3714 uint32_t constantID;
3715 uint32_t offset;
3716 size_t size;
3717 };
3718 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3719
3720 struct SpecializationInfo
3721 {
3722 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3723 : mapEntryCount( mapEntryCount_ )
3724 , pMapEntries( pMapEntries_ )
3725 , dataSize( dataSize_ )
3726 , pData( pData_ )
3727 {
3728 }
3729
3730 SpecializationInfo( VkSpecializationInfo const & rhs )
3731 {
3732 memcpy( this, &rhs, sizeof(SpecializationInfo) );
3733 }
3734
3735 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3736 {
3737 memcpy( this, &rhs, sizeof(SpecializationInfo) );
3738 return *this;
3739 }
3740
3741 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3742 {
3743 mapEntryCount = mapEntryCount_;
3744 return *this;
3745 }
3746
3747 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
3748 {
3749 pMapEntries = pMapEntries_;
3750 return *this;
3751 }
3752
3753 SpecializationInfo& setDataSize( size_t dataSize_ )
3754 {
3755 dataSize = dataSize_;
3756 return *this;
3757 }
3758
3759 SpecializationInfo& setPData( const void* pData_ )
3760 {
3761 pData = pData_;
3762 return *this;
3763 }
3764
3765 operator const VkSpecializationInfo&() const
3766 {
3767 return *reinterpret_cast<const VkSpecializationInfo*>(this);
3768 }
3769
3770 bool operator==( SpecializationInfo const& rhs ) const
3771 {
3772 return ( mapEntryCount == rhs.mapEntryCount )
3773 && ( pMapEntries == rhs.pMapEntries )
3774 && ( dataSize == rhs.dataSize )
3775 && ( pData == rhs.pData );
3776 }
3777
3778 bool operator!=( SpecializationInfo const& rhs ) const
3779 {
3780 return !operator==( rhs );
3781 }
3782
3783 uint32_t mapEntryCount;
3784 const SpecializationMapEntry* pMapEntries;
3785 size_t dataSize;
3786 const void* pData;
3787 };
3788 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
3789
3790 union ClearColorValue
3791 {
3792 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
3793 {
3794 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3795 }
3796
3797 ClearColorValue( const std::array<int32_t,4>& int32_ )
3798 {
3799 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3800 }
3801
3802 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
3803 {
3804 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3805 }
3806
3807 ClearColorValue& setFloat32( std::array<float,4> float32_ )
3808 {
3809 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3810 return *this;
3811 }
3812
3813 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
3814 {
3815 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3816 return *this;
3817 }
3818
3819 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
3820 {
3821 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3822 return *this;
3823 }
3824
3825 operator VkClearColorValue const& () const
3826 {
3827 return *reinterpret_cast<const VkClearColorValue*>(this);
3828 }
3829
3830 float float32[4];
3831 int32_t int32[4];
3832 uint32_t uint32[4];
3833 };
3834
3835 struct ClearDepthStencilValue
3836 {
3837 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
3838 : depth( depth_ )
3839 , stencil( stencil_ )
3840 {
3841 }
3842
3843 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
3844 {
3845 memcpy( this, &rhs, sizeof(ClearDepthStencilValue) );
3846 }
3847
3848 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
3849 {
3850 memcpy( this, &rhs, sizeof(ClearDepthStencilValue) );
3851 return *this;
3852 }
3853
3854 ClearDepthStencilValue& setDepth( float depth_ )
3855 {
3856 depth = depth_;
3857 return *this;
3858 }
3859
3860 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
3861 {
3862 stencil = stencil_;
3863 return *this;
3864 }
3865
3866 operator const VkClearDepthStencilValue&() const
3867 {
3868 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
3869 }
3870
3871 bool operator==( ClearDepthStencilValue const& rhs ) const
3872 {
3873 return ( depth == rhs.depth )
3874 && ( stencil == rhs.stencil );
3875 }
3876
3877 bool operator!=( ClearDepthStencilValue const& rhs ) const
3878 {
3879 return !operator==( rhs );
3880 }
3881
3882 float depth;
3883 uint32_t stencil;
3884 };
3885 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
3886
3887 union ClearValue
3888 {
3889 ClearValue( ClearColorValue color_ = ClearColorValue() )
3890 {
3891 color = color_;
3892 }
3893
3894 ClearValue( ClearDepthStencilValue depthStencil_ )
3895 {
3896 depthStencil = depthStencil_;
3897 }
3898
3899 ClearValue& setColor( ClearColorValue color_ )
3900 {
3901 color = color_;
3902 return *this;
3903 }
3904
3905 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
3906 {
3907 depthStencil = depthStencil_;
3908 return *this;
3909 }
3910
3911 operator VkClearValue const& () const
3912 {
3913 return *reinterpret_cast<const VkClearValue*>(this);
3914 }
3915
3916#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3917 ClearColorValue color;
3918 ClearDepthStencilValue depthStencil;
3919#else
3920 VkClearColorValue color;
3921 VkClearDepthStencilValue depthStencil;
3922#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3923 };
3924
3925 struct PhysicalDeviceFeatures
3926 {
3927 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 )
3928 : robustBufferAccess( robustBufferAccess_ )
3929 , fullDrawIndexUint32( fullDrawIndexUint32_ )
3930 , imageCubeArray( imageCubeArray_ )
3931 , independentBlend( independentBlend_ )
3932 , geometryShader( geometryShader_ )
3933 , tessellationShader( tessellationShader_ )
3934 , sampleRateShading( sampleRateShading_ )
3935 , dualSrcBlend( dualSrcBlend_ )
3936 , logicOp( logicOp_ )
3937 , multiDrawIndirect( multiDrawIndirect_ )
3938 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
3939 , depthClamp( depthClamp_ )
3940 , depthBiasClamp( depthBiasClamp_ )
3941 , fillModeNonSolid( fillModeNonSolid_ )
3942 , depthBounds( depthBounds_ )
3943 , wideLines( wideLines_ )
3944 , largePoints( largePoints_ )
3945 , alphaToOne( alphaToOne_ )
3946 , multiViewport( multiViewport_ )
3947 , samplerAnisotropy( samplerAnisotropy_ )
3948 , textureCompressionETC2( textureCompressionETC2_ )
3949 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
3950 , textureCompressionBC( textureCompressionBC_ )
3951 , occlusionQueryPrecise( occlusionQueryPrecise_ )
3952 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
3953 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
3954 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
3955 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
3956 , shaderImageGatherExtended( shaderImageGatherExtended_ )
3957 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
3958 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
3959 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
3960 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
3961 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
3962 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
3963 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
3964 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
3965 , shaderClipDistance( shaderClipDistance_ )
3966 , shaderCullDistance( shaderCullDistance_ )
3967 , shaderFloat64( shaderFloat64_ )
3968 , shaderInt64( shaderInt64_ )
3969 , shaderInt16( shaderInt16_ )
3970 , shaderResourceResidency( shaderResourceResidency_ )
3971 , shaderResourceMinLod( shaderResourceMinLod_ )
3972 , sparseBinding( sparseBinding_ )
3973 , sparseResidencyBuffer( sparseResidencyBuffer_ )
3974 , sparseResidencyImage2D( sparseResidencyImage2D_ )
3975 , sparseResidencyImage3D( sparseResidencyImage3D_ )
3976 , sparseResidency2Samples( sparseResidency2Samples_ )
3977 , sparseResidency4Samples( sparseResidency4Samples_ )
3978 , sparseResidency8Samples( sparseResidency8Samples_ )
3979 , sparseResidency16Samples( sparseResidency16Samples_ )
3980 , sparseResidencyAliased( sparseResidencyAliased_ )
3981 , variableMultisampleRate( variableMultisampleRate_ )
3982 , inheritedQueries( inheritedQueries_ )
3983 {
3984 }
3985
3986 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
3987 {
3988 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures) );
3989 }
3990
3991 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
3992 {
3993 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures) );
3994 return *this;
3995 }
3996
3997 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
3998 {
3999 robustBufferAccess = robustBufferAccess_;
4000 return *this;
4001 }
4002
4003 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4004 {
4005 fullDrawIndexUint32 = fullDrawIndexUint32_;
4006 return *this;
4007 }
4008
4009 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4010 {
4011 imageCubeArray = imageCubeArray_;
4012 return *this;
4013 }
4014
4015 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4016 {
4017 independentBlend = independentBlend_;
4018 return *this;
4019 }
4020
4021 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4022 {
4023 geometryShader = geometryShader_;
4024 return *this;
4025 }
4026
4027 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4028 {
4029 tessellationShader = tessellationShader_;
4030 return *this;
4031 }
4032
4033 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4034 {
4035 sampleRateShading = sampleRateShading_;
4036 return *this;
4037 }
4038
4039 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4040 {
4041 dualSrcBlend = dualSrcBlend_;
4042 return *this;
4043 }
4044
4045 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4046 {
4047 logicOp = logicOp_;
4048 return *this;
4049 }
4050
4051 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4052 {
4053 multiDrawIndirect = multiDrawIndirect_;
4054 return *this;
4055 }
4056
4057 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4058 {
4059 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4060 return *this;
4061 }
4062
4063 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4064 {
4065 depthClamp = depthClamp_;
4066 return *this;
4067 }
4068
4069 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4070 {
4071 depthBiasClamp = depthBiasClamp_;
4072 return *this;
4073 }
4074
4075 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4076 {
4077 fillModeNonSolid = fillModeNonSolid_;
4078 return *this;
4079 }
4080
4081 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4082 {
4083 depthBounds = depthBounds_;
4084 return *this;
4085 }
4086
4087 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4088 {
4089 wideLines = wideLines_;
4090 return *this;
4091 }
4092
4093 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4094 {
4095 largePoints = largePoints_;
4096 return *this;
4097 }
4098
4099 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4100 {
4101 alphaToOne = alphaToOne_;
4102 return *this;
4103 }
4104
4105 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4106 {
4107 multiViewport = multiViewport_;
4108 return *this;
4109 }
4110
4111 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4112 {
4113 samplerAnisotropy = samplerAnisotropy_;
4114 return *this;
4115 }
4116
4117 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4118 {
4119 textureCompressionETC2 = textureCompressionETC2_;
4120 return *this;
4121 }
4122
4123 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4124 {
4125 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4126 return *this;
4127 }
4128
4129 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4130 {
4131 textureCompressionBC = textureCompressionBC_;
4132 return *this;
4133 }
4134
4135 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4136 {
4137 occlusionQueryPrecise = occlusionQueryPrecise_;
4138 return *this;
4139 }
4140
4141 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4142 {
4143 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4144 return *this;
4145 }
4146
4147 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4148 {
4149 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4150 return *this;
4151 }
4152
4153 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4154 {
4155 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4156 return *this;
4157 }
4158
4159 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4160 {
4161 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4162 return *this;
4163 }
4164
4165 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4166 {
4167 shaderImageGatherExtended = shaderImageGatherExtended_;
4168 return *this;
4169 }
4170
4171 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4172 {
4173 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4174 return *this;
4175 }
4176
4177 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4178 {
4179 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4180 return *this;
4181 }
4182
4183 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4184 {
4185 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4186 return *this;
4187 }
4188
4189 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4190 {
4191 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4192 return *this;
4193 }
4194
4195 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4196 {
4197 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4198 return *this;
4199 }
4200
4201 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4202 {
4203 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4204 return *this;
4205 }
4206
4207 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4208 {
4209 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4210 return *this;
4211 }
4212
4213 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4214 {
4215 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4216 return *this;
4217 }
4218
4219 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4220 {
4221 shaderClipDistance = shaderClipDistance_;
4222 return *this;
4223 }
4224
4225 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4226 {
4227 shaderCullDistance = shaderCullDistance_;
4228 return *this;
4229 }
4230
4231 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4232 {
4233 shaderFloat64 = shaderFloat64_;
4234 return *this;
4235 }
4236
4237 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4238 {
4239 shaderInt64 = shaderInt64_;
4240 return *this;
4241 }
4242
4243 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4244 {
4245 shaderInt16 = shaderInt16_;
4246 return *this;
4247 }
4248
4249 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4250 {
4251 shaderResourceResidency = shaderResourceResidency_;
4252 return *this;
4253 }
4254
4255 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4256 {
4257 shaderResourceMinLod = shaderResourceMinLod_;
4258 return *this;
4259 }
4260
4261 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4262 {
4263 sparseBinding = sparseBinding_;
4264 return *this;
4265 }
4266
4267 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4268 {
4269 sparseResidencyBuffer = sparseResidencyBuffer_;
4270 return *this;
4271 }
4272
4273 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4274 {
4275 sparseResidencyImage2D = sparseResidencyImage2D_;
4276 return *this;
4277 }
4278
4279 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4280 {
4281 sparseResidencyImage3D = sparseResidencyImage3D_;
4282 return *this;
4283 }
4284
4285 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4286 {
4287 sparseResidency2Samples = sparseResidency2Samples_;
4288 return *this;
4289 }
4290
4291 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4292 {
4293 sparseResidency4Samples = sparseResidency4Samples_;
4294 return *this;
4295 }
4296
4297 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4298 {
4299 sparseResidency8Samples = sparseResidency8Samples_;
4300 return *this;
4301 }
4302
4303 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4304 {
4305 sparseResidency16Samples = sparseResidency16Samples_;
4306 return *this;
4307 }
4308
4309 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4310 {
4311 sparseResidencyAliased = sparseResidencyAliased_;
4312 return *this;
4313 }
4314
4315 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4316 {
4317 variableMultisampleRate = variableMultisampleRate_;
4318 return *this;
4319 }
4320
4321 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4322 {
4323 inheritedQueries = inheritedQueries_;
4324 return *this;
4325 }
4326
4327 operator const VkPhysicalDeviceFeatures&() const
4328 {
4329 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4330 }
4331
4332 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4333 {
4334 return ( robustBufferAccess == rhs.robustBufferAccess )
4335 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4336 && ( imageCubeArray == rhs.imageCubeArray )
4337 && ( independentBlend == rhs.independentBlend )
4338 && ( geometryShader == rhs.geometryShader )
4339 && ( tessellationShader == rhs.tessellationShader )
4340 && ( sampleRateShading == rhs.sampleRateShading )
4341 && ( dualSrcBlend == rhs.dualSrcBlend )
4342 && ( logicOp == rhs.logicOp )
4343 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4344 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4345 && ( depthClamp == rhs.depthClamp )
4346 && ( depthBiasClamp == rhs.depthBiasClamp )
4347 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4348 && ( depthBounds == rhs.depthBounds )
4349 && ( wideLines == rhs.wideLines )
4350 && ( largePoints == rhs.largePoints )
4351 && ( alphaToOne == rhs.alphaToOne )
4352 && ( multiViewport == rhs.multiViewport )
4353 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4354 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4355 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4356 && ( textureCompressionBC == rhs.textureCompressionBC )
4357 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4358 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4359 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4360 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4361 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4362 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4363 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4364 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4365 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4366 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4367 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4368 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4369 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4370 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4371 && ( shaderClipDistance == rhs.shaderClipDistance )
4372 && ( shaderCullDistance == rhs.shaderCullDistance )
4373 && ( shaderFloat64 == rhs.shaderFloat64 )
4374 && ( shaderInt64 == rhs.shaderInt64 )
4375 && ( shaderInt16 == rhs.shaderInt16 )
4376 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4377 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4378 && ( sparseBinding == rhs.sparseBinding )
4379 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4380 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4381 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4382 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4383 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4384 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4385 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4386 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4387 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4388 && ( inheritedQueries == rhs.inheritedQueries );
4389 }
4390
4391 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4392 {
4393 return !operator==( rhs );
4394 }
4395
4396 Bool32 robustBufferAccess;
4397 Bool32 fullDrawIndexUint32;
4398 Bool32 imageCubeArray;
4399 Bool32 independentBlend;
4400 Bool32 geometryShader;
4401 Bool32 tessellationShader;
4402 Bool32 sampleRateShading;
4403 Bool32 dualSrcBlend;
4404 Bool32 logicOp;
4405 Bool32 multiDrawIndirect;
4406 Bool32 drawIndirectFirstInstance;
4407 Bool32 depthClamp;
4408 Bool32 depthBiasClamp;
4409 Bool32 fillModeNonSolid;
4410 Bool32 depthBounds;
4411 Bool32 wideLines;
4412 Bool32 largePoints;
4413 Bool32 alphaToOne;
4414 Bool32 multiViewport;
4415 Bool32 samplerAnisotropy;
4416 Bool32 textureCompressionETC2;
4417 Bool32 textureCompressionASTC_LDR;
4418 Bool32 textureCompressionBC;
4419 Bool32 occlusionQueryPrecise;
4420 Bool32 pipelineStatisticsQuery;
4421 Bool32 vertexPipelineStoresAndAtomics;
4422 Bool32 fragmentStoresAndAtomics;
4423 Bool32 shaderTessellationAndGeometryPointSize;
4424 Bool32 shaderImageGatherExtended;
4425 Bool32 shaderStorageImageExtendedFormats;
4426 Bool32 shaderStorageImageMultisample;
4427 Bool32 shaderStorageImageReadWithoutFormat;
4428 Bool32 shaderStorageImageWriteWithoutFormat;
4429 Bool32 shaderUniformBufferArrayDynamicIndexing;
4430 Bool32 shaderSampledImageArrayDynamicIndexing;
4431 Bool32 shaderStorageBufferArrayDynamicIndexing;
4432 Bool32 shaderStorageImageArrayDynamicIndexing;
4433 Bool32 shaderClipDistance;
4434 Bool32 shaderCullDistance;
4435 Bool32 shaderFloat64;
4436 Bool32 shaderInt64;
4437 Bool32 shaderInt16;
4438 Bool32 shaderResourceResidency;
4439 Bool32 shaderResourceMinLod;
4440 Bool32 sparseBinding;
4441 Bool32 sparseResidencyBuffer;
4442 Bool32 sparseResidencyImage2D;
4443 Bool32 sparseResidencyImage3D;
4444 Bool32 sparseResidency2Samples;
4445 Bool32 sparseResidency4Samples;
4446 Bool32 sparseResidency8Samples;
4447 Bool32 sparseResidency16Samples;
4448 Bool32 sparseResidencyAliased;
4449 Bool32 variableMultisampleRate;
4450 Bool32 inheritedQueries;
4451 };
4452 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4453
4454 struct PhysicalDeviceSparseProperties
4455 {
4456 operator const VkPhysicalDeviceSparseProperties&() const
4457 {
4458 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4459 }
4460
4461 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4462 {
4463 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4464 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4465 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4466 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4467 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4468 }
4469
4470 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4471 {
4472 return !operator==( rhs );
4473 }
4474
4475 Bool32 residencyStandard2DBlockShape;
4476 Bool32 residencyStandard2DMultisampleBlockShape;
4477 Bool32 residencyStandard3DBlockShape;
4478 Bool32 residencyAlignedMipSize;
4479 Bool32 residencyNonResidentStrict;
4480 };
4481 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4482
4483 struct DrawIndirectCommand
4484 {
4485 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4486 : vertexCount( vertexCount_ )
4487 , instanceCount( instanceCount_ )
4488 , firstVertex( firstVertex_ )
4489 , firstInstance( firstInstance_ )
4490 {
4491 }
4492
4493 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4494 {
4495 memcpy( this, &rhs, sizeof(DrawIndirectCommand) );
4496 }
4497
4498 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4499 {
4500 memcpy( this, &rhs, sizeof(DrawIndirectCommand) );
4501 return *this;
4502 }
4503
4504 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4505 {
4506 vertexCount = vertexCount_;
4507 return *this;
4508 }
4509
4510 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4511 {
4512 instanceCount = instanceCount_;
4513 return *this;
4514 }
4515
4516 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4517 {
4518 firstVertex = firstVertex_;
4519 return *this;
4520 }
4521
4522 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4523 {
4524 firstInstance = firstInstance_;
4525 return *this;
4526 }
4527
4528 operator const VkDrawIndirectCommand&() const
4529 {
4530 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4531 }
4532
4533 bool operator==( DrawIndirectCommand const& rhs ) const
4534 {
4535 return ( vertexCount == rhs.vertexCount )
4536 && ( instanceCount == rhs.instanceCount )
4537 && ( firstVertex == rhs.firstVertex )
4538 && ( firstInstance == rhs.firstInstance );
4539 }
4540
4541 bool operator!=( DrawIndirectCommand const& rhs ) const
4542 {
4543 return !operator==( rhs );
4544 }
4545
4546 uint32_t vertexCount;
4547 uint32_t instanceCount;
4548 uint32_t firstVertex;
4549 uint32_t firstInstance;
4550 };
4551 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4552
4553 struct DrawIndexedIndirectCommand
4554 {
4555 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4556 : indexCount( indexCount_ )
4557 , instanceCount( instanceCount_ )
4558 , firstIndex( firstIndex_ )
4559 , vertexOffset( vertexOffset_ )
4560 , firstInstance( firstInstance_ )
4561 {
4562 }
4563
4564 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4565 {
4566 memcpy( this, &rhs, sizeof(DrawIndexedIndirectCommand) );
4567 }
4568
4569 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4570 {
4571 memcpy( this, &rhs, sizeof(DrawIndexedIndirectCommand) );
4572 return *this;
4573 }
4574
4575 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4576 {
4577 indexCount = indexCount_;
4578 return *this;
4579 }
4580
4581 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4582 {
4583 instanceCount = instanceCount_;
4584 return *this;
4585 }
4586
4587 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4588 {
4589 firstIndex = firstIndex_;
4590 return *this;
4591 }
4592
4593 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4594 {
4595 vertexOffset = vertexOffset_;
4596 return *this;
4597 }
4598
4599 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4600 {
4601 firstInstance = firstInstance_;
4602 return *this;
4603 }
4604
4605 operator const VkDrawIndexedIndirectCommand&() const
4606 {
4607 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4608 }
4609
4610 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4611 {
4612 return ( indexCount == rhs.indexCount )
4613 && ( instanceCount == rhs.instanceCount )
4614 && ( firstIndex == rhs.firstIndex )
4615 && ( vertexOffset == rhs.vertexOffset )
4616 && ( firstInstance == rhs.firstInstance );
4617 }
4618
4619 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4620 {
4621 return !operator==( rhs );
4622 }
4623
4624 uint32_t indexCount;
4625 uint32_t instanceCount;
4626 uint32_t firstIndex;
4627 int32_t vertexOffset;
4628 uint32_t firstInstance;
4629 };
4630 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4631
4632 struct DispatchIndirectCommand
4633 {
4634 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4635 : x( x_ )
4636 , y( y_ )
4637 , z( z_ )
4638 {
4639 }
4640
4641 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4642 {
4643 memcpy( this, &rhs, sizeof(DispatchIndirectCommand) );
4644 }
4645
4646 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4647 {
4648 memcpy( this, &rhs, sizeof(DispatchIndirectCommand) );
4649 return *this;
4650 }
4651
4652 DispatchIndirectCommand& setX( uint32_t x_ )
4653 {
4654 x = x_;
4655 return *this;
4656 }
4657
4658 DispatchIndirectCommand& setY( uint32_t y_ )
4659 {
4660 y = y_;
4661 return *this;
4662 }
4663
4664 DispatchIndirectCommand& setZ( uint32_t z_ )
4665 {
4666 z = z_;
4667 return *this;
4668 }
4669
4670 operator const VkDispatchIndirectCommand&() const
4671 {
4672 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4673 }
4674
4675 bool operator==( DispatchIndirectCommand const& rhs ) const
4676 {
4677 return ( x == rhs.x )
4678 && ( y == rhs.y )
4679 && ( z == rhs.z );
4680 }
4681
4682 bool operator!=( DispatchIndirectCommand const& rhs ) const
4683 {
4684 return !operator==( rhs );
4685 }
4686
4687 uint32_t x;
4688 uint32_t y;
4689 uint32_t z;
4690 };
4691 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4692
4693 struct DisplayPlanePropertiesKHR
4694 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004695 operator const VkDisplayPlanePropertiesKHR&() const
4696 {
4697 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4698 }
4699
4700 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4701 {
4702 return ( currentDisplay == rhs.currentDisplay )
4703 && ( currentStackIndex == rhs.currentStackIndex );
4704 }
4705
4706 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4707 {
4708 return !operator==( rhs );
4709 }
4710
4711 DisplayKHR currentDisplay;
4712 uint32_t currentStackIndex;
4713 };
4714 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4715
4716 struct DisplayModeParametersKHR
4717 {
4718 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4719 : visibleRegion( visibleRegion_ )
4720 , refreshRate( refreshRate_ )
4721 {
4722 }
4723
4724 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4725 {
4726 memcpy( this, &rhs, sizeof(DisplayModeParametersKHR) );
4727 }
4728
4729 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4730 {
4731 memcpy( this, &rhs, sizeof(DisplayModeParametersKHR) );
4732 return *this;
4733 }
4734
4735 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4736 {
4737 visibleRegion = visibleRegion_;
4738 return *this;
4739 }
4740
4741 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4742 {
4743 refreshRate = refreshRate_;
4744 return *this;
4745 }
4746
4747 operator const VkDisplayModeParametersKHR&() const
4748 {
4749 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4750 }
4751
4752 bool operator==( DisplayModeParametersKHR const& rhs ) const
4753 {
4754 return ( visibleRegion == rhs.visibleRegion )
4755 && ( refreshRate == rhs.refreshRate );
4756 }
4757
4758 bool operator!=( DisplayModeParametersKHR const& rhs ) const
4759 {
4760 return !operator==( rhs );
4761 }
4762
4763 Extent2D visibleRegion;
4764 uint32_t refreshRate;
4765 };
4766 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
4767
4768 struct DisplayModePropertiesKHR
4769 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004770 operator const VkDisplayModePropertiesKHR&() const
4771 {
4772 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
4773 }
4774
4775 bool operator==( DisplayModePropertiesKHR const& rhs ) const
4776 {
4777 return ( displayMode == rhs.displayMode )
4778 && ( parameters == rhs.parameters );
4779 }
4780
4781 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
4782 {
4783 return !operator==( rhs );
4784 }
4785
4786 DisplayModeKHR displayMode;
4787 DisplayModeParametersKHR parameters;
4788 };
4789 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
4790
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06004791 struct XYColorEXT
4792 {
4793 XYColorEXT( float x_ = 0, float y_ = 0 )
4794 : x( x_ )
4795 , y( y_ )
4796 {
4797 }
4798
4799 XYColorEXT( VkXYColorEXT const & rhs )
4800 {
4801 memcpy( this, &rhs, sizeof(XYColorEXT) );
4802 }
4803
4804 XYColorEXT& operator=( VkXYColorEXT const & rhs )
4805 {
4806 memcpy( this, &rhs, sizeof(XYColorEXT) );
4807 return *this;
4808 }
4809
4810 XYColorEXT& setX( float x_ )
4811 {
4812 x = x_;
4813 return *this;
4814 }
4815
4816 XYColorEXT& setY( float y_ )
4817 {
4818 y = y_;
4819 return *this;
4820 }
4821
4822 operator const VkXYColorEXT&() const
4823 {
4824 return *reinterpret_cast<const VkXYColorEXT*>(this);
4825 }
4826
4827 bool operator==( XYColorEXT const& rhs ) const
4828 {
4829 return ( x == rhs.x )
4830 && ( y == rhs.y );
4831 }
4832
4833 bool operator!=( XYColorEXT const& rhs ) const
4834 {
4835 return !operator==( rhs );
4836 }
4837
4838 float x;
4839 float y;
4840 };
4841 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
4842
4843 struct RefreshCycleDurationGOOGLE
4844 {
4845 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
4846 : refreshDuration( refreshDuration_ )
4847 {
4848 }
4849
4850 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
4851 {
4852 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4853 }
4854
4855 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
4856 {
4857 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4858 return *this;
4859 }
4860
4861 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
4862 {
4863 refreshDuration = refreshDuration_;
4864 return *this;
4865 }
4866
4867 operator const VkRefreshCycleDurationGOOGLE&() const
4868 {
4869 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
4870 }
4871
4872 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
4873 {
4874 return ( refreshDuration == rhs.refreshDuration );
4875 }
4876
4877 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
4878 {
4879 return !operator==( rhs );
4880 }
4881
4882 uint64_t refreshDuration;
4883 };
4884 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
4885
4886 struct PastPresentationTimingGOOGLE
4887 {
4888 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
4889 : presentID( presentID_ )
4890 , desiredPresentTime( desiredPresentTime_ )
4891 , actualPresentTime( actualPresentTime_ )
4892 , earliestPresentTime( earliestPresentTime_ )
4893 , presentMargin( presentMargin_ )
4894 {
4895 }
4896
4897 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
4898 {
4899 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
4900 }
4901
4902 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
4903 {
4904 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
4905 return *this;
4906 }
4907
4908 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
4909 {
4910 presentID = presentID_;
4911 return *this;
4912 }
4913
4914 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
4915 {
4916 desiredPresentTime = desiredPresentTime_;
4917 return *this;
4918 }
4919
4920 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
4921 {
4922 actualPresentTime = actualPresentTime_;
4923 return *this;
4924 }
4925
4926 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
4927 {
4928 earliestPresentTime = earliestPresentTime_;
4929 return *this;
4930 }
4931
4932 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
4933 {
4934 presentMargin = presentMargin_;
4935 return *this;
4936 }
4937
4938 operator const VkPastPresentationTimingGOOGLE&() const
4939 {
4940 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
4941 }
4942
4943 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
4944 {
4945 return ( presentID == rhs.presentID )
4946 && ( desiredPresentTime == rhs.desiredPresentTime )
4947 && ( actualPresentTime == rhs.actualPresentTime )
4948 && ( earliestPresentTime == rhs.earliestPresentTime )
4949 && ( presentMargin == rhs.presentMargin );
4950 }
4951
4952 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
4953 {
4954 return !operator==( rhs );
4955 }
4956
4957 uint32_t presentID;
4958 uint64_t desiredPresentTime;
4959 uint64_t actualPresentTime;
4960 uint64_t earliestPresentTime;
4961 uint64_t presentMargin;
4962 };
4963 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
4964
4965 struct PresentTimeGOOGLE
4966 {
4967 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
4968 : presentID( presentID_ )
4969 , desiredPresentTime( desiredPresentTime_ )
4970 {
4971 }
4972
4973 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
4974 {
4975 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
4976 }
4977
4978 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
4979 {
4980 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
4981 return *this;
4982 }
4983
4984 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
4985 {
4986 presentID = presentID_;
4987 return *this;
4988 }
4989
4990 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
4991 {
4992 desiredPresentTime = desiredPresentTime_;
4993 return *this;
4994 }
4995
4996 operator const VkPresentTimeGOOGLE&() const
4997 {
4998 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
4999 }
5000
5001 bool operator==( PresentTimeGOOGLE const& rhs ) const
5002 {
5003 return ( presentID == rhs.presentID )
5004 && ( desiredPresentTime == rhs.desiredPresentTime );
5005 }
5006
5007 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5008 {
5009 return !operator==( rhs );
5010 }
5011
5012 uint32_t presentID;
5013 uint64_t desiredPresentTime;
5014 };
5015 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5016
Mark Young0f183a82017-02-28 09:58:04 -07005017 struct ViewportWScalingNV
5018 {
5019 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5020 : xcoeff( xcoeff_ )
5021 , ycoeff( ycoeff_ )
5022 {
5023 }
5024
5025 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5026 {
5027 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5028 }
5029
5030 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5031 {
5032 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5033 return *this;
5034 }
5035
5036 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5037 {
5038 xcoeff = xcoeff_;
5039 return *this;
5040 }
5041
5042 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5043 {
5044 ycoeff = ycoeff_;
5045 return *this;
5046 }
5047
5048 operator const VkViewportWScalingNV&() const
5049 {
5050 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5051 }
5052
5053 bool operator==( ViewportWScalingNV const& rhs ) const
5054 {
5055 return ( xcoeff == rhs.xcoeff )
5056 && ( ycoeff == rhs.ycoeff );
5057 }
5058
5059 bool operator!=( ViewportWScalingNV const& rhs ) const
5060 {
5061 return !operator==( rhs );
5062 }
5063
5064 float xcoeff;
5065 float ycoeff;
5066 };
5067 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 enum class ImageLayout
5070 {
5071 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5072 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5073 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5074 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5075 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5076 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5077 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5078 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5079 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
5080 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
5081 };
5082
5083 struct DescriptorImageInfo
5084 {
5085 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5086 : sampler( sampler_ )
5087 , imageView( imageView_ )
5088 , imageLayout( imageLayout_ )
5089 {
5090 }
5091
5092 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5093 {
5094 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5095 }
5096
5097 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5098 {
5099 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5100 return *this;
5101 }
5102
5103 DescriptorImageInfo& setSampler( Sampler sampler_ )
5104 {
5105 sampler = sampler_;
5106 return *this;
5107 }
5108
5109 DescriptorImageInfo& setImageView( ImageView imageView_ )
5110 {
5111 imageView = imageView_;
5112 return *this;
5113 }
5114
5115 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5116 {
5117 imageLayout = imageLayout_;
5118 return *this;
5119 }
5120
5121 operator const VkDescriptorImageInfo&() const
5122 {
5123 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5124 }
5125
5126 bool operator==( DescriptorImageInfo const& rhs ) const
5127 {
5128 return ( sampler == rhs.sampler )
5129 && ( imageView == rhs.imageView )
5130 && ( imageLayout == rhs.imageLayout );
5131 }
5132
5133 bool operator!=( DescriptorImageInfo const& rhs ) const
5134 {
5135 return !operator==( rhs );
5136 }
5137
5138 Sampler sampler;
5139 ImageView imageView;
5140 ImageLayout imageLayout;
5141 };
5142 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5143
5144 struct AttachmentReference
5145 {
5146 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5147 : attachment( attachment_ )
5148 , layout( layout_ )
5149 {
5150 }
5151
5152 AttachmentReference( VkAttachmentReference const & rhs )
5153 {
5154 memcpy( this, &rhs, sizeof(AttachmentReference) );
5155 }
5156
5157 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5158 {
5159 memcpy( this, &rhs, sizeof(AttachmentReference) );
5160 return *this;
5161 }
5162
5163 AttachmentReference& setAttachment( uint32_t attachment_ )
5164 {
5165 attachment = attachment_;
5166 return *this;
5167 }
5168
5169 AttachmentReference& setLayout( ImageLayout layout_ )
5170 {
5171 layout = layout_;
5172 return *this;
5173 }
5174
5175 operator const VkAttachmentReference&() const
5176 {
5177 return *reinterpret_cast<const VkAttachmentReference*>(this);
5178 }
5179
5180 bool operator==( AttachmentReference const& rhs ) const
5181 {
5182 return ( attachment == rhs.attachment )
5183 && ( layout == rhs.layout );
5184 }
5185
5186 bool operator!=( AttachmentReference const& rhs ) const
5187 {
5188 return !operator==( rhs );
5189 }
5190
5191 uint32_t attachment;
5192 ImageLayout layout;
5193 };
5194 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5195
5196 enum class AttachmentLoadOp
5197 {
5198 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5199 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5200 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5201 };
5202
5203 enum class AttachmentStoreOp
5204 {
5205 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5206 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5207 };
5208
5209 enum class ImageType
5210 {
5211 e1D = VK_IMAGE_TYPE_1D,
5212 e2D = VK_IMAGE_TYPE_2D,
5213 e3D = VK_IMAGE_TYPE_3D
5214 };
5215
5216 enum class ImageTiling
5217 {
5218 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5219 eLinear = VK_IMAGE_TILING_LINEAR
5220 };
5221
5222 enum class ImageViewType
5223 {
5224 e1D = VK_IMAGE_VIEW_TYPE_1D,
5225 e2D = VK_IMAGE_VIEW_TYPE_2D,
5226 e3D = VK_IMAGE_VIEW_TYPE_3D,
5227 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5228 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5229 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5230 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5231 };
5232
5233 enum class CommandBufferLevel
5234 {
5235 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5236 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5237 };
5238
5239 enum class ComponentSwizzle
5240 {
5241 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5242 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5243 eOne = VK_COMPONENT_SWIZZLE_ONE,
5244 eR = VK_COMPONENT_SWIZZLE_R,
5245 eG = VK_COMPONENT_SWIZZLE_G,
5246 eB = VK_COMPONENT_SWIZZLE_B,
5247 eA = VK_COMPONENT_SWIZZLE_A
5248 };
5249
5250 struct ComponentMapping
5251 {
5252 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5253 : r( r_ )
5254 , g( g_ )
5255 , b( b_ )
5256 , a( a_ )
5257 {
5258 }
5259
5260 ComponentMapping( VkComponentMapping const & rhs )
5261 {
5262 memcpy( this, &rhs, sizeof(ComponentMapping) );
5263 }
5264
5265 ComponentMapping& operator=( VkComponentMapping const & rhs )
5266 {
5267 memcpy( this, &rhs, sizeof(ComponentMapping) );
5268 return *this;
5269 }
5270
5271 ComponentMapping& setR( ComponentSwizzle r_ )
5272 {
5273 r = r_;
5274 return *this;
5275 }
5276
5277 ComponentMapping& setG( ComponentSwizzle g_ )
5278 {
5279 g = g_;
5280 return *this;
5281 }
5282
5283 ComponentMapping& setB( ComponentSwizzle b_ )
5284 {
5285 b = b_;
5286 return *this;
5287 }
5288
5289 ComponentMapping& setA( ComponentSwizzle a_ )
5290 {
5291 a = a_;
5292 return *this;
5293 }
5294
5295 operator const VkComponentMapping&() const
5296 {
5297 return *reinterpret_cast<const VkComponentMapping*>(this);
5298 }
5299
5300 bool operator==( ComponentMapping const& rhs ) const
5301 {
5302 return ( r == rhs.r )
5303 && ( g == rhs.g )
5304 && ( b == rhs.b )
5305 && ( a == rhs.a );
5306 }
5307
5308 bool operator!=( ComponentMapping const& rhs ) const
5309 {
5310 return !operator==( rhs );
5311 }
5312
5313 ComponentSwizzle r;
5314 ComponentSwizzle g;
5315 ComponentSwizzle b;
5316 ComponentSwizzle a;
5317 };
5318 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5319
5320 enum class DescriptorType
5321 {
5322 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5323 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5324 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5325 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5326 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5327 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5328 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5329 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5330 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5331 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5332 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5333 };
5334
5335 struct DescriptorPoolSize
5336 {
5337 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5338 : type( type_ )
5339 , descriptorCount( descriptorCount_ )
5340 {
5341 }
5342
5343 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5344 {
5345 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5346 }
5347
5348 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5349 {
5350 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5351 return *this;
5352 }
5353
5354 DescriptorPoolSize& setType( DescriptorType type_ )
5355 {
5356 type = type_;
5357 return *this;
5358 }
5359
5360 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5361 {
5362 descriptorCount = descriptorCount_;
5363 return *this;
5364 }
5365
5366 operator const VkDescriptorPoolSize&() const
5367 {
5368 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5369 }
5370
5371 bool operator==( DescriptorPoolSize const& rhs ) const
5372 {
5373 return ( type == rhs.type )
5374 && ( descriptorCount == rhs.descriptorCount );
5375 }
5376
5377 bool operator!=( DescriptorPoolSize const& rhs ) const
5378 {
5379 return !operator==( rhs );
5380 }
5381
5382 DescriptorType type;
5383 uint32_t descriptorCount;
5384 };
5385 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5386
Mark Young0f183a82017-02-28 09:58:04 -07005387 struct DescriptorUpdateTemplateEntryKHR
5388 {
5389 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 )
5390 : dstBinding( dstBinding_ )
5391 , dstArrayElement( dstArrayElement_ )
5392 , descriptorCount( descriptorCount_ )
5393 , descriptorType( descriptorType_ )
5394 , offset( offset_ )
5395 , stride( stride_ )
5396 {
5397 }
5398
5399 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5400 {
5401 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5402 }
5403
5404 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5405 {
5406 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5407 return *this;
5408 }
5409
5410 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5411 {
5412 dstBinding = dstBinding_;
5413 return *this;
5414 }
5415
5416 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5417 {
5418 dstArrayElement = dstArrayElement_;
5419 return *this;
5420 }
5421
5422 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5423 {
5424 descriptorCount = descriptorCount_;
5425 return *this;
5426 }
5427
5428 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5429 {
5430 descriptorType = descriptorType_;
5431 return *this;
5432 }
5433
5434 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5435 {
5436 offset = offset_;
5437 return *this;
5438 }
5439
5440 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5441 {
5442 stride = stride_;
5443 return *this;
5444 }
5445
5446 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5447 {
5448 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5449 }
5450
5451 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5452 {
5453 return ( dstBinding == rhs.dstBinding )
5454 && ( dstArrayElement == rhs.dstArrayElement )
5455 && ( descriptorCount == rhs.descriptorCount )
5456 && ( descriptorType == rhs.descriptorType )
5457 && ( offset == rhs.offset )
5458 && ( stride == rhs.stride );
5459 }
5460
5461 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5462 {
5463 return !operator==( rhs );
5464 }
5465
5466 uint32_t dstBinding;
5467 uint32_t dstArrayElement;
5468 uint32_t descriptorCount;
5469 DescriptorType descriptorType;
5470 size_t offset;
5471 size_t stride;
5472 };
5473 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5474
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005475 enum class QueryType
5476 {
5477 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5478 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5479 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5480 };
5481
5482 enum class BorderColor
5483 {
5484 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5485 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5486 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5487 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5488 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5489 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5490 };
5491
5492 enum class PipelineBindPoint
5493 {
5494 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5495 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5496 };
5497
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005498 enum class PipelineCacheHeaderVersion
5499 {
5500 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5501 };
5502
5503 enum class PrimitiveTopology
5504 {
5505 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5506 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5507 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5508 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5509 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5510 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5511 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5512 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5513 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5514 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5515 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5516 };
5517
5518 enum class SharingMode
5519 {
5520 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5521 eConcurrent = VK_SHARING_MODE_CONCURRENT
5522 };
5523
5524 enum class IndexType
5525 {
5526 eUint16 = VK_INDEX_TYPE_UINT16,
5527 eUint32 = VK_INDEX_TYPE_UINT32
5528 };
5529
5530 enum class Filter
5531 {
5532 eNearest = VK_FILTER_NEAREST,
5533 eLinear = VK_FILTER_LINEAR,
5534 eCubicIMG = VK_FILTER_CUBIC_IMG
5535 };
5536
5537 enum class SamplerMipmapMode
5538 {
5539 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5540 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5541 };
5542
5543 enum class SamplerAddressMode
5544 {
5545 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5546 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5547 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5548 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5549 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5550 };
5551
5552 enum class CompareOp
5553 {
5554 eNever = VK_COMPARE_OP_NEVER,
5555 eLess = VK_COMPARE_OP_LESS,
5556 eEqual = VK_COMPARE_OP_EQUAL,
5557 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5558 eGreater = VK_COMPARE_OP_GREATER,
5559 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5560 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5561 eAlways = VK_COMPARE_OP_ALWAYS
5562 };
5563
5564 enum class PolygonMode
5565 {
5566 eFill = VK_POLYGON_MODE_FILL,
5567 eLine = VK_POLYGON_MODE_LINE,
5568 ePoint = VK_POLYGON_MODE_POINT
5569 };
5570
5571 enum class CullModeFlagBits
5572 {
5573 eNone = VK_CULL_MODE_NONE,
5574 eFront = VK_CULL_MODE_FRONT_BIT,
5575 eBack = VK_CULL_MODE_BACK_BIT,
5576 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5577 };
5578
5579 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5580
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005581 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005582 {
5583 return CullModeFlags( bit0 ) | bit1;
5584 }
5585
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005586 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5587 {
5588 return ~( CullModeFlags( bits ) );
5589 }
5590
5591 template <> struct FlagTraits<CullModeFlagBits>
5592 {
5593 enum
5594 {
5595 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5596 };
5597 };
5598
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005599 enum class FrontFace
5600 {
5601 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5602 eClockwise = VK_FRONT_FACE_CLOCKWISE
5603 };
5604
5605 enum class BlendFactor
5606 {
5607 eZero = VK_BLEND_FACTOR_ZERO,
5608 eOne = VK_BLEND_FACTOR_ONE,
5609 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5610 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5611 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5612 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5613 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5614 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5615 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5616 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5617 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5618 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5619 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5620 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5621 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5622 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5623 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5624 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5625 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5626 };
5627
5628 enum class BlendOp
5629 {
5630 eAdd = VK_BLEND_OP_ADD,
5631 eSubtract = VK_BLEND_OP_SUBTRACT,
5632 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5633 eMin = VK_BLEND_OP_MIN,
5634 eMax = VK_BLEND_OP_MAX
5635 };
5636
5637 enum class StencilOp
5638 {
5639 eKeep = VK_STENCIL_OP_KEEP,
5640 eZero = VK_STENCIL_OP_ZERO,
5641 eReplace = VK_STENCIL_OP_REPLACE,
5642 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5643 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5644 eInvert = VK_STENCIL_OP_INVERT,
5645 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5646 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5647 };
5648
5649 struct StencilOpState
5650 {
5651 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 )
5652 : failOp( failOp_ )
5653 , passOp( passOp_ )
5654 , depthFailOp( depthFailOp_ )
5655 , compareOp( compareOp_ )
5656 , compareMask( compareMask_ )
5657 , writeMask( writeMask_ )
5658 , reference( reference_ )
5659 {
5660 }
5661
5662 StencilOpState( VkStencilOpState const & rhs )
5663 {
5664 memcpy( this, &rhs, sizeof(StencilOpState) );
5665 }
5666
5667 StencilOpState& operator=( VkStencilOpState const & rhs )
5668 {
5669 memcpy( this, &rhs, sizeof(StencilOpState) );
5670 return *this;
5671 }
5672
5673 StencilOpState& setFailOp( StencilOp failOp_ )
5674 {
5675 failOp = failOp_;
5676 return *this;
5677 }
5678
5679 StencilOpState& setPassOp( StencilOp passOp_ )
5680 {
5681 passOp = passOp_;
5682 return *this;
5683 }
5684
5685 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5686 {
5687 depthFailOp = depthFailOp_;
5688 return *this;
5689 }
5690
5691 StencilOpState& setCompareOp( CompareOp compareOp_ )
5692 {
5693 compareOp = compareOp_;
5694 return *this;
5695 }
5696
5697 StencilOpState& setCompareMask( uint32_t compareMask_ )
5698 {
5699 compareMask = compareMask_;
5700 return *this;
5701 }
5702
5703 StencilOpState& setWriteMask( uint32_t writeMask_ )
5704 {
5705 writeMask = writeMask_;
5706 return *this;
5707 }
5708
5709 StencilOpState& setReference( uint32_t reference_ )
5710 {
5711 reference = reference_;
5712 return *this;
5713 }
5714
5715 operator const VkStencilOpState&() const
5716 {
5717 return *reinterpret_cast<const VkStencilOpState*>(this);
5718 }
5719
5720 bool operator==( StencilOpState const& rhs ) const
5721 {
5722 return ( failOp == rhs.failOp )
5723 && ( passOp == rhs.passOp )
5724 && ( depthFailOp == rhs.depthFailOp )
5725 && ( compareOp == rhs.compareOp )
5726 && ( compareMask == rhs.compareMask )
5727 && ( writeMask == rhs.writeMask )
5728 && ( reference == rhs.reference );
5729 }
5730
5731 bool operator!=( StencilOpState const& rhs ) const
5732 {
5733 return !operator==( rhs );
5734 }
5735
5736 StencilOp failOp;
5737 StencilOp passOp;
5738 StencilOp depthFailOp;
5739 CompareOp compareOp;
5740 uint32_t compareMask;
5741 uint32_t writeMask;
5742 uint32_t reference;
5743 };
5744 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5745
5746 enum class LogicOp
5747 {
5748 eClear = VK_LOGIC_OP_CLEAR,
5749 eAnd = VK_LOGIC_OP_AND,
5750 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5751 eCopy = VK_LOGIC_OP_COPY,
5752 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5753 eNoOp = VK_LOGIC_OP_NO_OP,
5754 eXor = VK_LOGIC_OP_XOR,
5755 eOr = VK_LOGIC_OP_OR,
5756 eNor = VK_LOGIC_OP_NOR,
5757 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5758 eInvert = VK_LOGIC_OP_INVERT,
5759 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5760 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5761 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5762 eNand = VK_LOGIC_OP_NAND,
5763 eSet = VK_LOGIC_OP_SET
5764 };
5765
5766 enum class InternalAllocationType
5767 {
5768 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5769 };
5770
5771 enum class SystemAllocationScope
5772 {
5773 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5774 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5775 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5776 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5777 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5778 };
5779
5780 enum class PhysicalDeviceType
5781 {
5782 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5783 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5784 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5785 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5786 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5787 };
5788
5789 enum class VertexInputRate
5790 {
5791 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5792 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5793 };
5794
5795 struct VertexInputBindingDescription
5796 {
5797 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5798 : binding( binding_ )
5799 , stride( stride_ )
5800 , inputRate( inputRate_ )
5801 {
5802 }
5803
5804 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
5805 {
5806 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5807 }
5808
5809 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
5810 {
5811 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5812 return *this;
5813 }
5814
5815 VertexInputBindingDescription& setBinding( uint32_t binding_ )
5816 {
5817 binding = binding_;
5818 return *this;
5819 }
5820
5821 VertexInputBindingDescription& setStride( uint32_t stride_ )
5822 {
5823 stride = stride_;
5824 return *this;
5825 }
5826
5827 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
5828 {
5829 inputRate = inputRate_;
5830 return *this;
5831 }
5832
5833 operator const VkVertexInputBindingDescription&() const
5834 {
5835 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
5836 }
5837
5838 bool operator==( VertexInputBindingDescription const& rhs ) const
5839 {
5840 return ( binding == rhs.binding )
5841 && ( stride == rhs.stride )
5842 && ( inputRate == rhs.inputRate );
5843 }
5844
5845 bool operator!=( VertexInputBindingDescription const& rhs ) const
5846 {
5847 return !operator==( rhs );
5848 }
5849
5850 uint32_t binding;
5851 uint32_t stride;
5852 VertexInputRate inputRate;
5853 };
5854 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
5855
5856 enum class Format
5857 {
5858 eUndefined = VK_FORMAT_UNDEFINED,
5859 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
5860 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
5861 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
5862 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
5863 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
5864 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
5865 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
5866 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
5867 eR8Unorm = VK_FORMAT_R8_UNORM,
5868 eR8Snorm = VK_FORMAT_R8_SNORM,
5869 eR8Uscaled = VK_FORMAT_R8_USCALED,
5870 eR8Sscaled = VK_FORMAT_R8_SSCALED,
5871 eR8Uint = VK_FORMAT_R8_UINT,
5872 eR8Sint = VK_FORMAT_R8_SINT,
5873 eR8Srgb = VK_FORMAT_R8_SRGB,
5874 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
5875 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
5876 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
5877 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
5878 eR8G8Uint = VK_FORMAT_R8G8_UINT,
5879 eR8G8Sint = VK_FORMAT_R8G8_SINT,
5880 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
5881 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
5882 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
5883 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
5884 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
5885 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
5886 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
5887 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
5888 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
5889 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
5890 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
5891 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
5892 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
5893 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
5894 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
5895 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
5896 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
5897 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
5898 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
5899 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
5900 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
5901 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
5902 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
5903 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
5904 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
5905 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
5906 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
5907 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
5908 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
5909 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
5910 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
5911 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
5912 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
5913 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
5914 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
5915 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
5916 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
5917 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
5918 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
5919 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
5920 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
5921 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
5922 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
5923 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
5924 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
5925 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
5926 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
5927 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
5928 eR16Unorm = VK_FORMAT_R16_UNORM,
5929 eR16Snorm = VK_FORMAT_R16_SNORM,
5930 eR16Uscaled = VK_FORMAT_R16_USCALED,
5931 eR16Sscaled = VK_FORMAT_R16_SSCALED,
5932 eR16Uint = VK_FORMAT_R16_UINT,
5933 eR16Sint = VK_FORMAT_R16_SINT,
5934 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
5935 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
5936 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
5937 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
5938 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
5939 eR16G16Uint = VK_FORMAT_R16G16_UINT,
5940 eR16G16Sint = VK_FORMAT_R16G16_SINT,
5941 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
5942 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
5943 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
5944 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
5945 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
5946 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
5947 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
5948 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
5949 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
5950 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
5951 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
5952 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
5953 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
5954 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
5955 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
5956 eR32Uint = VK_FORMAT_R32_UINT,
5957 eR32Sint = VK_FORMAT_R32_SINT,
5958 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
5959 eR32G32Uint = VK_FORMAT_R32G32_UINT,
5960 eR32G32Sint = VK_FORMAT_R32G32_SINT,
5961 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
5962 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
5963 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
5964 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
5965 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
5966 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
5967 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
5968 eR64Uint = VK_FORMAT_R64_UINT,
5969 eR64Sint = VK_FORMAT_R64_SINT,
5970 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
5971 eR64G64Uint = VK_FORMAT_R64G64_UINT,
5972 eR64G64Sint = VK_FORMAT_R64G64_SINT,
5973 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
5974 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
5975 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
5976 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
5977 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
5978 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
5979 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
5980 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
5981 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
5982 eD16Unorm = VK_FORMAT_D16_UNORM,
5983 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
5984 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
5985 eS8Uint = VK_FORMAT_S8_UINT,
5986 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
5987 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
5988 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
5989 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
5990 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
5991 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
5992 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
5993 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
5994 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
5995 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
5996 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
5997 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
5998 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
5999 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6000 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6001 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6002 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6003 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6004 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6005 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6006 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6007 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6008 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6009 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6010 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6011 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6012 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6013 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6014 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6015 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6016 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6017 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6018 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6019 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6020 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6021 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6022 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6023 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6024 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6025 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6026 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6027 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6028 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6029 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6030 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6031 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6032 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6033 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6034 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6035 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6036 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6037 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6038 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6039 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6040 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6041 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006042 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6043 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6044 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6045 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6046 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6047 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6048 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6049 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6050 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006051 };
6052
6053 struct VertexInputAttributeDescription
6054 {
6055 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6056 : location( location_ )
6057 , binding( binding_ )
6058 , format( format_ )
6059 , offset( offset_ )
6060 {
6061 }
6062
6063 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6064 {
6065 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6066 }
6067
6068 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6069 {
6070 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6071 return *this;
6072 }
6073
6074 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6075 {
6076 location = location_;
6077 return *this;
6078 }
6079
6080 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6081 {
6082 binding = binding_;
6083 return *this;
6084 }
6085
6086 VertexInputAttributeDescription& setFormat( Format format_ )
6087 {
6088 format = format_;
6089 return *this;
6090 }
6091
6092 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6093 {
6094 offset = offset_;
6095 return *this;
6096 }
6097
6098 operator const VkVertexInputAttributeDescription&() const
6099 {
6100 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6101 }
6102
6103 bool operator==( VertexInputAttributeDescription const& rhs ) const
6104 {
6105 return ( location == rhs.location )
6106 && ( binding == rhs.binding )
6107 && ( format == rhs.format )
6108 && ( offset == rhs.offset );
6109 }
6110
6111 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6112 {
6113 return !operator==( rhs );
6114 }
6115
6116 uint32_t location;
6117 uint32_t binding;
6118 Format format;
6119 uint32_t offset;
6120 };
6121 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6122
6123 enum class StructureType
6124 {
6125 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6126 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6127 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6128 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6129 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6130 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6131 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6132 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6133 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6134 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6135 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6136 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6137 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6138 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6139 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6140 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6141 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6142 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6143 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6144 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6145 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6146 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6147 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6148 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6149 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6150 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6151 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6152 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6153 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6154 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6155 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6156 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6157 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6158 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6159 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6160 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6161 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6162 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6163 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6164 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6165 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6166 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6167 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6168 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6169 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6170 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6171 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6172 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6173 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6174 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6175 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6176 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6177 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6178 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6179 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6180 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6181 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6182 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6183 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6184 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6185 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6186 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6187 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6188 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6189 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6190 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6191 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006192 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Young0f183a82017-02-28 09:58:04 -07006193 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6194 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6195 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006196 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6197 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6198 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6199 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006200 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006201 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6202 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6203 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6204 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6205 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6206 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6207 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6208 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6209 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006210 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6211 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6212 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6213 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6214 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6215 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6216 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6217 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6218 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6219 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6220 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6221 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6222 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006223 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006224 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006225 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6226 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6227 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6228 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6229 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6230 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6231 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
6232 ePhysicalDeviceProperties2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX,
6233 eImageFormatProperties2KHX = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX,
6234 ePhysicalDeviceImageFormatInfo2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX,
6235 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6236 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6237 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6238 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6239 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6240 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6241 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6242 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6243 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6244 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6245 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6246 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6247 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6248 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6249 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6250 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6251 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
6252 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006253 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6254 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6255 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6256 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6257 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006258 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006259 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006260 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6261 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6262 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6263 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006264 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006265 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006266 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6267 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6268 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6269 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006270 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006271 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6272 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006273 };
6274
6275 struct ApplicationInfo
6276 {
6277 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6278 : sType( StructureType::eApplicationInfo )
6279 , pNext( nullptr )
6280 , pApplicationName( pApplicationName_ )
6281 , applicationVersion( applicationVersion_ )
6282 , pEngineName( pEngineName_ )
6283 , engineVersion( engineVersion_ )
6284 , apiVersion( apiVersion_ )
6285 {
6286 }
6287
6288 ApplicationInfo( VkApplicationInfo const & rhs )
6289 {
6290 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6291 }
6292
6293 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6294 {
6295 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6296 return *this;
6297 }
6298
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006299 ApplicationInfo& setPNext( const void* pNext_ )
6300 {
6301 pNext = pNext_;
6302 return *this;
6303 }
6304
6305 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6306 {
6307 pApplicationName = pApplicationName_;
6308 return *this;
6309 }
6310
6311 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6312 {
6313 applicationVersion = applicationVersion_;
6314 return *this;
6315 }
6316
6317 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6318 {
6319 pEngineName = pEngineName_;
6320 return *this;
6321 }
6322
6323 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6324 {
6325 engineVersion = engineVersion_;
6326 return *this;
6327 }
6328
6329 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6330 {
6331 apiVersion = apiVersion_;
6332 return *this;
6333 }
6334
6335 operator const VkApplicationInfo&() const
6336 {
6337 return *reinterpret_cast<const VkApplicationInfo*>(this);
6338 }
6339
6340 bool operator==( ApplicationInfo const& rhs ) const
6341 {
6342 return ( sType == rhs.sType )
6343 && ( pNext == rhs.pNext )
6344 && ( pApplicationName == rhs.pApplicationName )
6345 && ( applicationVersion == rhs.applicationVersion )
6346 && ( pEngineName == rhs.pEngineName )
6347 && ( engineVersion == rhs.engineVersion )
6348 && ( apiVersion == rhs.apiVersion );
6349 }
6350
6351 bool operator!=( ApplicationInfo const& rhs ) const
6352 {
6353 return !operator==( rhs );
6354 }
6355
6356 private:
6357 StructureType sType;
6358
6359 public:
6360 const void* pNext;
6361 const char* pApplicationName;
6362 uint32_t applicationVersion;
6363 const char* pEngineName;
6364 uint32_t engineVersion;
6365 uint32_t apiVersion;
6366 };
6367 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6368
6369 struct DeviceQueueCreateInfo
6370 {
6371 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6372 : sType( StructureType::eDeviceQueueCreateInfo )
6373 , pNext( nullptr )
6374 , flags( flags_ )
6375 , queueFamilyIndex( queueFamilyIndex_ )
6376 , queueCount( queueCount_ )
6377 , pQueuePriorities( pQueuePriorities_ )
6378 {
6379 }
6380
6381 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6382 {
6383 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6384 }
6385
6386 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6387 {
6388 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6389 return *this;
6390 }
6391
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006392 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6393 {
6394 pNext = pNext_;
6395 return *this;
6396 }
6397
6398 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6399 {
6400 flags = flags_;
6401 return *this;
6402 }
6403
6404 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6405 {
6406 queueFamilyIndex = queueFamilyIndex_;
6407 return *this;
6408 }
6409
6410 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6411 {
6412 queueCount = queueCount_;
6413 return *this;
6414 }
6415
6416 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6417 {
6418 pQueuePriorities = pQueuePriorities_;
6419 return *this;
6420 }
6421
6422 operator const VkDeviceQueueCreateInfo&() const
6423 {
6424 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6425 }
6426
6427 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6428 {
6429 return ( sType == rhs.sType )
6430 && ( pNext == rhs.pNext )
6431 && ( flags == rhs.flags )
6432 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6433 && ( queueCount == rhs.queueCount )
6434 && ( pQueuePriorities == rhs.pQueuePriorities );
6435 }
6436
6437 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6438 {
6439 return !operator==( rhs );
6440 }
6441
6442 private:
6443 StructureType sType;
6444
6445 public:
6446 const void* pNext;
6447 DeviceQueueCreateFlags flags;
6448 uint32_t queueFamilyIndex;
6449 uint32_t queueCount;
6450 const float* pQueuePriorities;
6451 };
6452 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6453
6454 struct DeviceCreateInfo
6455 {
6456 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 )
6457 : sType( StructureType::eDeviceCreateInfo )
6458 , pNext( nullptr )
6459 , flags( flags_ )
6460 , queueCreateInfoCount( queueCreateInfoCount_ )
6461 , pQueueCreateInfos( pQueueCreateInfos_ )
6462 , enabledLayerCount( enabledLayerCount_ )
6463 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6464 , enabledExtensionCount( enabledExtensionCount_ )
6465 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6466 , pEnabledFeatures( pEnabledFeatures_ )
6467 {
6468 }
6469
6470 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6471 {
6472 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6473 }
6474
6475 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6476 {
6477 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6478 return *this;
6479 }
6480
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006481 DeviceCreateInfo& setPNext( const void* pNext_ )
6482 {
6483 pNext = pNext_;
6484 return *this;
6485 }
6486
6487 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6488 {
6489 flags = flags_;
6490 return *this;
6491 }
6492
6493 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6494 {
6495 queueCreateInfoCount = queueCreateInfoCount_;
6496 return *this;
6497 }
6498
6499 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6500 {
6501 pQueueCreateInfos = pQueueCreateInfos_;
6502 return *this;
6503 }
6504
6505 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6506 {
6507 enabledLayerCount = enabledLayerCount_;
6508 return *this;
6509 }
6510
6511 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6512 {
6513 ppEnabledLayerNames = ppEnabledLayerNames_;
6514 return *this;
6515 }
6516
6517 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6518 {
6519 enabledExtensionCount = enabledExtensionCount_;
6520 return *this;
6521 }
6522
6523 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6524 {
6525 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6526 return *this;
6527 }
6528
6529 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6530 {
6531 pEnabledFeatures = pEnabledFeatures_;
6532 return *this;
6533 }
6534
6535 operator const VkDeviceCreateInfo&() const
6536 {
6537 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6538 }
6539
6540 bool operator==( DeviceCreateInfo const& rhs ) const
6541 {
6542 return ( sType == rhs.sType )
6543 && ( pNext == rhs.pNext )
6544 && ( flags == rhs.flags )
6545 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6546 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6547 && ( enabledLayerCount == rhs.enabledLayerCount )
6548 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6549 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6550 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6551 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6552 }
6553
6554 bool operator!=( DeviceCreateInfo const& rhs ) const
6555 {
6556 return !operator==( rhs );
6557 }
6558
6559 private:
6560 StructureType sType;
6561
6562 public:
6563 const void* pNext;
6564 DeviceCreateFlags flags;
6565 uint32_t queueCreateInfoCount;
6566 const DeviceQueueCreateInfo* pQueueCreateInfos;
6567 uint32_t enabledLayerCount;
6568 const char* const* ppEnabledLayerNames;
6569 uint32_t enabledExtensionCount;
6570 const char* const* ppEnabledExtensionNames;
6571 const PhysicalDeviceFeatures* pEnabledFeatures;
6572 };
6573 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6574
6575 struct InstanceCreateInfo
6576 {
6577 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 )
6578 : sType( StructureType::eInstanceCreateInfo )
6579 , pNext( nullptr )
6580 , flags( flags_ )
6581 , pApplicationInfo( pApplicationInfo_ )
6582 , enabledLayerCount( enabledLayerCount_ )
6583 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6584 , enabledExtensionCount( enabledExtensionCount_ )
6585 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6586 {
6587 }
6588
6589 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6590 {
6591 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6592 }
6593
6594 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6595 {
6596 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6597 return *this;
6598 }
6599
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006600 InstanceCreateInfo& setPNext( const void* pNext_ )
6601 {
6602 pNext = pNext_;
6603 return *this;
6604 }
6605
6606 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6607 {
6608 flags = flags_;
6609 return *this;
6610 }
6611
6612 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6613 {
6614 pApplicationInfo = pApplicationInfo_;
6615 return *this;
6616 }
6617
6618 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6619 {
6620 enabledLayerCount = enabledLayerCount_;
6621 return *this;
6622 }
6623
6624 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6625 {
6626 ppEnabledLayerNames = ppEnabledLayerNames_;
6627 return *this;
6628 }
6629
6630 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6631 {
6632 enabledExtensionCount = enabledExtensionCount_;
6633 return *this;
6634 }
6635
6636 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6637 {
6638 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6639 return *this;
6640 }
6641
6642 operator const VkInstanceCreateInfo&() const
6643 {
6644 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6645 }
6646
6647 bool operator==( InstanceCreateInfo const& rhs ) const
6648 {
6649 return ( sType == rhs.sType )
6650 && ( pNext == rhs.pNext )
6651 && ( flags == rhs.flags )
6652 && ( pApplicationInfo == rhs.pApplicationInfo )
6653 && ( enabledLayerCount == rhs.enabledLayerCount )
6654 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6655 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6656 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6657 }
6658
6659 bool operator!=( InstanceCreateInfo const& rhs ) const
6660 {
6661 return !operator==( rhs );
6662 }
6663
6664 private:
6665 StructureType sType;
6666
6667 public:
6668 const void* pNext;
6669 InstanceCreateFlags flags;
6670 const ApplicationInfo* pApplicationInfo;
6671 uint32_t enabledLayerCount;
6672 const char* const* ppEnabledLayerNames;
6673 uint32_t enabledExtensionCount;
6674 const char* const* ppEnabledExtensionNames;
6675 };
6676 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6677
6678 struct MemoryAllocateInfo
6679 {
6680 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6681 : sType( StructureType::eMemoryAllocateInfo )
6682 , pNext( nullptr )
6683 , allocationSize( allocationSize_ )
6684 , memoryTypeIndex( memoryTypeIndex_ )
6685 {
6686 }
6687
6688 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6689 {
6690 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6691 }
6692
6693 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6694 {
6695 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6696 return *this;
6697 }
6698
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006699 MemoryAllocateInfo& setPNext( const void* pNext_ )
6700 {
6701 pNext = pNext_;
6702 return *this;
6703 }
6704
6705 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6706 {
6707 allocationSize = allocationSize_;
6708 return *this;
6709 }
6710
6711 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6712 {
6713 memoryTypeIndex = memoryTypeIndex_;
6714 return *this;
6715 }
6716
6717 operator const VkMemoryAllocateInfo&() const
6718 {
6719 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6720 }
6721
6722 bool operator==( MemoryAllocateInfo const& rhs ) const
6723 {
6724 return ( sType == rhs.sType )
6725 && ( pNext == rhs.pNext )
6726 && ( allocationSize == rhs.allocationSize )
6727 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6728 }
6729
6730 bool operator!=( MemoryAllocateInfo const& rhs ) const
6731 {
6732 return !operator==( rhs );
6733 }
6734
6735 private:
6736 StructureType sType;
6737
6738 public:
6739 const void* pNext;
6740 DeviceSize allocationSize;
6741 uint32_t memoryTypeIndex;
6742 };
6743 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6744
6745 struct MappedMemoryRange
6746 {
6747 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6748 : sType( StructureType::eMappedMemoryRange )
6749 , pNext( nullptr )
6750 , memory( memory_ )
6751 , offset( offset_ )
6752 , size( size_ )
6753 {
6754 }
6755
6756 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6757 {
6758 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6759 }
6760
6761 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6762 {
6763 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6764 return *this;
6765 }
6766
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006767 MappedMemoryRange& setPNext( const void* pNext_ )
6768 {
6769 pNext = pNext_;
6770 return *this;
6771 }
6772
6773 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6774 {
6775 memory = memory_;
6776 return *this;
6777 }
6778
6779 MappedMemoryRange& setOffset( DeviceSize offset_ )
6780 {
6781 offset = offset_;
6782 return *this;
6783 }
6784
6785 MappedMemoryRange& setSize( DeviceSize size_ )
6786 {
6787 size = size_;
6788 return *this;
6789 }
6790
6791 operator const VkMappedMemoryRange&() const
6792 {
6793 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6794 }
6795
6796 bool operator==( MappedMemoryRange const& rhs ) const
6797 {
6798 return ( sType == rhs.sType )
6799 && ( pNext == rhs.pNext )
6800 && ( memory == rhs.memory )
6801 && ( offset == rhs.offset )
6802 && ( size == rhs.size );
6803 }
6804
6805 bool operator!=( MappedMemoryRange const& rhs ) const
6806 {
6807 return !operator==( rhs );
6808 }
6809
6810 private:
6811 StructureType sType;
6812
6813 public:
6814 const void* pNext;
6815 DeviceMemory memory;
6816 DeviceSize offset;
6817 DeviceSize size;
6818 };
6819 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6820
6821 struct WriteDescriptorSet
6822 {
6823 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 )
6824 : sType( StructureType::eWriteDescriptorSet )
6825 , pNext( nullptr )
6826 , dstSet( dstSet_ )
6827 , dstBinding( dstBinding_ )
6828 , dstArrayElement( dstArrayElement_ )
6829 , descriptorCount( descriptorCount_ )
6830 , descriptorType( descriptorType_ )
6831 , pImageInfo( pImageInfo_ )
6832 , pBufferInfo( pBufferInfo_ )
6833 , pTexelBufferView( pTexelBufferView_ )
6834 {
6835 }
6836
6837 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6838 {
6839 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6840 }
6841
6842 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6843 {
6844 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6845 return *this;
6846 }
6847
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006848 WriteDescriptorSet& setPNext( const void* pNext_ )
6849 {
6850 pNext = pNext_;
6851 return *this;
6852 }
6853
6854 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6855 {
6856 dstSet = dstSet_;
6857 return *this;
6858 }
6859
6860 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6861 {
6862 dstBinding = dstBinding_;
6863 return *this;
6864 }
6865
6866 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6867 {
6868 dstArrayElement = dstArrayElement_;
6869 return *this;
6870 }
6871
6872 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6873 {
6874 descriptorCount = descriptorCount_;
6875 return *this;
6876 }
6877
6878 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6879 {
6880 descriptorType = descriptorType_;
6881 return *this;
6882 }
6883
6884 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
6885 {
6886 pImageInfo = pImageInfo_;
6887 return *this;
6888 }
6889
6890 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
6891 {
6892 pBufferInfo = pBufferInfo_;
6893 return *this;
6894 }
6895
6896 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
6897 {
6898 pTexelBufferView = pTexelBufferView_;
6899 return *this;
6900 }
6901
6902 operator const VkWriteDescriptorSet&() const
6903 {
6904 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
6905 }
6906
6907 bool operator==( WriteDescriptorSet const& rhs ) const
6908 {
6909 return ( sType == rhs.sType )
6910 && ( pNext == rhs.pNext )
6911 && ( dstSet == rhs.dstSet )
6912 && ( dstBinding == rhs.dstBinding )
6913 && ( dstArrayElement == rhs.dstArrayElement )
6914 && ( descriptorCount == rhs.descriptorCount )
6915 && ( descriptorType == rhs.descriptorType )
6916 && ( pImageInfo == rhs.pImageInfo )
6917 && ( pBufferInfo == rhs.pBufferInfo )
6918 && ( pTexelBufferView == rhs.pTexelBufferView );
6919 }
6920
6921 bool operator!=( WriteDescriptorSet const& rhs ) const
6922 {
6923 return !operator==( rhs );
6924 }
6925
6926 private:
6927 StructureType sType;
6928
6929 public:
6930 const void* pNext;
6931 DescriptorSet dstSet;
6932 uint32_t dstBinding;
6933 uint32_t dstArrayElement;
6934 uint32_t descriptorCount;
6935 DescriptorType descriptorType;
6936 const DescriptorImageInfo* pImageInfo;
6937 const DescriptorBufferInfo* pBufferInfo;
6938 const BufferView* pTexelBufferView;
6939 };
6940 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
6941
6942 struct CopyDescriptorSet
6943 {
6944 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 )
6945 : sType( StructureType::eCopyDescriptorSet )
6946 , pNext( nullptr )
6947 , srcSet( srcSet_ )
6948 , srcBinding( srcBinding_ )
6949 , srcArrayElement( srcArrayElement_ )
6950 , dstSet( dstSet_ )
6951 , dstBinding( dstBinding_ )
6952 , dstArrayElement( dstArrayElement_ )
6953 , descriptorCount( descriptorCount_ )
6954 {
6955 }
6956
6957 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
6958 {
6959 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6960 }
6961
6962 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
6963 {
6964 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
6965 return *this;
6966 }
6967
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006968 CopyDescriptorSet& setPNext( const void* pNext_ )
6969 {
6970 pNext = pNext_;
6971 return *this;
6972 }
6973
6974 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
6975 {
6976 srcSet = srcSet_;
6977 return *this;
6978 }
6979
6980 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
6981 {
6982 srcBinding = srcBinding_;
6983 return *this;
6984 }
6985
6986 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
6987 {
6988 srcArrayElement = srcArrayElement_;
6989 return *this;
6990 }
6991
6992 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6993 {
6994 dstSet = dstSet_;
6995 return *this;
6996 }
6997
6998 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6999 {
7000 dstBinding = dstBinding_;
7001 return *this;
7002 }
7003
7004 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7005 {
7006 dstArrayElement = dstArrayElement_;
7007 return *this;
7008 }
7009
7010 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7011 {
7012 descriptorCount = descriptorCount_;
7013 return *this;
7014 }
7015
7016 operator const VkCopyDescriptorSet&() const
7017 {
7018 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7019 }
7020
7021 bool operator==( CopyDescriptorSet const& rhs ) const
7022 {
7023 return ( sType == rhs.sType )
7024 && ( pNext == rhs.pNext )
7025 && ( srcSet == rhs.srcSet )
7026 && ( srcBinding == rhs.srcBinding )
7027 && ( srcArrayElement == rhs.srcArrayElement )
7028 && ( dstSet == rhs.dstSet )
7029 && ( dstBinding == rhs.dstBinding )
7030 && ( dstArrayElement == rhs.dstArrayElement )
7031 && ( descriptorCount == rhs.descriptorCount );
7032 }
7033
7034 bool operator!=( CopyDescriptorSet const& rhs ) const
7035 {
7036 return !operator==( rhs );
7037 }
7038
7039 private:
7040 StructureType sType;
7041
7042 public:
7043 const void* pNext;
7044 DescriptorSet srcSet;
7045 uint32_t srcBinding;
7046 uint32_t srcArrayElement;
7047 DescriptorSet dstSet;
7048 uint32_t dstBinding;
7049 uint32_t dstArrayElement;
7050 uint32_t descriptorCount;
7051 };
7052 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7053
7054 struct BufferViewCreateInfo
7055 {
7056 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7057 : sType( StructureType::eBufferViewCreateInfo )
7058 , pNext( nullptr )
7059 , flags( flags_ )
7060 , buffer( buffer_ )
7061 , format( format_ )
7062 , offset( offset_ )
7063 , range( range_ )
7064 {
7065 }
7066
7067 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7068 {
7069 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7070 }
7071
7072 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7073 {
7074 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7075 return *this;
7076 }
7077
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007078 BufferViewCreateInfo& setPNext( const void* pNext_ )
7079 {
7080 pNext = pNext_;
7081 return *this;
7082 }
7083
7084 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7085 {
7086 flags = flags_;
7087 return *this;
7088 }
7089
7090 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7091 {
7092 buffer = buffer_;
7093 return *this;
7094 }
7095
7096 BufferViewCreateInfo& setFormat( Format format_ )
7097 {
7098 format = format_;
7099 return *this;
7100 }
7101
7102 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7103 {
7104 offset = offset_;
7105 return *this;
7106 }
7107
7108 BufferViewCreateInfo& setRange( DeviceSize range_ )
7109 {
7110 range = range_;
7111 return *this;
7112 }
7113
7114 operator const VkBufferViewCreateInfo&() const
7115 {
7116 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7117 }
7118
7119 bool operator==( BufferViewCreateInfo const& rhs ) const
7120 {
7121 return ( sType == rhs.sType )
7122 && ( pNext == rhs.pNext )
7123 && ( flags == rhs.flags )
7124 && ( buffer == rhs.buffer )
7125 && ( format == rhs.format )
7126 && ( offset == rhs.offset )
7127 && ( range == rhs.range );
7128 }
7129
7130 bool operator!=( BufferViewCreateInfo const& rhs ) const
7131 {
7132 return !operator==( rhs );
7133 }
7134
7135 private:
7136 StructureType sType;
7137
7138 public:
7139 const void* pNext;
7140 BufferViewCreateFlags flags;
7141 Buffer buffer;
7142 Format format;
7143 DeviceSize offset;
7144 DeviceSize range;
7145 };
7146 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7147
7148 struct ShaderModuleCreateInfo
7149 {
7150 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7151 : sType( StructureType::eShaderModuleCreateInfo )
7152 , pNext( nullptr )
7153 , flags( flags_ )
7154 , codeSize( codeSize_ )
7155 , pCode( pCode_ )
7156 {
7157 }
7158
7159 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7160 {
7161 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7162 }
7163
7164 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7165 {
7166 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7167 return *this;
7168 }
7169
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007170 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7171 {
7172 pNext = pNext_;
7173 return *this;
7174 }
7175
7176 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7177 {
7178 flags = flags_;
7179 return *this;
7180 }
7181
7182 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7183 {
7184 codeSize = codeSize_;
7185 return *this;
7186 }
7187
7188 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7189 {
7190 pCode = pCode_;
7191 return *this;
7192 }
7193
7194 operator const VkShaderModuleCreateInfo&() const
7195 {
7196 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7197 }
7198
7199 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7200 {
7201 return ( sType == rhs.sType )
7202 && ( pNext == rhs.pNext )
7203 && ( flags == rhs.flags )
7204 && ( codeSize == rhs.codeSize )
7205 && ( pCode == rhs.pCode );
7206 }
7207
7208 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7209 {
7210 return !operator==( rhs );
7211 }
7212
7213 private:
7214 StructureType sType;
7215
7216 public:
7217 const void* pNext;
7218 ShaderModuleCreateFlags flags;
7219 size_t codeSize;
7220 const uint32_t* pCode;
7221 };
7222 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7223
7224 struct DescriptorSetAllocateInfo
7225 {
7226 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7227 : sType( StructureType::eDescriptorSetAllocateInfo )
7228 , pNext( nullptr )
7229 , descriptorPool( descriptorPool_ )
7230 , descriptorSetCount( descriptorSetCount_ )
7231 , pSetLayouts( pSetLayouts_ )
7232 {
7233 }
7234
7235 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7236 {
7237 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7238 }
7239
7240 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7241 {
7242 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7243 return *this;
7244 }
7245
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007246 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7247 {
7248 pNext = pNext_;
7249 return *this;
7250 }
7251
7252 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7253 {
7254 descriptorPool = descriptorPool_;
7255 return *this;
7256 }
7257
7258 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7259 {
7260 descriptorSetCount = descriptorSetCount_;
7261 return *this;
7262 }
7263
7264 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7265 {
7266 pSetLayouts = pSetLayouts_;
7267 return *this;
7268 }
7269
7270 operator const VkDescriptorSetAllocateInfo&() const
7271 {
7272 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7273 }
7274
7275 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7276 {
7277 return ( sType == rhs.sType )
7278 && ( pNext == rhs.pNext )
7279 && ( descriptorPool == rhs.descriptorPool )
7280 && ( descriptorSetCount == rhs.descriptorSetCount )
7281 && ( pSetLayouts == rhs.pSetLayouts );
7282 }
7283
7284 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7285 {
7286 return !operator==( rhs );
7287 }
7288
7289 private:
7290 StructureType sType;
7291
7292 public:
7293 const void* pNext;
7294 DescriptorPool descriptorPool;
7295 uint32_t descriptorSetCount;
7296 const DescriptorSetLayout* pSetLayouts;
7297 };
7298 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7299
7300 struct PipelineVertexInputStateCreateInfo
7301 {
7302 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7303 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7304 , pNext( nullptr )
7305 , flags( flags_ )
7306 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7307 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7308 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7309 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7310 {
7311 }
7312
7313 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7314 {
7315 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7316 }
7317
7318 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7319 {
7320 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7321 return *this;
7322 }
7323
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007324 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7325 {
7326 pNext = pNext_;
7327 return *this;
7328 }
7329
7330 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7331 {
7332 flags = flags_;
7333 return *this;
7334 }
7335
7336 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7337 {
7338 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7339 return *this;
7340 }
7341
7342 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7343 {
7344 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7345 return *this;
7346 }
7347
7348 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7349 {
7350 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7351 return *this;
7352 }
7353
7354 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7355 {
7356 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7357 return *this;
7358 }
7359
7360 operator const VkPipelineVertexInputStateCreateInfo&() const
7361 {
7362 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7363 }
7364
7365 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7366 {
7367 return ( sType == rhs.sType )
7368 && ( pNext == rhs.pNext )
7369 && ( flags == rhs.flags )
7370 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7371 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7372 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7373 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7374 }
7375
7376 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7377 {
7378 return !operator==( rhs );
7379 }
7380
7381 private:
7382 StructureType sType;
7383
7384 public:
7385 const void* pNext;
7386 PipelineVertexInputStateCreateFlags flags;
7387 uint32_t vertexBindingDescriptionCount;
7388 const VertexInputBindingDescription* pVertexBindingDescriptions;
7389 uint32_t vertexAttributeDescriptionCount;
7390 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7391 };
7392 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7393
7394 struct PipelineInputAssemblyStateCreateInfo
7395 {
7396 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7397 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7398 , pNext( nullptr )
7399 , flags( flags_ )
7400 , topology( topology_ )
7401 , primitiveRestartEnable( primitiveRestartEnable_ )
7402 {
7403 }
7404
7405 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7406 {
7407 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7408 }
7409
7410 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7411 {
7412 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7413 return *this;
7414 }
7415
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007416 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7417 {
7418 pNext = pNext_;
7419 return *this;
7420 }
7421
7422 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7423 {
7424 flags = flags_;
7425 return *this;
7426 }
7427
7428 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7429 {
7430 topology = topology_;
7431 return *this;
7432 }
7433
7434 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7435 {
7436 primitiveRestartEnable = primitiveRestartEnable_;
7437 return *this;
7438 }
7439
7440 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7441 {
7442 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7443 }
7444
7445 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7446 {
7447 return ( sType == rhs.sType )
7448 && ( pNext == rhs.pNext )
7449 && ( flags == rhs.flags )
7450 && ( topology == rhs.topology )
7451 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7452 }
7453
7454 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7455 {
7456 return !operator==( rhs );
7457 }
7458
7459 private:
7460 StructureType sType;
7461
7462 public:
7463 const void* pNext;
7464 PipelineInputAssemblyStateCreateFlags flags;
7465 PrimitiveTopology topology;
7466 Bool32 primitiveRestartEnable;
7467 };
7468 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7469
7470 struct PipelineTessellationStateCreateInfo
7471 {
7472 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7473 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7474 , pNext( nullptr )
7475 , flags( flags_ )
7476 , patchControlPoints( patchControlPoints_ )
7477 {
7478 }
7479
7480 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7481 {
7482 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7483 }
7484
7485 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7486 {
7487 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7488 return *this;
7489 }
7490
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007491 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7492 {
7493 pNext = pNext_;
7494 return *this;
7495 }
7496
7497 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7498 {
7499 flags = flags_;
7500 return *this;
7501 }
7502
7503 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7504 {
7505 patchControlPoints = patchControlPoints_;
7506 return *this;
7507 }
7508
7509 operator const VkPipelineTessellationStateCreateInfo&() const
7510 {
7511 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7512 }
7513
7514 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7515 {
7516 return ( sType == rhs.sType )
7517 && ( pNext == rhs.pNext )
7518 && ( flags == rhs.flags )
7519 && ( patchControlPoints == rhs.patchControlPoints );
7520 }
7521
7522 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7523 {
7524 return !operator==( rhs );
7525 }
7526
7527 private:
7528 StructureType sType;
7529
7530 public:
7531 const void* pNext;
7532 PipelineTessellationStateCreateFlags flags;
7533 uint32_t patchControlPoints;
7534 };
7535 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7536
7537 struct PipelineViewportStateCreateInfo
7538 {
7539 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7540 : sType( StructureType::ePipelineViewportStateCreateInfo )
7541 , pNext( nullptr )
7542 , flags( flags_ )
7543 , viewportCount( viewportCount_ )
7544 , pViewports( pViewports_ )
7545 , scissorCount( scissorCount_ )
7546 , pScissors( pScissors_ )
7547 {
7548 }
7549
7550 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7551 {
7552 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7553 }
7554
7555 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7556 {
7557 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7558 return *this;
7559 }
7560
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007561 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7562 {
7563 pNext = pNext_;
7564 return *this;
7565 }
7566
7567 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7568 {
7569 flags = flags_;
7570 return *this;
7571 }
7572
7573 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7574 {
7575 viewportCount = viewportCount_;
7576 return *this;
7577 }
7578
7579 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7580 {
7581 pViewports = pViewports_;
7582 return *this;
7583 }
7584
7585 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7586 {
7587 scissorCount = scissorCount_;
7588 return *this;
7589 }
7590
7591 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7592 {
7593 pScissors = pScissors_;
7594 return *this;
7595 }
7596
7597 operator const VkPipelineViewportStateCreateInfo&() const
7598 {
7599 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7600 }
7601
7602 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7603 {
7604 return ( sType == rhs.sType )
7605 && ( pNext == rhs.pNext )
7606 && ( flags == rhs.flags )
7607 && ( viewportCount == rhs.viewportCount )
7608 && ( pViewports == rhs.pViewports )
7609 && ( scissorCount == rhs.scissorCount )
7610 && ( pScissors == rhs.pScissors );
7611 }
7612
7613 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7614 {
7615 return !operator==( rhs );
7616 }
7617
7618 private:
7619 StructureType sType;
7620
7621 public:
7622 const void* pNext;
7623 PipelineViewportStateCreateFlags flags;
7624 uint32_t viewportCount;
7625 const Viewport* pViewports;
7626 uint32_t scissorCount;
7627 const Rect2D* pScissors;
7628 };
7629 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7630
7631 struct PipelineRasterizationStateCreateInfo
7632 {
7633 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 )
7634 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7635 , pNext( nullptr )
7636 , flags( flags_ )
7637 , depthClampEnable( depthClampEnable_ )
7638 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7639 , polygonMode( polygonMode_ )
7640 , cullMode( cullMode_ )
7641 , frontFace( frontFace_ )
7642 , depthBiasEnable( depthBiasEnable_ )
7643 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7644 , depthBiasClamp( depthBiasClamp_ )
7645 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7646 , lineWidth( lineWidth_ )
7647 {
7648 }
7649
7650 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7651 {
7652 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7653 }
7654
7655 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7656 {
7657 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7658 return *this;
7659 }
7660
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007661 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7662 {
7663 pNext = pNext_;
7664 return *this;
7665 }
7666
7667 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7668 {
7669 flags = flags_;
7670 return *this;
7671 }
7672
7673 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7674 {
7675 depthClampEnable = depthClampEnable_;
7676 return *this;
7677 }
7678
7679 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7680 {
7681 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7682 return *this;
7683 }
7684
7685 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7686 {
7687 polygonMode = polygonMode_;
7688 return *this;
7689 }
7690
7691 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7692 {
7693 cullMode = cullMode_;
7694 return *this;
7695 }
7696
7697 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7698 {
7699 frontFace = frontFace_;
7700 return *this;
7701 }
7702
7703 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7704 {
7705 depthBiasEnable = depthBiasEnable_;
7706 return *this;
7707 }
7708
7709 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7710 {
7711 depthBiasConstantFactor = depthBiasConstantFactor_;
7712 return *this;
7713 }
7714
7715 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7716 {
7717 depthBiasClamp = depthBiasClamp_;
7718 return *this;
7719 }
7720
7721 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7722 {
7723 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7724 return *this;
7725 }
7726
7727 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7728 {
7729 lineWidth = lineWidth_;
7730 return *this;
7731 }
7732
7733 operator const VkPipelineRasterizationStateCreateInfo&() const
7734 {
7735 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7736 }
7737
7738 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7739 {
7740 return ( sType == rhs.sType )
7741 && ( pNext == rhs.pNext )
7742 && ( flags == rhs.flags )
7743 && ( depthClampEnable == rhs.depthClampEnable )
7744 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7745 && ( polygonMode == rhs.polygonMode )
7746 && ( cullMode == rhs.cullMode )
7747 && ( frontFace == rhs.frontFace )
7748 && ( depthBiasEnable == rhs.depthBiasEnable )
7749 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7750 && ( depthBiasClamp == rhs.depthBiasClamp )
7751 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7752 && ( lineWidth == rhs.lineWidth );
7753 }
7754
7755 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7756 {
7757 return !operator==( rhs );
7758 }
7759
7760 private:
7761 StructureType sType;
7762
7763 public:
7764 const void* pNext;
7765 PipelineRasterizationStateCreateFlags flags;
7766 Bool32 depthClampEnable;
7767 Bool32 rasterizerDiscardEnable;
7768 PolygonMode polygonMode;
7769 CullModeFlags cullMode;
7770 FrontFace frontFace;
7771 Bool32 depthBiasEnable;
7772 float depthBiasConstantFactor;
7773 float depthBiasClamp;
7774 float depthBiasSlopeFactor;
7775 float lineWidth;
7776 };
7777 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7778
7779 struct PipelineDepthStencilStateCreateInfo
7780 {
7781 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 )
7782 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7783 , pNext( nullptr )
7784 , flags( flags_ )
7785 , depthTestEnable( depthTestEnable_ )
7786 , depthWriteEnable( depthWriteEnable_ )
7787 , depthCompareOp( depthCompareOp_ )
7788 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7789 , stencilTestEnable( stencilTestEnable_ )
7790 , front( front_ )
7791 , back( back_ )
7792 , minDepthBounds( minDepthBounds_ )
7793 , maxDepthBounds( maxDepthBounds_ )
7794 {
7795 }
7796
7797 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7798 {
7799 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7800 }
7801
7802 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7803 {
7804 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7805 return *this;
7806 }
7807
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007808 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7809 {
7810 pNext = pNext_;
7811 return *this;
7812 }
7813
7814 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7815 {
7816 flags = flags_;
7817 return *this;
7818 }
7819
7820 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7821 {
7822 depthTestEnable = depthTestEnable_;
7823 return *this;
7824 }
7825
7826 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7827 {
7828 depthWriteEnable = depthWriteEnable_;
7829 return *this;
7830 }
7831
7832 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7833 {
7834 depthCompareOp = depthCompareOp_;
7835 return *this;
7836 }
7837
7838 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7839 {
7840 depthBoundsTestEnable = depthBoundsTestEnable_;
7841 return *this;
7842 }
7843
7844 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7845 {
7846 stencilTestEnable = stencilTestEnable_;
7847 return *this;
7848 }
7849
7850 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7851 {
7852 front = front_;
7853 return *this;
7854 }
7855
7856 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7857 {
7858 back = back_;
7859 return *this;
7860 }
7861
7862 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7863 {
7864 minDepthBounds = minDepthBounds_;
7865 return *this;
7866 }
7867
7868 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7869 {
7870 maxDepthBounds = maxDepthBounds_;
7871 return *this;
7872 }
7873
7874 operator const VkPipelineDepthStencilStateCreateInfo&() const
7875 {
7876 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7877 }
7878
7879 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7880 {
7881 return ( sType == rhs.sType )
7882 && ( pNext == rhs.pNext )
7883 && ( flags == rhs.flags )
7884 && ( depthTestEnable == rhs.depthTestEnable )
7885 && ( depthWriteEnable == rhs.depthWriteEnable )
7886 && ( depthCompareOp == rhs.depthCompareOp )
7887 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
7888 && ( stencilTestEnable == rhs.stencilTestEnable )
7889 && ( front == rhs.front )
7890 && ( back == rhs.back )
7891 && ( minDepthBounds == rhs.minDepthBounds )
7892 && ( maxDepthBounds == rhs.maxDepthBounds );
7893 }
7894
7895 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
7896 {
7897 return !operator==( rhs );
7898 }
7899
7900 private:
7901 StructureType sType;
7902
7903 public:
7904 const void* pNext;
7905 PipelineDepthStencilStateCreateFlags flags;
7906 Bool32 depthTestEnable;
7907 Bool32 depthWriteEnable;
7908 CompareOp depthCompareOp;
7909 Bool32 depthBoundsTestEnable;
7910 Bool32 stencilTestEnable;
7911 StencilOpState front;
7912 StencilOpState back;
7913 float minDepthBounds;
7914 float maxDepthBounds;
7915 };
7916 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
7917
7918 struct PipelineCacheCreateInfo
7919 {
7920 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
7921 : sType( StructureType::ePipelineCacheCreateInfo )
7922 , pNext( nullptr )
7923 , flags( flags_ )
7924 , initialDataSize( initialDataSize_ )
7925 , pInitialData( pInitialData_ )
7926 {
7927 }
7928
7929 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
7930 {
7931 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7932 }
7933
7934 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
7935 {
7936 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
7937 return *this;
7938 }
7939
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007940 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
7941 {
7942 pNext = pNext_;
7943 return *this;
7944 }
7945
7946 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
7947 {
7948 flags = flags_;
7949 return *this;
7950 }
7951
7952 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
7953 {
7954 initialDataSize = initialDataSize_;
7955 return *this;
7956 }
7957
7958 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
7959 {
7960 pInitialData = pInitialData_;
7961 return *this;
7962 }
7963
7964 operator const VkPipelineCacheCreateInfo&() const
7965 {
7966 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
7967 }
7968
7969 bool operator==( PipelineCacheCreateInfo const& rhs ) const
7970 {
7971 return ( sType == rhs.sType )
7972 && ( pNext == rhs.pNext )
7973 && ( flags == rhs.flags )
7974 && ( initialDataSize == rhs.initialDataSize )
7975 && ( pInitialData == rhs.pInitialData );
7976 }
7977
7978 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
7979 {
7980 return !operator==( rhs );
7981 }
7982
7983 private:
7984 StructureType sType;
7985
7986 public:
7987 const void* pNext;
7988 PipelineCacheCreateFlags flags;
7989 size_t initialDataSize;
7990 const void* pInitialData;
7991 };
7992 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
7993
7994 struct SamplerCreateInfo
7995 {
7996 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 )
7997 : sType( StructureType::eSamplerCreateInfo )
7998 , pNext( nullptr )
7999 , flags( flags_ )
8000 , magFilter( magFilter_ )
8001 , minFilter( minFilter_ )
8002 , mipmapMode( mipmapMode_ )
8003 , addressModeU( addressModeU_ )
8004 , addressModeV( addressModeV_ )
8005 , addressModeW( addressModeW_ )
8006 , mipLodBias( mipLodBias_ )
8007 , anisotropyEnable( anisotropyEnable_ )
8008 , maxAnisotropy( maxAnisotropy_ )
8009 , compareEnable( compareEnable_ )
8010 , compareOp( compareOp_ )
8011 , minLod( minLod_ )
8012 , maxLod( maxLod_ )
8013 , borderColor( borderColor_ )
8014 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8015 {
8016 }
8017
8018 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8019 {
8020 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8021 }
8022
8023 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8024 {
8025 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8026 return *this;
8027 }
8028
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008029 SamplerCreateInfo& setPNext( const void* pNext_ )
8030 {
8031 pNext = pNext_;
8032 return *this;
8033 }
8034
8035 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8036 {
8037 flags = flags_;
8038 return *this;
8039 }
8040
8041 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8042 {
8043 magFilter = magFilter_;
8044 return *this;
8045 }
8046
8047 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8048 {
8049 minFilter = minFilter_;
8050 return *this;
8051 }
8052
8053 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8054 {
8055 mipmapMode = mipmapMode_;
8056 return *this;
8057 }
8058
8059 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8060 {
8061 addressModeU = addressModeU_;
8062 return *this;
8063 }
8064
8065 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8066 {
8067 addressModeV = addressModeV_;
8068 return *this;
8069 }
8070
8071 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8072 {
8073 addressModeW = addressModeW_;
8074 return *this;
8075 }
8076
8077 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8078 {
8079 mipLodBias = mipLodBias_;
8080 return *this;
8081 }
8082
8083 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8084 {
8085 anisotropyEnable = anisotropyEnable_;
8086 return *this;
8087 }
8088
8089 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8090 {
8091 maxAnisotropy = maxAnisotropy_;
8092 return *this;
8093 }
8094
8095 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8096 {
8097 compareEnable = compareEnable_;
8098 return *this;
8099 }
8100
8101 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8102 {
8103 compareOp = compareOp_;
8104 return *this;
8105 }
8106
8107 SamplerCreateInfo& setMinLod( float minLod_ )
8108 {
8109 minLod = minLod_;
8110 return *this;
8111 }
8112
8113 SamplerCreateInfo& setMaxLod( float maxLod_ )
8114 {
8115 maxLod = maxLod_;
8116 return *this;
8117 }
8118
8119 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8120 {
8121 borderColor = borderColor_;
8122 return *this;
8123 }
8124
8125 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8126 {
8127 unnormalizedCoordinates = unnormalizedCoordinates_;
8128 return *this;
8129 }
8130
8131 operator const VkSamplerCreateInfo&() const
8132 {
8133 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8134 }
8135
8136 bool operator==( SamplerCreateInfo const& rhs ) const
8137 {
8138 return ( sType == rhs.sType )
8139 && ( pNext == rhs.pNext )
8140 && ( flags == rhs.flags )
8141 && ( magFilter == rhs.magFilter )
8142 && ( minFilter == rhs.minFilter )
8143 && ( mipmapMode == rhs.mipmapMode )
8144 && ( addressModeU == rhs.addressModeU )
8145 && ( addressModeV == rhs.addressModeV )
8146 && ( addressModeW == rhs.addressModeW )
8147 && ( mipLodBias == rhs.mipLodBias )
8148 && ( anisotropyEnable == rhs.anisotropyEnable )
8149 && ( maxAnisotropy == rhs.maxAnisotropy )
8150 && ( compareEnable == rhs.compareEnable )
8151 && ( compareOp == rhs.compareOp )
8152 && ( minLod == rhs.minLod )
8153 && ( maxLod == rhs.maxLod )
8154 && ( borderColor == rhs.borderColor )
8155 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8156 }
8157
8158 bool operator!=( SamplerCreateInfo const& rhs ) const
8159 {
8160 return !operator==( rhs );
8161 }
8162
8163 private:
8164 StructureType sType;
8165
8166 public:
8167 const void* pNext;
8168 SamplerCreateFlags flags;
8169 Filter magFilter;
8170 Filter minFilter;
8171 SamplerMipmapMode mipmapMode;
8172 SamplerAddressMode addressModeU;
8173 SamplerAddressMode addressModeV;
8174 SamplerAddressMode addressModeW;
8175 float mipLodBias;
8176 Bool32 anisotropyEnable;
8177 float maxAnisotropy;
8178 Bool32 compareEnable;
8179 CompareOp compareOp;
8180 float minLod;
8181 float maxLod;
8182 BorderColor borderColor;
8183 Bool32 unnormalizedCoordinates;
8184 };
8185 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8186
8187 struct CommandBufferAllocateInfo
8188 {
8189 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8190 : sType( StructureType::eCommandBufferAllocateInfo )
8191 , pNext( nullptr )
8192 , commandPool( commandPool_ )
8193 , level( level_ )
8194 , commandBufferCount( commandBufferCount_ )
8195 {
8196 }
8197
8198 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8199 {
8200 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8201 }
8202
8203 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8204 {
8205 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8206 return *this;
8207 }
8208
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008209 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8210 {
8211 pNext = pNext_;
8212 return *this;
8213 }
8214
8215 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8216 {
8217 commandPool = commandPool_;
8218 return *this;
8219 }
8220
8221 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8222 {
8223 level = level_;
8224 return *this;
8225 }
8226
8227 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8228 {
8229 commandBufferCount = commandBufferCount_;
8230 return *this;
8231 }
8232
8233 operator const VkCommandBufferAllocateInfo&() const
8234 {
8235 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8236 }
8237
8238 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8239 {
8240 return ( sType == rhs.sType )
8241 && ( pNext == rhs.pNext )
8242 && ( commandPool == rhs.commandPool )
8243 && ( level == rhs.level )
8244 && ( commandBufferCount == rhs.commandBufferCount );
8245 }
8246
8247 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8248 {
8249 return !operator==( rhs );
8250 }
8251
8252 private:
8253 StructureType sType;
8254
8255 public:
8256 const void* pNext;
8257 CommandPool commandPool;
8258 CommandBufferLevel level;
8259 uint32_t commandBufferCount;
8260 };
8261 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8262
8263 struct RenderPassBeginInfo
8264 {
8265 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8266 : sType( StructureType::eRenderPassBeginInfo )
8267 , pNext( nullptr )
8268 , renderPass( renderPass_ )
8269 , framebuffer( framebuffer_ )
8270 , renderArea( renderArea_ )
8271 , clearValueCount( clearValueCount_ )
8272 , pClearValues( pClearValues_ )
8273 {
8274 }
8275
8276 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8277 {
8278 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8279 }
8280
8281 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8282 {
8283 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8284 return *this;
8285 }
8286
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008287 RenderPassBeginInfo& setPNext( const void* pNext_ )
8288 {
8289 pNext = pNext_;
8290 return *this;
8291 }
8292
8293 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8294 {
8295 renderPass = renderPass_;
8296 return *this;
8297 }
8298
8299 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8300 {
8301 framebuffer = framebuffer_;
8302 return *this;
8303 }
8304
8305 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8306 {
8307 renderArea = renderArea_;
8308 return *this;
8309 }
8310
8311 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8312 {
8313 clearValueCount = clearValueCount_;
8314 return *this;
8315 }
8316
8317 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8318 {
8319 pClearValues = pClearValues_;
8320 return *this;
8321 }
8322
8323 operator const VkRenderPassBeginInfo&() const
8324 {
8325 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8326 }
8327
8328 bool operator==( RenderPassBeginInfo const& rhs ) const
8329 {
8330 return ( sType == rhs.sType )
8331 && ( pNext == rhs.pNext )
8332 && ( renderPass == rhs.renderPass )
8333 && ( framebuffer == rhs.framebuffer )
8334 && ( renderArea == rhs.renderArea )
8335 && ( clearValueCount == rhs.clearValueCount )
8336 && ( pClearValues == rhs.pClearValues );
8337 }
8338
8339 bool operator!=( RenderPassBeginInfo const& rhs ) const
8340 {
8341 return !operator==( rhs );
8342 }
8343
8344 private:
8345 StructureType sType;
8346
8347 public:
8348 const void* pNext;
8349 RenderPass renderPass;
8350 Framebuffer framebuffer;
8351 Rect2D renderArea;
8352 uint32_t clearValueCount;
8353 const ClearValue* pClearValues;
8354 };
8355 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8356
8357 struct EventCreateInfo
8358 {
8359 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8360 : sType( StructureType::eEventCreateInfo )
8361 , pNext( nullptr )
8362 , flags( flags_ )
8363 {
8364 }
8365
8366 EventCreateInfo( VkEventCreateInfo const & rhs )
8367 {
8368 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8369 }
8370
8371 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8372 {
8373 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8374 return *this;
8375 }
8376
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008377 EventCreateInfo& setPNext( const void* pNext_ )
8378 {
8379 pNext = pNext_;
8380 return *this;
8381 }
8382
8383 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8384 {
8385 flags = flags_;
8386 return *this;
8387 }
8388
8389 operator const VkEventCreateInfo&() const
8390 {
8391 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8392 }
8393
8394 bool operator==( EventCreateInfo const& rhs ) const
8395 {
8396 return ( sType == rhs.sType )
8397 && ( pNext == rhs.pNext )
8398 && ( flags == rhs.flags );
8399 }
8400
8401 bool operator!=( EventCreateInfo const& rhs ) const
8402 {
8403 return !operator==( rhs );
8404 }
8405
8406 private:
8407 StructureType sType;
8408
8409 public:
8410 const void* pNext;
8411 EventCreateFlags flags;
8412 };
8413 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8414
8415 struct SemaphoreCreateInfo
8416 {
8417 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8418 : sType( StructureType::eSemaphoreCreateInfo )
8419 , pNext( nullptr )
8420 , flags( flags_ )
8421 {
8422 }
8423
8424 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8425 {
8426 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8427 }
8428
8429 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8430 {
8431 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8432 return *this;
8433 }
8434
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008435 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8436 {
8437 pNext = pNext_;
8438 return *this;
8439 }
8440
8441 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8442 {
8443 flags = flags_;
8444 return *this;
8445 }
8446
8447 operator const VkSemaphoreCreateInfo&() const
8448 {
8449 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8450 }
8451
8452 bool operator==( SemaphoreCreateInfo const& rhs ) const
8453 {
8454 return ( sType == rhs.sType )
8455 && ( pNext == rhs.pNext )
8456 && ( flags == rhs.flags );
8457 }
8458
8459 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8460 {
8461 return !operator==( rhs );
8462 }
8463
8464 private:
8465 StructureType sType;
8466
8467 public:
8468 const void* pNext;
8469 SemaphoreCreateFlags flags;
8470 };
8471 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8472
8473 struct FramebufferCreateInfo
8474 {
8475 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 )
8476 : sType( StructureType::eFramebufferCreateInfo )
8477 , pNext( nullptr )
8478 , flags( flags_ )
8479 , renderPass( renderPass_ )
8480 , attachmentCount( attachmentCount_ )
8481 , pAttachments( pAttachments_ )
8482 , width( width_ )
8483 , height( height_ )
8484 , layers( layers_ )
8485 {
8486 }
8487
8488 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8489 {
8490 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8491 }
8492
8493 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8494 {
8495 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8496 return *this;
8497 }
8498
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008499 FramebufferCreateInfo& setPNext( const void* pNext_ )
8500 {
8501 pNext = pNext_;
8502 return *this;
8503 }
8504
8505 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8506 {
8507 flags = flags_;
8508 return *this;
8509 }
8510
8511 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8512 {
8513 renderPass = renderPass_;
8514 return *this;
8515 }
8516
8517 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8518 {
8519 attachmentCount = attachmentCount_;
8520 return *this;
8521 }
8522
8523 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8524 {
8525 pAttachments = pAttachments_;
8526 return *this;
8527 }
8528
8529 FramebufferCreateInfo& setWidth( uint32_t width_ )
8530 {
8531 width = width_;
8532 return *this;
8533 }
8534
8535 FramebufferCreateInfo& setHeight( uint32_t height_ )
8536 {
8537 height = height_;
8538 return *this;
8539 }
8540
8541 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8542 {
8543 layers = layers_;
8544 return *this;
8545 }
8546
8547 operator const VkFramebufferCreateInfo&() const
8548 {
8549 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8550 }
8551
8552 bool operator==( FramebufferCreateInfo const& rhs ) const
8553 {
8554 return ( sType == rhs.sType )
8555 && ( pNext == rhs.pNext )
8556 && ( flags == rhs.flags )
8557 && ( renderPass == rhs.renderPass )
8558 && ( attachmentCount == rhs.attachmentCount )
8559 && ( pAttachments == rhs.pAttachments )
8560 && ( width == rhs.width )
8561 && ( height == rhs.height )
8562 && ( layers == rhs.layers );
8563 }
8564
8565 bool operator!=( FramebufferCreateInfo const& rhs ) const
8566 {
8567 return !operator==( rhs );
8568 }
8569
8570 private:
8571 StructureType sType;
8572
8573 public:
8574 const void* pNext;
8575 FramebufferCreateFlags flags;
8576 RenderPass renderPass;
8577 uint32_t attachmentCount;
8578 const ImageView* pAttachments;
8579 uint32_t width;
8580 uint32_t height;
8581 uint32_t layers;
8582 };
8583 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8584
8585 struct DisplayModeCreateInfoKHR
8586 {
8587 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8588 : sType( StructureType::eDisplayModeCreateInfoKHR )
8589 , pNext( nullptr )
8590 , flags( flags_ )
8591 , parameters( parameters_ )
8592 {
8593 }
8594
8595 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8596 {
8597 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8598 }
8599
8600 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8601 {
8602 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8603 return *this;
8604 }
8605
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008606 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8607 {
8608 pNext = pNext_;
8609 return *this;
8610 }
8611
8612 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8613 {
8614 flags = flags_;
8615 return *this;
8616 }
8617
8618 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8619 {
8620 parameters = parameters_;
8621 return *this;
8622 }
8623
8624 operator const VkDisplayModeCreateInfoKHR&() const
8625 {
8626 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8627 }
8628
8629 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8630 {
8631 return ( sType == rhs.sType )
8632 && ( pNext == rhs.pNext )
8633 && ( flags == rhs.flags )
8634 && ( parameters == rhs.parameters );
8635 }
8636
8637 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8638 {
8639 return !operator==( rhs );
8640 }
8641
8642 private:
8643 StructureType sType;
8644
8645 public:
8646 const void* pNext;
8647 DisplayModeCreateFlagsKHR flags;
8648 DisplayModeParametersKHR parameters;
8649 };
8650 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8651
8652 struct DisplayPresentInfoKHR
8653 {
8654 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8655 : sType( StructureType::eDisplayPresentInfoKHR )
8656 , pNext( nullptr )
8657 , srcRect( srcRect_ )
8658 , dstRect( dstRect_ )
8659 , persistent( persistent_ )
8660 {
8661 }
8662
8663 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8664 {
8665 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8666 }
8667
8668 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8669 {
8670 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8671 return *this;
8672 }
8673
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008674 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8675 {
8676 pNext = pNext_;
8677 return *this;
8678 }
8679
8680 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8681 {
8682 srcRect = srcRect_;
8683 return *this;
8684 }
8685
8686 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8687 {
8688 dstRect = dstRect_;
8689 return *this;
8690 }
8691
8692 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8693 {
8694 persistent = persistent_;
8695 return *this;
8696 }
8697
8698 operator const VkDisplayPresentInfoKHR&() const
8699 {
8700 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8701 }
8702
8703 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8704 {
8705 return ( sType == rhs.sType )
8706 && ( pNext == rhs.pNext )
8707 && ( srcRect == rhs.srcRect )
8708 && ( dstRect == rhs.dstRect )
8709 && ( persistent == rhs.persistent );
8710 }
8711
8712 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8713 {
8714 return !operator==( rhs );
8715 }
8716
8717 private:
8718 StructureType sType;
8719
8720 public:
8721 const void* pNext;
8722 Rect2D srcRect;
8723 Rect2D dstRect;
8724 Bool32 persistent;
8725 };
8726 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8727
8728#ifdef VK_USE_PLATFORM_ANDROID_KHR
8729 struct AndroidSurfaceCreateInfoKHR
8730 {
8731 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8732 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8733 , pNext( nullptr )
8734 , flags( flags_ )
8735 , window( window_ )
8736 {
8737 }
8738
8739 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8740 {
8741 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8742 }
8743
8744 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8745 {
8746 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8747 return *this;
8748 }
8749
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008750 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8751 {
8752 pNext = pNext_;
8753 return *this;
8754 }
8755
8756 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8757 {
8758 flags = flags_;
8759 return *this;
8760 }
8761
8762 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8763 {
8764 window = window_;
8765 return *this;
8766 }
8767
8768 operator const VkAndroidSurfaceCreateInfoKHR&() const
8769 {
8770 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8771 }
8772
8773 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8774 {
8775 return ( sType == rhs.sType )
8776 && ( pNext == rhs.pNext )
8777 && ( flags == rhs.flags )
8778 && ( window == rhs.window );
8779 }
8780
8781 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8782 {
8783 return !operator==( rhs );
8784 }
8785
8786 private:
8787 StructureType sType;
8788
8789 public:
8790 const void* pNext;
8791 AndroidSurfaceCreateFlagsKHR flags;
8792 ANativeWindow* window;
8793 };
8794 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8795#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8796
8797#ifdef VK_USE_PLATFORM_MIR_KHR
8798 struct MirSurfaceCreateInfoKHR
8799 {
8800 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8801 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8802 , pNext( nullptr )
8803 , flags( flags_ )
8804 , connection( connection_ )
8805 , mirSurface( mirSurface_ )
8806 {
8807 }
8808
8809 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8810 {
8811 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8812 }
8813
8814 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8815 {
8816 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8817 return *this;
8818 }
8819
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008820 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8821 {
8822 pNext = pNext_;
8823 return *this;
8824 }
8825
8826 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8827 {
8828 flags = flags_;
8829 return *this;
8830 }
8831
8832 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8833 {
8834 connection = connection_;
8835 return *this;
8836 }
8837
8838 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8839 {
8840 mirSurface = mirSurface_;
8841 return *this;
8842 }
8843
8844 operator const VkMirSurfaceCreateInfoKHR&() const
8845 {
8846 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8847 }
8848
8849 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8850 {
8851 return ( sType == rhs.sType )
8852 && ( pNext == rhs.pNext )
8853 && ( flags == rhs.flags )
8854 && ( connection == rhs.connection )
8855 && ( mirSurface == rhs.mirSurface );
8856 }
8857
8858 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8859 {
8860 return !operator==( rhs );
8861 }
8862
8863 private:
8864 StructureType sType;
8865
8866 public:
8867 const void* pNext;
8868 MirSurfaceCreateFlagsKHR flags;
8869 MirConnection* connection;
8870 MirSurface* mirSurface;
8871 };
8872 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8873#endif /*VK_USE_PLATFORM_MIR_KHR*/
8874
Mark Young39389872017-01-19 21:10:49 -07008875#ifdef VK_USE_PLATFORM_VI_NN
8876 struct ViSurfaceCreateInfoNN
8877 {
8878 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8879 : sType( StructureType::eViSurfaceCreateInfoNN )
8880 , pNext( nullptr )
8881 , flags( flags_ )
8882 , window( window_ )
8883 {
8884 }
8885
8886 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
8887 {
8888 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8889 }
8890
8891 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
8892 {
8893 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
8894 return *this;
8895 }
8896
Mark Young39389872017-01-19 21:10:49 -07008897 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
8898 {
8899 pNext = pNext_;
8900 return *this;
8901 }
8902
8903 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
8904 {
8905 flags = flags_;
8906 return *this;
8907 }
8908
8909 ViSurfaceCreateInfoNN& setWindow( void* window_ )
8910 {
8911 window = window_;
8912 return *this;
8913 }
8914
8915 operator const VkViSurfaceCreateInfoNN&() const
8916 {
8917 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
8918 }
8919
8920 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
8921 {
8922 return ( sType == rhs.sType )
8923 && ( pNext == rhs.pNext )
8924 && ( flags == rhs.flags )
8925 && ( window == rhs.window );
8926 }
8927
8928 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
8929 {
8930 return !operator==( rhs );
8931 }
8932
8933 private:
8934 StructureType sType;
8935
8936 public:
8937 const void* pNext;
8938 ViSurfaceCreateFlagsNN flags;
8939 void* window;
8940 };
8941 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
8942#endif /*VK_USE_PLATFORM_VI_NN*/
8943
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008944#ifdef VK_USE_PLATFORM_WAYLAND_KHR
8945 struct WaylandSurfaceCreateInfoKHR
8946 {
8947 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
8948 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
8949 , pNext( nullptr )
8950 , flags( flags_ )
8951 , display( display_ )
8952 , surface( surface_ )
8953 {
8954 }
8955
8956 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
8957 {
8958 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8959 }
8960
8961 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
8962 {
8963 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
8964 return *this;
8965 }
8966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008967 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8968 {
8969 pNext = pNext_;
8970 return *this;
8971 }
8972
8973 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
8974 {
8975 flags = flags_;
8976 return *this;
8977 }
8978
8979 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
8980 {
8981 display = display_;
8982 return *this;
8983 }
8984
8985 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
8986 {
8987 surface = surface_;
8988 return *this;
8989 }
8990
8991 operator const VkWaylandSurfaceCreateInfoKHR&() const
8992 {
8993 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
8994 }
8995
8996 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
8997 {
8998 return ( sType == rhs.sType )
8999 && ( pNext == rhs.pNext )
9000 && ( flags == rhs.flags )
9001 && ( display == rhs.display )
9002 && ( surface == rhs.surface );
9003 }
9004
9005 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9006 {
9007 return !operator==( rhs );
9008 }
9009
9010 private:
9011 StructureType sType;
9012
9013 public:
9014 const void* pNext;
9015 WaylandSurfaceCreateFlagsKHR flags;
9016 struct wl_display* display;
9017 struct wl_surface* surface;
9018 };
9019 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9020#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9021
9022#ifdef VK_USE_PLATFORM_WIN32_KHR
9023 struct Win32SurfaceCreateInfoKHR
9024 {
9025 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9026 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9027 , pNext( nullptr )
9028 , flags( flags_ )
9029 , hinstance( hinstance_ )
9030 , hwnd( hwnd_ )
9031 {
9032 }
9033
9034 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9035 {
9036 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9037 }
9038
9039 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9040 {
9041 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9042 return *this;
9043 }
9044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009045 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9046 {
9047 pNext = pNext_;
9048 return *this;
9049 }
9050
9051 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9052 {
9053 flags = flags_;
9054 return *this;
9055 }
9056
9057 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9058 {
9059 hinstance = hinstance_;
9060 return *this;
9061 }
9062
9063 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9064 {
9065 hwnd = hwnd_;
9066 return *this;
9067 }
9068
9069 operator const VkWin32SurfaceCreateInfoKHR&() const
9070 {
9071 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9072 }
9073
9074 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9075 {
9076 return ( sType == rhs.sType )
9077 && ( pNext == rhs.pNext )
9078 && ( flags == rhs.flags )
9079 && ( hinstance == rhs.hinstance )
9080 && ( hwnd == rhs.hwnd );
9081 }
9082
9083 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9084 {
9085 return !operator==( rhs );
9086 }
9087
9088 private:
9089 StructureType sType;
9090
9091 public:
9092 const void* pNext;
9093 Win32SurfaceCreateFlagsKHR flags;
9094 HINSTANCE hinstance;
9095 HWND hwnd;
9096 };
9097 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9098#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9099
9100#ifdef VK_USE_PLATFORM_XLIB_KHR
9101 struct XlibSurfaceCreateInfoKHR
9102 {
9103 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9104 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9105 , pNext( nullptr )
9106 , flags( flags_ )
9107 , dpy( dpy_ )
9108 , window( window_ )
9109 {
9110 }
9111
9112 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9113 {
9114 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9115 }
9116
9117 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9118 {
9119 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9120 return *this;
9121 }
9122
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009123 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9124 {
9125 pNext = pNext_;
9126 return *this;
9127 }
9128
9129 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9130 {
9131 flags = flags_;
9132 return *this;
9133 }
9134
9135 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9136 {
9137 dpy = dpy_;
9138 return *this;
9139 }
9140
9141 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9142 {
9143 window = window_;
9144 return *this;
9145 }
9146
9147 operator const VkXlibSurfaceCreateInfoKHR&() const
9148 {
9149 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9150 }
9151
9152 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9153 {
9154 return ( sType == rhs.sType )
9155 && ( pNext == rhs.pNext )
9156 && ( flags == rhs.flags )
9157 && ( dpy == rhs.dpy )
9158 && ( window == rhs.window );
9159 }
9160
9161 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9162 {
9163 return !operator==( rhs );
9164 }
9165
9166 private:
9167 StructureType sType;
9168
9169 public:
9170 const void* pNext;
9171 XlibSurfaceCreateFlagsKHR flags;
9172 Display* dpy;
9173 Window window;
9174 };
9175 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9176#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9177
9178#ifdef VK_USE_PLATFORM_XCB_KHR
9179 struct XcbSurfaceCreateInfoKHR
9180 {
9181 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9182 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9183 , pNext( nullptr )
9184 , flags( flags_ )
9185 , connection( connection_ )
9186 , window( window_ )
9187 {
9188 }
9189
9190 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9191 {
9192 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9193 }
9194
9195 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9196 {
9197 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9198 return *this;
9199 }
9200
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009201 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9202 {
9203 pNext = pNext_;
9204 return *this;
9205 }
9206
9207 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9208 {
9209 flags = flags_;
9210 return *this;
9211 }
9212
9213 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9214 {
9215 connection = connection_;
9216 return *this;
9217 }
9218
9219 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9220 {
9221 window = window_;
9222 return *this;
9223 }
9224
9225 operator const VkXcbSurfaceCreateInfoKHR&() const
9226 {
9227 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9228 }
9229
9230 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9231 {
9232 return ( sType == rhs.sType )
9233 && ( pNext == rhs.pNext )
9234 && ( flags == rhs.flags )
9235 && ( connection == rhs.connection )
9236 && ( window == rhs.window );
9237 }
9238
9239 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9240 {
9241 return !operator==( rhs );
9242 }
9243
9244 private:
9245 StructureType sType;
9246
9247 public:
9248 const void* pNext;
9249 XcbSurfaceCreateFlagsKHR flags;
9250 xcb_connection_t* connection;
9251 xcb_window_t window;
9252 };
9253 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9254#endif /*VK_USE_PLATFORM_XCB_KHR*/
9255
9256 struct DebugMarkerMarkerInfoEXT
9257 {
9258 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9259 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9260 , pNext( nullptr )
9261 , pMarkerName( pMarkerName_ )
9262 {
9263 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9264 }
9265
9266 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9267 {
9268 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9269 }
9270
9271 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9272 {
9273 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9274 return *this;
9275 }
9276
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009277 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9278 {
9279 pNext = pNext_;
9280 return *this;
9281 }
9282
9283 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9284 {
9285 pMarkerName = pMarkerName_;
9286 return *this;
9287 }
9288
9289 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9290 {
9291 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9292 return *this;
9293 }
9294
9295 operator const VkDebugMarkerMarkerInfoEXT&() const
9296 {
9297 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9298 }
9299
9300 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9301 {
9302 return ( sType == rhs.sType )
9303 && ( pNext == rhs.pNext )
9304 && ( pMarkerName == rhs.pMarkerName )
9305 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9306 }
9307
9308 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9309 {
9310 return !operator==( rhs );
9311 }
9312
9313 private:
9314 StructureType sType;
9315
9316 public:
9317 const void* pNext;
9318 const char* pMarkerName;
9319 float color[4];
9320 };
9321 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9322
9323 struct DedicatedAllocationImageCreateInfoNV
9324 {
9325 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9326 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9327 , pNext( nullptr )
9328 , dedicatedAllocation( dedicatedAllocation_ )
9329 {
9330 }
9331
9332 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9333 {
9334 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9335 }
9336
9337 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9338 {
9339 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9340 return *this;
9341 }
9342
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009343 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9344 {
9345 pNext = pNext_;
9346 return *this;
9347 }
9348
9349 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9350 {
9351 dedicatedAllocation = dedicatedAllocation_;
9352 return *this;
9353 }
9354
9355 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9356 {
9357 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9358 }
9359
9360 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9361 {
9362 return ( sType == rhs.sType )
9363 && ( pNext == rhs.pNext )
9364 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9365 }
9366
9367 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9368 {
9369 return !operator==( rhs );
9370 }
9371
9372 private:
9373 StructureType sType;
9374
9375 public:
9376 const void* pNext;
9377 Bool32 dedicatedAllocation;
9378 };
9379 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9380
9381 struct DedicatedAllocationBufferCreateInfoNV
9382 {
9383 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9384 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9385 , pNext( nullptr )
9386 , dedicatedAllocation( dedicatedAllocation_ )
9387 {
9388 }
9389
9390 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9391 {
9392 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9393 }
9394
9395 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9396 {
9397 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9398 return *this;
9399 }
9400
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009401 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9402 {
9403 pNext = pNext_;
9404 return *this;
9405 }
9406
9407 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9408 {
9409 dedicatedAllocation = dedicatedAllocation_;
9410 return *this;
9411 }
9412
9413 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9414 {
9415 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9416 }
9417
9418 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9419 {
9420 return ( sType == rhs.sType )
9421 && ( pNext == rhs.pNext )
9422 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9423 }
9424
9425 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9426 {
9427 return !operator==( rhs );
9428 }
9429
9430 private:
9431 StructureType sType;
9432
9433 public:
9434 const void* pNext;
9435 Bool32 dedicatedAllocation;
9436 };
9437 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9438
9439 struct DedicatedAllocationMemoryAllocateInfoNV
9440 {
9441 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9442 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9443 , pNext( nullptr )
9444 , image( image_ )
9445 , buffer( buffer_ )
9446 {
9447 }
9448
9449 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9450 {
9451 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9452 }
9453
9454 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9455 {
9456 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9457 return *this;
9458 }
9459
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009460 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9461 {
9462 pNext = pNext_;
9463 return *this;
9464 }
9465
9466 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9467 {
9468 image = image_;
9469 return *this;
9470 }
9471
9472 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9473 {
9474 buffer = buffer_;
9475 return *this;
9476 }
9477
9478 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9479 {
9480 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9481 }
9482
9483 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9484 {
9485 return ( sType == rhs.sType )
9486 && ( pNext == rhs.pNext )
9487 && ( image == rhs.image )
9488 && ( buffer == rhs.buffer );
9489 }
9490
9491 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9492 {
9493 return !operator==( rhs );
9494 }
9495
9496 private:
9497 StructureType sType;
9498
9499 public:
9500 const void* pNext;
9501 Image image;
9502 Buffer buffer;
9503 };
9504 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9505
Lenny Komow6501c122016-08-31 15:03:49 -06009506#ifdef VK_USE_PLATFORM_WIN32_KHR
9507 struct ExportMemoryWin32HandleInfoNV
9508 {
9509 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9510 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9511 , pNext( nullptr )
9512 , pAttributes( pAttributes_ )
9513 , dwAccess( dwAccess_ )
9514 {
9515 }
9516
9517 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9518 {
9519 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9520 }
9521
9522 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9523 {
9524 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9525 return *this;
9526 }
9527
Lenny Komow6501c122016-08-31 15:03:49 -06009528 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9529 {
9530 pNext = pNext_;
9531 return *this;
9532 }
9533
9534 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9535 {
9536 pAttributes = pAttributes_;
9537 return *this;
9538 }
9539
9540 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9541 {
9542 dwAccess = dwAccess_;
9543 return *this;
9544 }
9545
9546 operator const VkExportMemoryWin32HandleInfoNV&() const
9547 {
9548 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9549 }
9550
9551 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9552 {
9553 return ( sType == rhs.sType )
9554 && ( pNext == rhs.pNext )
9555 && ( pAttributes == rhs.pAttributes )
9556 && ( dwAccess == rhs.dwAccess );
9557 }
9558
9559 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9560 {
9561 return !operator==( rhs );
9562 }
9563
9564 private:
9565 StructureType sType;
9566
9567 public:
9568 const void* pNext;
9569 const SECURITY_ATTRIBUTES* pAttributes;
9570 DWORD dwAccess;
9571 };
9572 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9573#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9574
9575#ifdef VK_USE_PLATFORM_WIN32_KHR
9576 struct Win32KeyedMutexAcquireReleaseInfoNV
9577 {
9578 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 )
9579 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9580 , pNext( nullptr )
9581 , acquireCount( acquireCount_ )
9582 , pAcquireSyncs( pAcquireSyncs_ )
9583 , pAcquireKeys( pAcquireKeys_ )
9584 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9585 , releaseCount( releaseCount_ )
9586 , pReleaseSyncs( pReleaseSyncs_ )
9587 , pReleaseKeys( pReleaseKeys_ )
9588 {
9589 }
9590
9591 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9592 {
9593 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9594 }
9595
9596 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9597 {
9598 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9599 return *this;
9600 }
9601
Lenny Komow6501c122016-08-31 15:03:49 -06009602 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9603 {
9604 pNext = pNext_;
9605 return *this;
9606 }
9607
9608 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9609 {
9610 acquireCount = acquireCount_;
9611 return *this;
9612 }
9613
9614 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9615 {
9616 pAcquireSyncs = pAcquireSyncs_;
9617 return *this;
9618 }
9619
9620 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9621 {
9622 pAcquireKeys = pAcquireKeys_;
9623 return *this;
9624 }
9625
9626 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9627 {
9628 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9629 return *this;
9630 }
9631
9632 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9633 {
9634 releaseCount = releaseCount_;
9635 return *this;
9636 }
9637
9638 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9639 {
9640 pReleaseSyncs = pReleaseSyncs_;
9641 return *this;
9642 }
9643
9644 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9645 {
9646 pReleaseKeys = pReleaseKeys_;
9647 return *this;
9648 }
9649
9650 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9651 {
9652 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9653 }
9654
9655 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9656 {
9657 return ( sType == rhs.sType )
9658 && ( pNext == rhs.pNext )
9659 && ( acquireCount == rhs.acquireCount )
9660 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9661 && ( pAcquireKeys == rhs.pAcquireKeys )
9662 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9663 && ( releaseCount == rhs.releaseCount )
9664 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9665 && ( pReleaseKeys == rhs.pReleaseKeys );
9666 }
9667
9668 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9669 {
9670 return !operator==( rhs );
9671 }
9672
9673 private:
9674 StructureType sType;
9675
9676 public:
9677 const void* pNext;
9678 uint32_t acquireCount;
9679 const DeviceMemory* pAcquireSyncs;
9680 const uint64_t* pAcquireKeys;
9681 const uint32_t* pAcquireTimeoutMilliseconds;
9682 uint32_t releaseCount;
9683 const DeviceMemory* pReleaseSyncs;
9684 const uint64_t* pReleaseKeys;
9685 };
9686 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9687#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9688
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009689 struct DeviceGeneratedCommandsFeaturesNVX
9690 {
9691 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9692 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9693 , pNext( nullptr )
9694 , computeBindingPointSupport( computeBindingPointSupport_ )
9695 {
9696 }
9697
9698 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9699 {
9700 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9701 }
9702
9703 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9704 {
9705 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9706 return *this;
9707 }
9708
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009709 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9710 {
9711 pNext = pNext_;
9712 return *this;
9713 }
9714
9715 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9716 {
9717 computeBindingPointSupport = computeBindingPointSupport_;
9718 return *this;
9719 }
9720
9721 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9722 {
9723 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9724 }
9725
9726 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9727 {
9728 return ( sType == rhs.sType )
9729 && ( pNext == rhs.pNext )
9730 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9731 }
9732
9733 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9734 {
9735 return !operator==( rhs );
9736 }
9737
9738 private:
9739 StructureType sType;
9740
9741 public:
9742 const void* pNext;
9743 Bool32 computeBindingPointSupport;
9744 };
9745 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9746
9747 struct DeviceGeneratedCommandsLimitsNVX
9748 {
9749 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9750 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9751 , pNext( nullptr )
9752 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9753 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9754 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9755 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9756 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9757 {
9758 }
9759
9760 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9761 {
9762 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9763 }
9764
9765 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9766 {
9767 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9768 return *this;
9769 }
9770
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009771 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9772 {
9773 pNext = pNext_;
9774 return *this;
9775 }
9776
9777 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9778 {
9779 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9780 return *this;
9781 }
9782
9783 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9784 {
9785 maxObjectEntryCounts = maxObjectEntryCounts_;
9786 return *this;
9787 }
9788
9789 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9790 {
9791 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9792 return *this;
9793 }
9794
9795 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9796 {
9797 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9798 return *this;
9799 }
9800
9801 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9802 {
9803 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9804 return *this;
9805 }
9806
9807 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9808 {
9809 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9810 }
9811
9812 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9813 {
9814 return ( sType == rhs.sType )
9815 && ( pNext == rhs.pNext )
9816 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9817 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9818 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9819 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9820 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9821 }
9822
9823 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9824 {
9825 return !operator==( rhs );
9826 }
9827
9828 private:
9829 StructureType sType;
9830
9831 public:
9832 const void* pNext;
9833 uint32_t maxIndirectCommandsLayoutTokenCount;
9834 uint32_t maxObjectEntryCounts;
9835 uint32_t minSequenceCountBufferOffsetAlignment;
9836 uint32_t minSequenceIndexBufferOffsetAlignment;
9837 uint32_t minCommandsTokenBufferOffsetAlignment;
9838 };
9839 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9840
9841 struct CmdReserveSpaceForCommandsInfoNVX
9842 {
9843 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9844 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9845 , pNext( nullptr )
9846 , objectTable( objectTable_ )
9847 , indirectCommandsLayout( indirectCommandsLayout_ )
9848 , maxSequencesCount( maxSequencesCount_ )
9849 {
9850 }
9851
9852 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9853 {
9854 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9855 }
9856
9857 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9858 {
9859 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9860 return *this;
9861 }
9862
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009863 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9864 {
9865 pNext = pNext_;
9866 return *this;
9867 }
9868
9869 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9870 {
9871 objectTable = objectTable_;
9872 return *this;
9873 }
9874
9875 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9876 {
9877 indirectCommandsLayout = indirectCommandsLayout_;
9878 return *this;
9879 }
9880
9881 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9882 {
9883 maxSequencesCount = maxSequencesCount_;
9884 return *this;
9885 }
9886
9887 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
9888 {
9889 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
9890 }
9891
9892 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9893 {
9894 return ( sType == rhs.sType )
9895 && ( pNext == rhs.pNext )
9896 && ( objectTable == rhs.objectTable )
9897 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
9898 && ( maxSequencesCount == rhs.maxSequencesCount );
9899 }
9900
9901 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
9902 {
9903 return !operator==( rhs );
9904 }
9905
9906 private:
9907 StructureType sType;
9908
9909 public:
9910 const void* pNext;
9911 ObjectTableNVX objectTable;
9912 IndirectCommandsLayoutNVX indirectCommandsLayout;
9913 uint32_t maxSequencesCount;
9914 };
9915 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
9916
Mark Young39389872017-01-19 21:10:49 -07009917 struct PhysicalDeviceFeatures2KHR
9918 {
9919 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
9920 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
9921 , pNext( nullptr )
9922 , features( features_ )
9923 {
9924 }
9925
9926 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
9927 {
9928 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9929 }
9930
9931 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
9932 {
9933 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
9934 return *this;
9935 }
9936
Mark Young39389872017-01-19 21:10:49 -07009937 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
9938 {
9939 pNext = pNext_;
9940 return *this;
9941 }
9942
9943 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
9944 {
9945 features = features_;
9946 return *this;
9947 }
9948
9949 operator const VkPhysicalDeviceFeatures2KHR&() const
9950 {
9951 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
9952 }
9953
9954 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
9955 {
9956 return ( sType == rhs.sType )
9957 && ( pNext == rhs.pNext )
9958 && ( features == rhs.features );
9959 }
9960
9961 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
9962 {
9963 return !operator==( rhs );
9964 }
9965
9966 private:
9967 StructureType sType;
9968
9969 public:
9970 void* pNext;
9971 PhysicalDeviceFeatures features;
9972 };
9973 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
9974
Mark Young0f183a82017-02-28 09:58:04 -07009975 struct PhysicalDevicePushDescriptorPropertiesKHR
9976 {
9977 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
9978 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
9979 , pNext( nullptr )
9980 , maxPushDescriptors( maxPushDescriptors_ )
9981 {
9982 }
9983
9984 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9985 {
9986 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9987 }
9988
9989 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
9990 {
9991 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
9992 return *this;
9993 }
9994
9995 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
9996 {
9997 pNext = pNext_;
9998 return *this;
9999 }
10000
10001 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10002 {
10003 maxPushDescriptors = maxPushDescriptors_;
10004 return *this;
10005 }
10006
10007 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10008 {
10009 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10010 }
10011
10012 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10013 {
10014 return ( sType == rhs.sType )
10015 && ( pNext == rhs.pNext )
10016 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10017 }
10018
10019 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10020 {
10021 return !operator==( rhs );
10022 }
10023
10024 private:
10025 StructureType sType;
10026
10027 public:
10028 void* pNext;
10029 uint32_t maxPushDescriptors;
10030 };
10031 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10032
10033 struct PhysicalDeviceIDPropertiesKHX
10034 {
10035 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10036 {
10037 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10038 }
10039
10040 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10041 {
10042 return ( sType == rhs.sType )
10043 && ( pNext == rhs.pNext )
10044 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10045 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10046 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10047 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10048 }
10049
10050 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10051 {
10052 return !operator==( rhs );
10053 }
10054
10055 private:
10056 StructureType sType;
10057
10058 public:
10059 void* pNext;
10060 uint8_t deviceUUID[VK_UUID_SIZE];
10061 uint8_t driverUUID[VK_UUID_SIZE];
10062 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10063 Bool32 deviceLUIDValid;
10064 };
10065 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10066
10067#ifdef VK_USE_PLATFORM_WIN32_KHR
10068 struct ExportMemoryWin32HandleInfoKHX
10069 {
10070 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10071 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10072 , pNext( nullptr )
10073 , pAttributes( pAttributes_ )
10074 , dwAccess( dwAccess_ )
10075 , name( name_ )
10076 {
10077 }
10078
10079 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10080 {
10081 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10082 }
10083
10084 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10085 {
10086 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10087 return *this;
10088 }
10089
10090 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10091 {
10092 pNext = pNext_;
10093 return *this;
10094 }
10095
10096 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10097 {
10098 pAttributes = pAttributes_;
10099 return *this;
10100 }
10101
10102 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10103 {
10104 dwAccess = dwAccess_;
10105 return *this;
10106 }
10107
10108 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10109 {
10110 name = name_;
10111 return *this;
10112 }
10113
10114 operator const VkExportMemoryWin32HandleInfoKHX&() const
10115 {
10116 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10117 }
10118
10119 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10120 {
10121 return ( sType == rhs.sType )
10122 && ( pNext == rhs.pNext )
10123 && ( pAttributes == rhs.pAttributes )
10124 && ( dwAccess == rhs.dwAccess )
10125 && ( name == rhs.name );
10126 }
10127
10128 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10129 {
10130 return !operator==( rhs );
10131 }
10132
10133 private:
10134 StructureType sType;
10135
10136 public:
10137 const void* pNext;
10138 const SECURITY_ATTRIBUTES* pAttributes;
10139 DWORD dwAccess;
10140 LPCWSTR name;
10141 };
10142 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10143#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10144
10145#ifdef VK_USE_PLATFORM_WIN32_KHR
10146 struct MemoryWin32HandlePropertiesKHX
10147 {
10148 operator const VkMemoryWin32HandlePropertiesKHX&() const
10149 {
10150 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10151 }
10152
10153 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10154 {
10155 return ( sType == rhs.sType )
10156 && ( pNext == rhs.pNext )
10157 && ( memoryTypeBits == rhs.memoryTypeBits );
10158 }
10159
10160 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10161 {
10162 return !operator==( rhs );
10163 }
10164
10165 private:
10166 StructureType sType;
10167
10168 public:
10169 void* pNext;
10170 uint32_t memoryTypeBits;
10171 };
10172 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
10173#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10174
10175 struct MemoryFdPropertiesKHX
10176 {
10177 operator const VkMemoryFdPropertiesKHX&() const
10178 {
10179 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10180 }
10181
10182 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10183 {
10184 return ( sType == rhs.sType )
10185 && ( pNext == rhs.pNext )
10186 && ( memoryTypeBits == rhs.memoryTypeBits );
10187 }
10188
10189 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10190 {
10191 return !operator==( rhs );
10192 }
10193
10194 private:
10195 StructureType sType;
10196
10197 public:
10198 void* pNext;
10199 uint32_t memoryTypeBits;
10200 };
10201 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10202
10203#ifdef VK_USE_PLATFORM_WIN32_KHR
10204 struct Win32KeyedMutexAcquireReleaseInfoKHX
10205 {
10206 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 )
10207 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10208 , pNext( nullptr )
10209 , acquireCount( acquireCount_ )
10210 , pAcquireSyncs( pAcquireSyncs_ )
10211 , pAcquireKeys( pAcquireKeys_ )
10212 , pAcquireTimeouts( pAcquireTimeouts_ )
10213 , releaseCount( releaseCount_ )
10214 , pReleaseSyncs( pReleaseSyncs_ )
10215 , pReleaseKeys( pReleaseKeys_ )
10216 {
10217 }
10218
10219 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10220 {
10221 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10222 }
10223
10224 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10225 {
10226 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10227 return *this;
10228 }
10229
10230 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10231 {
10232 pNext = pNext_;
10233 return *this;
10234 }
10235
10236 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10237 {
10238 acquireCount = acquireCount_;
10239 return *this;
10240 }
10241
10242 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10243 {
10244 pAcquireSyncs = pAcquireSyncs_;
10245 return *this;
10246 }
10247
10248 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10249 {
10250 pAcquireKeys = pAcquireKeys_;
10251 return *this;
10252 }
10253
10254 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10255 {
10256 pAcquireTimeouts = pAcquireTimeouts_;
10257 return *this;
10258 }
10259
10260 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10261 {
10262 releaseCount = releaseCount_;
10263 return *this;
10264 }
10265
10266 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10267 {
10268 pReleaseSyncs = pReleaseSyncs_;
10269 return *this;
10270 }
10271
10272 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10273 {
10274 pReleaseKeys = pReleaseKeys_;
10275 return *this;
10276 }
10277
10278 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10279 {
10280 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10281 }
10282
10283 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10284 {
10285 return ( sType == rhs.sType )
10286 && ( pNext == rhs.pNext )
10287 && ( acquireCount == rhs.acquireCount )
10288 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10289 && ( pAcquireKeys == rhs.pAcquireKeys )
10290 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10291 && ( releaseCount == rhs.releaseCount )
10292 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10293 && ( pReleaseKeys == rhs.pReleaseKeys );
10294 }
10295
10296 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10297 {
10298 return !operator==( rhs );
10299 }
10300
10301 private:
10302 StructureType sType;
10303
10304 public:
10305 const void* pNext;
10306 uint32_t acquireCount;
10307 const DeviceMemory* pAcquireSyncs;
10308 const uint64_t* pAcquireKeys;
10309 const uint32_t* pAcquireTimeouts;
10310 uint32_t releaseCount;
10311 const DeviceMemory* pReleaseSyncs;
10312 const uint64_t* pReleaseKeys;
10313 };
10314 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10315#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10316
10317#ifdef VK_USE_PLATFORM_WIN32_KHX
10318 struct ExportSemaphoreWin32HandleInfoKHX
10319 {
10320 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10321 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10322 , pNext( nullptr )
10323 , pAttributes( pAttributes_ )
10324 , dwAccess( dwAccess_ )
10325 , name( name_ )
10326 {
10327 }
10328
10329 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10330 {
10331 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10332 }
10333
10334 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10335 {
10336 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10337 return *this;
10338 }
10339
10340 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10341 {
10342 pNext = pNext_;
10343 return *this;
10344 }
10345
10346 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10347 {
10348 pAttributes = pAttributes_;
10349 return *this;
10350 }
10351
10352 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10353 {
10354 dwAccess = dwAccess_;
10355 return *this;
10356 }
10357
10358 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10359 {
10360 name = name_;
10361 return *this;
10362 }
10363
10364 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10365 {
10366 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10367 }
10368
10369 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10370 {
10371 return ( sType == rhs.sType )
10372 && ( pNext == rhs.pNext )
10373 && ( pAttributes == rhs.pAttributes )
10374 && ( dwAccess == rhs.dwAccess )
10375 && ( name == rhs.name );
10376 }
10377
10378 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10379 {
10380 return !operator==( rhs );
10381 }
10382
10383 private:
10384 StructureType sType;
10385
10386 public:
10387 const void* pNext;
10388 const SECURITY_ATTRIBUTES* pAttributes;
10389 DWORD dwAccess;
10390 LPCWSTR name;
10391 };
10392 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10393#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10394
10395#ifdef VK_USE_PLATFORM_WIN32_KHX
10396 struct D3D12FenceSubmitInfoKHX
10397 {
10398 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10399 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10400 , pNext( nullptr )
10401 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10402 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10403 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10404 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10405 {
10406 }
10407
10408 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10409 {
10410 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10411 }
10412
10413 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10414 {
10415 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10416 return *this;
10417 }
10418
10419 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10420 {
10421 pNext = pNext_;
10422 return *this;
10423 }
10424
10425 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10426 {
10427 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10428 return *this;
10429 }
10430
10431 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10432 {
10433 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10434 return *this;
10435 }
10436
10437 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10438 {
10439 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10440 return *this;
10441 }
10442
10443 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10444 {
10445 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10446 return *this;
10447 }
10448
10449 operator const VkD3D12FenceSubmitInfoKHX&() const
10450 {
10451 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10452 }
10453
10454 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10455 {
10456 return ( sType == rhs.sType )
10457 && ( pNext == rhs.pNext )
10458 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10459 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10460 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10461 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10462 }
10463
10464 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10465 {
10466 return !operator==( rhs );
10467 }
10468
10469 private:
10470 StructureType sType;
10471
10472 public:
10473 const void* pNext;
10474 uint32_t waitSemaphoreValuesCount;
10475 const uint64_t* pWaitSemaphoreValues;
10476 uint32_t signalSemaphoreValuesCount;
10477 const uint64_t* pSignalSemaphoreValues;
10478 };
10479 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10480#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10481
10482 struct PhysicalDeviceMultiviewFeaturesKHX
10483 {
10484 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10485 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10486 , pNext( nullptr )
10487 , multiview( multiview_ )
10488 , multiviewGeometryShader( multiviewGeometryShader_ )
10489 , multiviewTessellationShader( multiviewTessellationShader_ )
10490 {
10491 }
10492
10493 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10494 {
10495 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10496 }
10497
10498 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10499 {
10500 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10501 return *this;
10502 }
10503
10504 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10505 {
10506 pNext = pNext_;
10507 return *this;
10508 }
10509
10510 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10511 {
10512 multiview = multiview_;
10513 return *this;
10514 }
10515
10516 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10517 {
10518 multiviewGeometryShader = multiviewGeometryShader_;
10519 return *this;
10520 }
10521
10522 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10523 {
10524 multiviewTessellationShader = multiviewTessellationShader_;
10525 return *this;
10526 }
10527
10528 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10529 {
10530 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10531 }
10532
10533 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10534 {
10535 return ( sType == rhs.sType )
10536 && ( pNext == rhs.pNext )
10537 && ( multiview == rhs.multiview )
10538 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10539 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10540 }
10541
10542 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10543 {
10544 return !operator==( rhs );
10545 }
10546
10547 private:
10548 StructureType sType;
10549
10550 public:
10551 void* pNext;
10552 Bool32 multiview;
10553 Bool32 multiviewGeometryShader;
10554 Bool32 multiviewTessellationShader;
10555 };
10556 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10557
10558 struct PhysicalDeviceMultiviewPropertiesKHX
10559 {
10560 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10561 {
10562 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10563 }
10564
10565 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10566 {
10567 return ( sType == rhs.sType )
10568 && ( pNext == rhs.pNext )
10569 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10570 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10571 }
10572
10573 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10574 {
10575 return !operator==( rhs );
10576 }
10577
10578 private:
10579 StructureType sType;
10580
10581 public:
10582 void* pNext;
10583 uint32_t maxMultiviewViewCount;
10584 uint32_t maxMultiviewInstanceIndex;
10585 };
10586 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10587
10588 struct RenderPassMultiviewCreateInfoKHX
10589 {
10590 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 )
10591 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10592 , pNext( nullptr )
10593 , subpassCount( subpassCount_ )
10594 , pViewMasks( pViewMasks_ )
10595 , dependencyCount( dependencyCount_ )
10596 , pViewOffsets( pViewOffsets_ )
10597 , correlationMaskCount( correlationMaskCount_ )
10598 , pCorrelationMasks( pCorrelationMasks_ )
10599 {
10600 }
10601
10602 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10603 {
10604 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10605 }
10606
10607 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10608 {
10609 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10610 return *this;
10611 }
10612
10613 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10614 {
10615 pNext = pNext_;
10616 return *this;
10617 }
10618
10619 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10620 {
10621 subpassCount = subpassCount_;
10622 return *this;
10623 }
10624
10625 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10626 {
10627 pViewMasks = pViewMasks_;
10628 return *this;
10629 }
10630
10631 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10632 {
10633 dependencyCount = dependencyCount_;
10634 return *this;
10635 }
10636
10637 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10638 {
10639 pViewOffsets = pViewOffsets_;
10640 return *this;
10641 }
10642
10643 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10644 {
10645 correlationMaskCount = correlationMaskCount_;
10646 return *this;
10647 }
10648
10649 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10650 {
10651 pCorrelationMasks = pCorrelationMasks_;
10652 return *this;
10653 }
10654
10655 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10656 {
10657 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10658 }
10659
10660 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10661 {
10662 return ( sType == rhs.sType )
10663 && ( pNext == rhs.pNext )
10664 && ( subpassCount == rhs.subpassCount )
10665 && ( pViewMasks == rhs.pViewMasks )
10666 && ( dependencyCount == rhs.dependencyCount )
10667 && ( pViewOffsets == rhs.pViewOffsets )
10668 && ( correlationMaskCount == rhs.correlationMaskCount )
10669 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10670 }
10671
10672 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10673 {
10674 return !operator==( rhs );
10675 }
10676
10677 private:
10678 StructureType sType;
10679
10680 public:
10681 const void* pNext;
10682 uint32_t subpassCount;
10683 const uint32_t* pViewMasks;
10684 uint32_t dependencyCount;
10685 const int32_t* pViewOffsets;
10686 uint32_t correlationMaskCount;
10687 const uint32_t* pCorrelationMasks;
10688 };
10689 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10690
10691 struct BindBufferMemoryInfoKHX
10692 {
10693 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10694 : sType( StructureType::eBindBufferMemoryInfoKHX )
10695 , pNext( nullptr )
10696 , buffer( buffer_ )
10697 , memory( memory_ )
10698 , memoryOffset( memoryOffset_ )
10699 , deviceIndexCount( deviceIndexCount_ )
10700 , pDeviceIndices( pDeviceIndices_ )
10701 {
10702 }
10703
10704 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10705 {
10706 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10707 }
10708
10709 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10710 {
10711 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10712 return *this;
10713 }
10714
10715 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10716 {
10717 pNext = pNext_;
10718 return *this;
10719 }
10720
10721 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10722 {
10723 buffer = buffer_;
10724 return *this;
10725 }
10726
10727 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10728 {
10729 memory = memory_;
10730 return *this;
10731 }
10732
10733 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10734 {
10735 memoryOffset = memoryOffset_;
10736 return *this;
10737 }
10738
10739 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10740 {
10741 deviceIndexCount = deviceIndexCount_;
10742 return *this;
10743 }
10744
10745 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10746 {
10747 pDeviceIndices = pDeviceIndices_;
10748 return *this;
10749 }
10750
10751 operator const VkBindBufferMemoryInfoKHX&() const
10752 {
10753 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10754 }
10755
10756 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10757 {
10758 return ( sType == rhs.sType )
10759 && ( pNext == rhs.pNext )
10760 && ( buffer == rhs.buffer )
10761 && ( memory == rhs.memory )
10762 && ( memoryOffset == rhs.memoryOffset )
10763 && ( deviceIndexCount == rhs.deviceIndexCount )
10764 && ( pDeviceIndices == rhs.pDeviceIndices );
10765 }
10766
10767 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10768 {
10769 return !operator==( rhs );
10770 }
10771
10772 private:
10773 StructureType sType;
10774
10775 public:
10776 const void* pNext;
10777 Buffer buffer;
10778 DeviceMemory memory;
10779 DeviceSize memoryOffset;
10780 uint32_t deviceIndexCount;
10781 const uint32_t* pDeviceIndices;
10782 };
10783 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10784
10785 struct BindImageMemoryInfoKHX
10786 {
10787 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 )
10788 : sType( StructureType::eBindImageMemoryInfoKHX )
10789 , pNext( nullptr )
10790 , image( image_ )
10791 , memory( memory_ )
10792 , memoryOffset( memoryOffset_ )
10793 , deviceIndexCount( deviceIndexCount_ )
10794 , pDeviceIndices( pDeviceIndices_ )
10795 , SFRRectCount( SFRRectCount_ )
10796 , pSFRRects( pSFRRects_ )
10797 {
10798 }
10799
10800 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10801 {
10802 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10803 }
10804
10805 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10806 {
10807 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10808 return *this;
10809 }
10810
10811 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10812 {
10813 pNext = pNext_;
10814 return *this;
10815 }
10816
10817 BindImageMemoryInfoKHX& setImage( Image image_ )
10818 {
10819 image = image_;
10820 return *this;
10821 }
10822
10823 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10824 {
10825 memory = memory_;
10826 return *this;
10827 }
10828
10829 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10830 {
10831 memoryOffset = memoryOffset_;
10832 return *this;
10833 }
10834
10835 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10836 {
10837 deviceIndexCount = deviceIndexCount_;
10838 return *this;
10839 }
10840
10841 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10842 {
10843 pDeviceIndices = pDeviceIndices_;
10844 return *this;
10845 }
10846
10847 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
10848 {
10849 SFRRectCount = SFRRectCount_;
10850 return *this;
10851 }
10852
10853 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
10854 {
10855 pSFRRects = pSFRRects_;
10856 return *this;
10857 }
10858
10859 operator const VkBindImageMemoryInfoKHX&() const
10860 {
10861 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
10862 }
10863
10864 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
10865 {
10866 return ( sType == rhs.sType )
10867 && ( pNext == rhs.pNext )
10868 && ( image == rhs.image )
10869 && ( memory == rhs.memory )
10870 && ( memoryOffset == rhs.memoryOffset )
10871 && ( deviceIndexCount == rhs.deviceIndexCount )
10872 && ( pDeviceIndices == rhs.pDeviceIndices )
10873 && ( SFRRectCount == rhs.SFRRectCount )
10874 && ( pSFRRects == rhs.pSFRRects );
10875 }
10876
10877 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
10878 {
10879 return !operator==( rhs );
10880 }
10881
10882 private:
10883 StructureType sType;
10884
10885 public:
10886 const void* pNext;
10887 Image image;
10888 DeviceMemory memory;
10889 DeviceSize memoryOffset;
10890 uint32_t deviceIndexCount;
10891 const uint32_t* pDeviceIndices;
10892 uint32_t SFRRectCount;
10893 const Rect2D* pSFRRects;
10894 };
10895 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
10896
10897 struct DeviceGroupRenderPassBeginInfoKHX
10898 {
10899 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
10900 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
10901 , pNext( nullptr )
10902 , deviceMask( deviceMask_ )
10903 , deviceRenderAreaCount( deviceRenderAreaCount_ )
10904 , pDeviceRenderAreas( pDeviceRenderAreas_ )
10905 {
10906 }
10907
10908 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10909 {
10910 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10911 }
10912
10913 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
10914 {
10915 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
10916 return *this;
10917 }
10918
10919 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
10920 {
10921 pNext = pNext_;
10922 return *this;
10923 }
10924
10925 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
10926 {
10927 deviceMask = deviceMask_;
10928 return *this;
10929 }
10930
10931 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
10932 {
10933 deviceRenderAreaCount = deviceRenderAreaCount_;
10934 return *this;
10935 }
10936
10937 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
10938 {
10939 pDeviceRenderAreas = pDeviceRenderAreas_;
10940 return *this;
10941 }
10942
10943 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
10944 {
10945 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
10946 }
10947
10948 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10949 {
10950 return ( sType == rhs.sType )
10951 && ( pNext == rhs.pNext )
10952 && ( deviceMask == rhs.deviceMask )
10953 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
10954 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
10955 }
10956
10957 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
10958 {
10959 return !operator==( rhs );
10960 }
10961
10962 private:
10963 StructureType sType;
10964
10965 public:
10966 const void* pNext;
10967 uint32_t deviceMask;
10968 uint32_t deviceRenderAreaCount;
10969 const Rect2D* pDeviceRenderAreas;
10970 };
10971 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
10972
10973 struct DeviceGroupCommandBufferBeginInfoKHX
10974 {
10975 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
10976 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
10977 , pNext( nullptr )
10978 , deviceMask( deviceMask_ )
10979 {
10980 }
10981
10982 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10983 {
10984 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10985 }
10986
10987 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
10988 {
10989 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
10990 return *this;
10991 }
10992
10993 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
10994 {
10995 pNext = pNext_;
10996 return *this;
10997 }
10998
10999 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11000 {
11001 deviceMask = deviceMask_;
11002 return *this;
11003 }
11004
11005 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11006 {
11007 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11008 }
11009
11010 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11011 {
11012 return ( sType == rhs.sType )
11013 && ( pNext == rhs.pNext )
11014 && ( deviceMask == rhs.deviceMask );
11015 }
11016
11017 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11018 {
11019 return !operator==( rhs );
11020 }
11021
11022 private:
11023 StructureType sType;
11024
11025 public:
11026 const void* pNext;
11027 uint32_t deviceMask;
11028 };
11029 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11030
11031 struct DeviceGroupSubmitInfoKHX
11032 {
11033 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 )
11034 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11035 , pNext( nullptr )
11036 , waitSemaphoreCount( waitSemaphoreCount_ )
11037 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11038 , commandBufferCount( commandBufferCount_ )
11039 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11040 , signalSemaphoreCount( signalSemaphoreCount_ )
11041 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11042 {
11043 }
11044
11045 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11046 {
11047 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11048 }
11049
11050 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11051 {
11052 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11053 return *this;
11054 }
11055
11056 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11057 {
11058 pNext = pNext_;
11059 return *this;
11060 }
11061
11062 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11063 {
11064 waitSemaphoreCount = waitSemaphoreCount_;
11065 return *this;
11066 }
11067
11068 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11069 {
11070 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11071 return *this;
11072 }
11073
11074 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11075 {
11076 commandBufferCount = commandBufferCount_;
11077 return *this;
11078 }
11079
11080 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11081 {
11082 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11083 return *this;
11084 }
11085
11086 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11087 {
11088 signalSemaphoreCount = signalSemaphoreCount_;
11089 return *this;
11090 }
11091
11092 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11093 {
11094 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11095 return *this;
11096 }
11097
11098 operator const VkDeviceGroupSubmitInfoKHX&() const
11099 {
11100 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11101 }
11102
11103 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11104 {
11105 return ( sType == rhs.sType )
11106 && ( pNext == rhs.pNext )
11107 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11108 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11109 && ( commandBufferCount == rhs.commandBufferCount )
11110 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11111 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11112 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11113 }
11114
11115 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11116 {
11117 return !operator==( rhs );
11118 }
11119
11120 private:
11121 StructureType sType;
11122
11123 public:
11124 const void* pNext;
11125 uint32_t waitSemaphoreCount;
11126 const uint32_t* pWaitSemaphoreDeviceIndices;
11127 uint32_t commandBufferCount;
11128 const uint32_t* pCommandBufferDeviceMasks;
11129 uint32_t signalSemaphoreCount;
11130 const uint32_t* pSignalSemaphoreDeviceIndices;
11131 };
11132 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11133
11134 struct DeviceGroupBindSparseInfoKHX
11135 {
11136 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11137 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11138 , pNext( nullptr )
11139 , resourceDeviceIndex( resourceDeviceIndex_ )
11140 , memoryDeviceIndex( memoryDeviceIndex_ )
11141 {
11142 }
11143
11144 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11145 {
11146 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11147 }
11148
11149 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11150 {
11151 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11152 return *this;
11153 }
11154
11155 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11156 {
11157 pNext = pNext_;
11158 return *this;
11159 }
11160
11161 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11162 {
11163 resourceDeviceIndex = resourceDeviceIndex_;
11164 return *this;
11165 }
11166
11167 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11168 {
11169 memoryDeviceIndex = memoryDeviceIndex_;
11170 return *this;
11171 }
11172
11173 operator const VkDeviceGroupBindSparseInfoKHX&() const
11174 {
11175 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11176 }
11177
11178 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11179 {
11180 return ( sType == rhs.sType )
11181 && ( pNext == rhs.pNext )
11182 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11183 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11184 }
11185
11186 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11187 {
11188 return !operator==( rhs );
11189 }
11190
11191 private:
11192 StructureType sType;
11193
11194 public:
11195 const void* pNext;
11196 uint32_t resourceDeviceIndex;
11197 uint32_t memoryDeviceIndex;
11198 };
11199 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11200
11201 struct ImageSwapchainCreateInfoKHX
11202 {
11203 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11204 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11205 , pNext( nullptr )
11206 , swapchain( swapchain_ )
11207 {
11208 }
11209
11210 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11211 {
11212 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11213 }
11214
11215 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11216 {
11217 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11218 return *this;
11219 }
11220
11221 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11222 {
11223 pNext = pNext_;
11224 return *this;
11225 }
11226
11227 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11228 {
11229 swapchain = swapchain_;
11230 return *this;
11231 }
11232
11233 operator const VkImageSwapchainCreateInfoKHX&() const
11234 {
11235 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11236 }
11237
11238 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11239 {
11240 return ( sType == rhs.sType )
11241 && ( pNext == rhs.pNext )
11242 && ( swapchain == rhs.swapchain );
11243 }
11244
11245 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11246 {
11247 return !operator==( rhs );
11248 }
11249
11250 private:
11251 StructureType sType;
11252
11253 public:
11254 const void* pNext;
11255 SwapchainKHR swapchain;
11256 };
11257 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11258
11259 struct BindImageMemorySwapchainInfoKHX
11260 {
11261 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11262 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11263 , pNext( nullptr )
11264 , swapchain( swapchain_ )
11265 , imageIndex( imageIndex_ )
11266 {
11267 }
11268
11269 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11270 {
11271 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11272 }
11273
11274 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11275 {
11276 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11277 return *this;
11278 }
11279
11280 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11281 {
11282 pNext = pNext_;
11283 return *this;
11284 }
11285
11286 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11287 {
11288 swapchain = swapchain_;
11289 return *this;
11290 }
11291
11292 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11293 {
11294 imageIndex = imageIndex_;
11295 return *this;
11296 }
11297
11298 operator const VkBindImageMemorySwapchainInfoKHX&() const
11299 {
11300 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11301 }
11302
11303 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11304 {
11305 return ( sType == rhs.sType )
11306 && ( pNext == rhs.pNext )
11307 && ( swapchain == rhs.swapchain )
11308 && ( imageIndex == rhs.imageIndex );
11309 }
11310
11311 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11312 {
11313 return !operator==( rhs );
11314 }
11315
11316 private:
11317 StructureType sType;
11318
11319 public:
11320 const void* pNext;
11321 SwapchainKHR swapchain;
11322 uint32_t imageIndex;
11323 };
11324 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11325
11326 struct AcquireNextImageInfoKHX
11327 {
11328 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11329 : sType( StructureType::eAcquireNextImageInfoKHX )
11330 , pNext( nullptr )
11331 , swapchain( swapchain_ )
11332 , timeout( timeout_ )
11333 , semaphore( semaphore_ )
11334 , fence( fence_ )
11335 , deviceMask( deviceMask_ )
11336 {
11337 }
11338
11339 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11340 {
11341 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11342 }
11343
11344 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11345 {
11346 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11347 return *this;
11348 }
11349
11350 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11351 {
11352 pNext = pNext_;
11353 return *this;
11354 }
11355
11356 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11357 {
11358 swapchain = swapchain_;
11359 return *this;
11360 }
11361
11362 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11363 {
11364 timeout = timeout_;
11365 return *this;
11366 }
11367
11368 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11369 {
11370 semaphore = semaphore_;
11371 return *this;
11372 }
11373
11374 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11375 {
11376 fence = fence_;
11377 return *this;
11378 }
11379
11380 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11381 {
11382 deviceMask = deviceMask_;
11383 return *this;
11384 }
11385
11386 operator const VkAcquireNextImageInfoKHX&() const
11387 {
11388 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11389 }
11390
11391 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11392 {
11393 return ( sType == rhs.sType )
11394 && ( pNext == rhs.pNext )
11395 && ( swapchain == rhs.swapchain )
11396 && ( timeout == rhs.timeout )
11397 && ( semaphore == rhs.semaphore )
11398 && ( fence == rhs.fence )
11399 && ( deviceMask == rhs.deviceMask );
11400 }
11401
11402 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11403 {
11404 return !operator==( rhs );
11405 }
11406
11407 private:
11408 StructureType sType;
11409
11410 public:
11411 const void* pNext;
11412 SwapchainKHR swapchain;
11413 uint64_t timeout;
11414 Semaphore semaphore;
11415 Fence fence;
11416 uint32_t deviceMask;
11417 };
11418 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11419
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011420 struct HdrMetadataEXT
11421 {
11422 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 )
11423 : sType( StructureType::eHdrMetadataEXT )
11424 , pNext( nullptr )
11425 , displayPrimaryRed( displayPrimaryRed_ )
11426 , displayPrimaryGreen( displayPrimaryGreen_ )
11427 , displayPrimaryBlue( displayPrimaryBlue_ )
11428 , whitePoint( whitePoint_ )
11429 , maxLuminance( maxLuminance_ )
11430 , minLuminance( minLuminance_ )
11431 , maxContentLightLevel( maxContentLightLevel_ )
11432 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11433 {
11434 }
11435
11436 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11437 {
11438 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11439 }
11440
11441 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11442 {
11443 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11444 return *this;
11445 }
11446
11447 HdrMetadataEXT& setPNext( const void* pNext_ )
11448 {
11449 pNext = pNext_;
11450 return *this;
11451 }
11452
11453 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11454 {
11455 displayPrimaryRed = displayPrimaryRed_;
11456 return *this;
11457 }
11458
11459 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11460 {
11461 displayPrimaryGreen = displayPrimaryGreen_;
11462 return *this;
11463 }
11464
11465 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11466 {
11467 displayPrimaryBlue = displayPrimaryBlue_;
11468 return *this;
11469 }
11470
11471 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11472 {
11473 whitePoint = whitePoint_;
11474 return *this;
11475 }
11476
11477 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11478 {
11479 maxLuminance = maxLuminance_;
11480 return *this;
11481 }
11482
11483 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11484 {
11485 minLuminance = minLuminance_;
11486 return *this;
11487 }
11488
11489 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11490 {
11491 maxContentLightLevel = maxContentLightLevel_;
11492 return *this;
11493 }
11494
11495 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11496 {
11497 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11498 return *this;
11499 }
11500
11501 operator const VkHdrMetadataEXT&() const
11502 {
11503 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11504 }
11505
11506 bool operator==( HdrMetadataEXT const& rhs ) const
11507 {
11508 return ( sType == rhs.sType )
11509 && ( pNext == rhs.pNext )
11510 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11511 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11512 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11513 && ( whitePoint == rhs.whitePoint )
11514 && ( maxLuminance == rhs.maxLuminance )
11515 && ( minLuminance == rhs.minLuminance )
11516 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11517 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11518 }
11519
11520 bool operator!=( HdrMetadataEXT const& rhs ) const
11521 {
11522 return !operator==( rhs );
11523 }
11524
11525 private:
11526 StructureType sType;
11527
11528 public:
11529 const void* pNext;
11530 XYColorEXT displayPrimaryRed;
11531 XYColorEXT displayPrimaryGreen;
11532 XYColorEXT displayPrimaryBlue;
11533 XYColorEXT whitePoint;
11534 float maxLuminance;
11535 float minLuminance;
11536 float maxContentLightLevel;
11537 float maxFrameAverageLightLevel;
11538 };
11539 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11540
11541 struct PresentTimesInfoGOOGLE
11542 {
11543 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11544 : sType( StructureType::ePresentTimesInfoGOOGLE )
11545 , pNext( nullptr )
11546 , swapchainCount( swapchainCount_ )
11547 , pTimes( pTimes_ )
11548 {
11549 }
11550
11551 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11552 {
11553 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11554 }
11555
11556 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11557 {
11558 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11559 return *this;
11560 }
11561
11562 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11563 {
11564 pNext = pNext_;
11565 return *this;
11566 }
11567
11568 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11569 {
11570 swapchainCount = swapchainCount_;
11571 return *this;
11572 }
11573
11574 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11575 {
11576 pTimes = pTimes_;
11577 return *this;
11578 }
11579
11580 operator const VkPresentTimesInfoGOOGLE&() const
11581 {
11582 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11583 }
11584
11585 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11586 {
11587 return ( sType == rhs.sType )
11588 && ( pNext == rhs.pNext )
11589 && ( swapchainCount == rhs.swapchainCount )
11590 && ( pTimes == rhs.pTimes );
11591 }
11592
11593 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11594 {
11595 return !operator==( rhs );
11596 }
11597
11598 private:
11599 StructureType sType;
11600
11601 public:
11602 const void* pNext;
11603 uint32_t swapchainCount;
11604 const PresentTimeGOOGLE* pTimes;
11605 };
11606 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11607
Mark Young0f183a82017-02-28 09:58:04 -070011608#ifdef VK_USE_PLATFORM_IOS_MVK
11609 struct IOSSurfaceCreateInfoMVK
11610 {
11611 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11612 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11613 , pNext( nullptr )
11614 , flags( flags_ )
11615 , pView( pView_ )
11616 {
11617 }
11618
11619 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11620 {
11621 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11622 }
11623
11624 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11625 {
11626 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11627 return *this;
11628 }
11629
11630 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11631 {
11632 pNext = pNext_;
11633 return *this;
11634 }
11635
11636 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11637 {
11638 flags = flags_;
11639 return *this;
11640 }
11641
11642 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11643 {
11644 pView = pView_;
11645 return *this;
11646 }
11647
11648 operator const VkIOSSurfaceCreateInfoMVK&() const
11649 {
11650 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11651 }
11652
11653 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11654 {
11655 return ( sType == rhs.sType )
11656 && ( pNext == rhs.pNext )
11657 && ( flags == rhs.flags )
11658 && ( pView == rhs.pView );
11659 }
11660
11661 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11662 {
11663 return !operator==( rhs );
11664 }
11665
11666 private:
11667 StructureType sType;
11668
11669 public:
11670 const void* pNext;
11671 IOSSurfaceCreateFlagsMVK flags;
11672 const void* pView;
11673 };
11674 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11675#endif /*VK_USE_PLATFORM_IOS_MVK*/
11676
11677#ifdef VK_USE_PLATFORM_MACOS_MVK
11678 struct MacOSSurfaceCreateInfoMVK
11679 {
11680 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11681 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11682 , pNext( nullptr )
11683 , flags( flags_ )
11684 , pView( pView_ )
11685 {
11686 }
11687
11688 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11689 {
11690 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11691 }
11692
11693 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11694 {
11695 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11696 return *this;
11697 }
11698
11699 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11700 {
11701 pNext = pNext_;
11702 return *this;
11703 }
11704
11705 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11706 {
11707 flags = flags_;
11708 return *this;
11709 }
11710
11711 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11712 {
11713 pView = pView_;
11714 return *this;
11715 }
11716
11717 operator const VkMacOSSurfaceCreateInfoMVK&() const
11718 {
11719 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11720 }
11721
11722 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11723 {
11724 return ( sType == rhs.sType )
11725 && ( pNext == rhs.pNext )
11726 && ( flags == rhs.flags )
11727 && ( pView == rhs.pView );
11728 }
11729
11730 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11731 {
11732 return !operator==( rhs );
11733 }
11734
11735 private:
11736 StructureType sType;
11737
11738 public:
11739 const void* pNext;
11740 MacOSSurfaceCreateFlagsMVK flags;
11741 const void* pView;
11742 };
11743 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11744#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11745
11746 struct PipelineViewportWScalingStateCreateInfoNV
11747 {
11748 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11749 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11750 , pNext( nullptr )
11751 , viewportWScalingEnable( viewportWScalingEnable_ )
11752 , viewportCount( viewportCount_ )
11753 , pViewportWScalings( pViewportWScalings_ )
11754 {
11755 }
11756
11757 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11758 {
11759 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11760 }
11761
11762 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11763 {
11764 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11765 return *this;
11766 }
11767
11768 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11769 {
11770 pNext = pNext_;
11771 return *this;
11772 }
11773
11774 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11775 {
11776 viewportWScalingEnable = viewportWScalingEnable_;
11777 return *this;
11778 }
11779
11780 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11781 {
11782 viewportCount = viewportCount_;
11783 return *this;
11784 }
11785
11786 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11787 {
11788 pViewportWScalings = pViewportWScalings_;
11789 return *this;
11790 }
11791
11792 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11793 {
11794 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11795 }
11796
11797 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11798 {
11799 return ( sType == rhs.sType )
11800 && ( pNext == rhs.pNext )
11801 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11802 && ( viewportCount == rhs.viewportCount )
11803 && ( pViewportWScalings == rhs.pViewportWScalings );
11804 }
11805
11806 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11807 {
11808 return !operator==( rhs );
11809 }
11810
11811 private:
11812 StructureType sType;
11813
11814 public:
11815 const void* pNext;
11816 Bool32 viewportWScalingEnable;
11817 uint32_t viewportCount;
11818 const ViewportWScalingNV* pViewportWScalings;
11819 };
11820 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
11821
11822 struct PhysicalDeviceDiscardRectanglePropertiesEXT
11823 {
11824 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
11825 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
11826 , pNext( nullptr )
11827 , maxDiscardRectangles( maxDiscardRectangles_ )
11828 {
11829 }
11830
11831 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11832 {
11833 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11834 }
11835
11836 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
11837 {
11838 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
11839 return *this;
11840 }
11841
11842 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( const void* pNext_ )
11843 {
11844 pNext = pNext_;
11845 return *this;
11846 }
11847
11848 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
11849 {
11850 maxDiscardRectangles = maxDiscardRectangles_;
11851 return *this;
11852 }
11853
11854 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
11855 {
11856 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
11857 }
11858
11859 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11860 {
11861 return ( sType == rhs.sType )
11862 && ( pNext == rhs.pNext )
11863 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
11864 }
11865
11866 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
11867 {
11868 return !operator==( rhs );
11869 }
11870
11871 private:
11872 StructureType sType;
11873
11874 public:
11875 const void* pNext;
11876 uint32_t maxDiscardRectangles;
11877 };
11878 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
11879
11880 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
11881 {
11882 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
11883 {
11884 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
11885 }
11886
11887 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11888 {
11889 return ( sType == rhs.sType )
11890 && ( pNext == rhs.pNext )
11891 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
11892 }
11893
11894 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
11895 {
11896 return !operator==( rhs );
11897 }
11898
11899 private:
11900 StructureType sType;
11901
11902 public:
11903 void* pNext;
11904 Bool32 perViewPositionAllComponents;
11905 };
11906 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
11907
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011908 enum class SubpassContents
11909 {
11910 eInline = VK_SUBPASS_CONTENTS_INLINE,
11911 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
11912 };
11913
11914 struct PresentInfoKHR
11915 {
11916 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 )
11917 : sType( StructureType::ePresentInfoKHR )
11918 , pNext( nullptr )
11919 , waitSemaphoreCount( waitSemaphoreCount_ )
11920 , pWaitSemaphores( pWaitSemaphores_ )
11921 , swapchainCount( swapchainCount_ )
11922 , pSwapchains( pSwapchains_ )
11923 , pImageIndices( pImageIndices_ )
11924 , pResults( pResults_ )
11925 {
11926 }
11927
11928 PresentInfoKHR( VkPresentInfoKHR const & rhs )
11929 {
11930 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11931 }
11932
11933 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
11934 {
11935 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
11936 return *this;
11937 }
11938
Lenny Komowbed9b5c2016-08-11 11:23:15 -060011939 PresentInfoKHR& setPNext( const void* pNext_ )
11940 {
11941 pNext = pNext_;
11942 return *this;
11943 }
11944
11945 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11946 {
11947 waitSemaphoreCount = waitSemaphoreCount_;
11948 return *this;
11949 }
11950
11951 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
11952 {
11953 pWaitSemaphores = pWaitSemaphores_;
11954 return *this;
11955 }
11956
11957 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
11958 {
11959 swapchainCount = swapchainCount_;
11960 return *this;
11961 }
11962
11963 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
11964 {
11965 pSwapchains = pSwapchains_;
11966 return *this;
11967 }
11968
11969 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
11970 {
11971 pImageIndices = pImageIndices_;
11972 return *this;
11973 }
11974
11975 PresentInfoKHR& setPResults( Result* pResults_ )
11976 {
11977 pResults = pResults_;
11978 return *this;
11979 }
11980
11981 operator const VkPresentInfoKHR&() const
11982 {
11983 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
11984 }
11985
11986 bool operator==( PresentInfoKHR const& rhs ) const
11987 {
11988 return ( sType == rhs.sType )
11989 && ( pNext == rhs.pNext )
11990 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11991 && ( pWaitSemaphores == rhs.pWaitSemaphores )
11992 && ( swapchainCount == rhs.swapchainCount )
11993 && ( pSwapchains == rhs.pSwapchains )
11994 && ( pImageIndices == rhs.pImageIndices )
11995 && ( pResults == rhs.pResults );
11996 }
11997
11998 bool operator!=( PresentInfoKHR const& rhs ) const
11999 {
12000 return !operator==( rhs );
12001 }
12002
12003 private:
12004 StructureType sType;
12005
12006 public:
12007 const void* pNext;
12008 uint32_t waitSemaphoreCount;
12009 const Semaphore* pWaitSemaphores;
12010 uint32_t swapchainCount;
12011 const SwapchainKHR* pSwapchains;
12012 const uint32_t* pImageIndices;
12013 Result* pResults;
12014 };
12015 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12016
12017 enum class DynamicState
12018 {
12019 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12020 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12021 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12022 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12023 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12024 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12025 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12026 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012027 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12028 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12029 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012030 };
12031
12032 struct PipelineDynamicStateCreateInfo
12033 {
12034 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12035 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12036 , pNext( nullptr )
12037 , flags( flags_ )
12038 , dynamicStateCount( dynamicStateCount_ )
12039 , pDynamicStates( pDynamicStates_ )
12040 {
12041 }
12042
12043 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12044 {
12045 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12046 }
12047
12048 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12049 {
12050 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12051 return *this;
12052 }
12053
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012054 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12055 {
12056 pNext = pNext_;
12057 return *this;
12058 }
12059
12060 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12061 {
12062 flags = flags_;
12063 return *this;
12064 }
12065
12066 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12067 {
12068 dynamicStateCount = dynamicStateCount_;
12069 return *this;
12070 }
12071
12072 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12073 {
12074 pDynamicStates = pDynamicStates_;
12075 return *this;
12076 }
12077
12078 operator const VkPipelineDynamicStateCreateInfo&() const
12079 {
12080 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12081 }
12082
12083 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12084 {
12085 return ( sType == rhs.sType )
12086 && ( pNext == rhs.pNext )
12087 && ( flags == rhs.flags )
12088 && ( dynamicStateCount == rhs.dynamicStateCount )
12089 && ( pDynamicStates == rhs.pDynamicStates );
12090 }
12091
12092 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12093 {
12094 return !operator==( rhs );
12095 }
12096
12097 private:
12098 StructureType sType;
12099
12100 public:
12101 const void* pNext;
12102 PipelineDynamicStateCreateFlags flags;
12103 uint32_t dynamicStateCount;
12104 const DynamicState* pDynamicStates;
12105 };
12106 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12107
Mark Young0f183a82017-02-28 09:58:04 -070012108 enum class DescriptorUpdateTemplateTypeKHR
12109 {
12110 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12111 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12112 };
12113
12114 struct DescriptorUpdateTemplateCreateInfoKHR
12115 {
12116 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 )
12117 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12118 , pNext( nullptr )
12119 , flags( flags_ )
12120 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12121 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12122 , templateType( templateType_ )
12123 , descriptorSetLayout( descriptorSetLayout_ )
12124 , pipelineBindPoint( pipelineBindPoint_ )
12125 , pipelineLayout( pipelineLayout_ )
12126 , set( set_ )
12127 {
12128 }
12129
12130 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12131 {
12132 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12133 }
12134
12135 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12136 {
12137 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12138 return *this;
12139 }
12140
12141 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12142 {
12143 pNext = pNext_;
12144 return *this;
12145 }
12146
12147 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12148 {
12149 flags = flags_;
12150 return *this;
12151 }
12152
12153 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12154 {
12155 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12156 return *this;
12157 }
12158
12159 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12160 {
12161 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12162 return *this;
12163 }
12164
12165 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12166 {
12167 templateType = templateType_;
12168 return *this;
12169 }
12170
12171 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12172 {
12173 descriptorSetLayout = descriptorSetLayout_;
12174 return *this;
12175 }
12176
12177 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12178 {
12179 pipelineBindPoint = pipelineBindPoint_;
12180 return *this;
12181 }
12182
12183 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12184 {
12185 pipelineLayout = pipelineLayout_;
12186 return *this;
12187 }
12188
12189 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12190 {
12191 set = set_;
12192 return *this;
12193 }
12194
12195 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12196 {
12197 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12198 }
12199
12200 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12201 {
12202 return ( sType == rhs.sType )
12203 && ( pNext == rhs.pNext )
12204 && ( flags == rhs.flags )
12205 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12206 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12207 && ( templateType == rhs.templateType )
12208 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12209 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12210 && ( pipelineLayout == rhs.pipelineLayout )
12211 && ( set == rhs.set );
12212 }
12213
12214 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12215 {
12216 return !operator==( rhs );
12217 }
12218
12219 private:
12220 StructureType sType;
12221
12222 public:
12223 void* pNext;
12224 DescriptorUpdateTemplateCreateFlagsKHR flags;
12225 uint32_t descriptorUpdateEntryCount;
12226 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12227 DescriptorUpdateTemplateTypeKHR templateType;
12228 DescriptorSetLayout descriptorSetLayout;
12229 PipelineBindPoint pipelineBindPoint;
12230 PipelineLayout pipelineLayout;
12231 uint32_t set;
12232 };
12233 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12234
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012235 enum class QueueFlagBits
12236 {
12237 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12238 eCompute = VK_QUEUE_COMPUTE_BIT,
12239 eTransfer = VK_QUEUE_TRANSFER_BIT,
12240 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12241 };
12242
12243 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12244
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012245 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012246 {
12247 return QueueFlags( bit0 ) | bit1;
12248 }
12249
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012250 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12251 {
12252 return ~( QueueFlags( bits ) );
12253 }
12254
12255 template <> struct FlagTraits<QueueFlagBits>
12256 {
12257 enum
12258 {
12259 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12260 };
12261 };
12262
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012263 struct QueueFamilyProperties
12264 {
12265 operator const VkQueueFamilyProperties&() const
12266 {
12267 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12268 }
12269
12270 bool operator==( QueueFamilyProperties const& rhs ) const
12271 {
12272 return ( queueFlags == rhs.queueFlags )
12273 && ( queueCount == rhs.queueCount )
12274 && ( timestampValidBits == rhs.timestampValidBits )
12275 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12276 }
12277
12278 bool operator!=( QueueFamilyProperties const& rhs ) const
12279 {
12280 return !operator==( rhs );
12281 }
12282
12283 QueueFlags queueFlags;
12284 uint32_t queueCount;
12285 uint32_t timestampValidBits;
12286 Extent3D minImageTransferGranularity;
12287 };
12288 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12289
Mark Young39389872017-01-19 21:10:49 -070012290 struct QueueFamilyProperties2KHR
12291 {
12292 operator const VkQueueFamilyProperties2KHR&() const
12293 {
12294 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12295 }
12296
12297 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12298 {
12299 return ( sType == rhs.sType )
12300 && ( pNext == rhs.pNext )
12301 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12302 }
12303
12304 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12305 {
12306 return !operator==( rhs );
12307 }
12308
12309 private:
12310 StructureType sType;
12311
12312 public:
12313 void* pNext;
12314 QueueFamilyProperties queueFamilyProperties;
12315 };
12316 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12317
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012318 enum class MemoryPropertyFlagBits
12319 {
12320 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12321 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12322 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12323 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12324 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12325 };
12326
12327 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012329 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012330 {
12331 return MemoryPropertyFlags( bit0 ) | bit1;
12332 }
12333
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012334 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12335 {
12336 return ~( MemoryPropertyFlags( bits ) );
12337 }
12338
12339 template <> struct FlagTraits<MemoryPropertyFlagBits>
12340 {
12341 enum
12342 {
12343 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12344 };
12345 };
12346
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012347 struct MemoryType
12348 {
12349 operator const VkMemoryType&() const
12350 {
12351 return *reinterpret_cast<const VkMemoryType*>(this);
12352 }
12353
12354 bool operator==( MemoryType const& rhs ) const
12355 {
12356 return ( propertyFlags == rhs.propertyFlags )
12357 && ( heapIndex == rhs.heapIndex );
12358 }
12359
12360 bool operator!=( MemoryType const& rhs ) const
12361 {
12362 return !operator==( rhs );
12363 }
12364
12365 MemoryPropertyFlags propertyFlags;
12366 uint32_t heapIndex;
12367 };
12368 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12369
12370 enum class MemoryHeapFlagBits
12371 {
Mark Young0f183a82017-02-28 09:58:04 -070012372 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12373 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012374 };
12375
12376 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12377
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012378 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012379 {
12380 return MemoryHeapFlags( bit0 ) | bit1;
12381 }
12382
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012383 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12384 {
12385 return ~( MemoryHeapFlags( bits ) );
12386 }
12387
12388 template <> struct FlagTraits<MemoryHeapFlagBits>
12389 {
12390 enum
12391 {
Mark Young0f183a82017-02-28 09:58:04 -070012392 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012393 };
12394 };
12395
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012396 struct MemoryHeap
12397 {
12398 operator const VkMemoryHeap&() const
12399 {
12400 return *reinterpret_cast<const VkMemoryHeap*>(this);
12401 }
12402
12403 bool operator==( MemoryHeap const& rhs ) const
12404 {
12405 return ( size == rhs.size )
12406 && ( flags == rhs.flags );
12407 }
12408
12409 bool operator!=( MemoryHeap const& rhs ) const
12410 {
12411 return !operator==( rhs );
12412 }
12413
12414 DeviceSize size;
12415 MemoryHeapFlags flags;
12416 };
12417 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12418
12419 struct PhysicalDeviceMemoryProperties
12420 {
12421 operator const VkPhysicalDeviceMemoryProperties&() const
12422 {
12423 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12424 }
12425
12426 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12427 {
12428 return ( memoryTypeCount == rhs.memoryTypeCount )
12429 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12430 && ( memoryHeapCount == rhs.memoryHeapCount )
12431 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12432 }
12433
12434 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12435 {
12436 return !operator==( rhs );
12437 }
12438
12439 uint32_t memoryTypeCount;
12440 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12441 uint32_t memoryHeapCount;
12442 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12443 };
12444 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12445
Mark Young39389872017-01-19 21:10:49 -070012446 struct PhysicalDeviceMemoryProperties2KHR
12447 {
12448 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12449 {
12450 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12451 }
12452
12453 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12454 {
12455 return ( sType == rhs.sType )
12456 && ( pNext == rhs.pNext )
12457 && ( memoryProperties == rhs.memoryProperties );
12458 }
12459
12460 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12461 {
12462 return !operator==( rhs );
12463 }
12464
12465 private:
12466 StructureType sType;
12467
12468 public:
12469 void* pNext;
12470 PhysicalDeviceMemoryProperties memoryProperties;
12471 };
12472 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12473
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012474 enum class AccessFlagBits
12475 {
12476 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12477 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12478 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12479 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12480 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12481 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12482 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12483 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12484 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12485 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12486 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12487 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12488 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12489 eHostRead = VK_ACCESS_HOST_READ_BIT,
12490 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12491 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012492 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12493 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12494 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012495 };
12496
12497 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012499 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012500 {
12501 return AccessFlags( bit0 ) | bit1;
12502 }
12503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012504 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12505 {
12506 return ~( AccessFlags( bits ) );
12507 }
12508
12509 template <> struct FlagTraits<AccessFlagBits>
12510 {
12511 enum
12512 {
12513 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)
12514 };
12515 };
12516
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012517 struct MemoryBarrier
12518 {
12519 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12520 : sType( StructureType::eMemoryBarrier )
12521 , pNext( nullptr )
12522 , srcAccessMask( srcAccessMask_ )
12523 , dstAccessMask( dstAccessMask_ )
12524 {
12525 }
12526
12527 MemoryBarrier( VkMemoryBarrier const & rhs )
12528 {
12529 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12530 }
12531
12532 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12533 {
12534 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12535 return *this;
12536 }
12537
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012538 MemoryBarrier& setPNext( const void* pNext_ )
12539 {
12540 pNext = pNext_;
12541 return *this;
12542 }
12543
12544 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12545 {
12546 srcAccessMask = srcAccessMask_;
12547 return *this;
12548 }
12549
12550 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12551 {
12552 dstAccessMask = dstAccessMask_;
12553 return *this;
12554 }
12555
12556 operator const VkMemoryBarrier&() const
12557 {
12558 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12559 }
12560
12561 bool operator==( MemoryBarrier const& rhs ) const
12562 {
12563 return ( sType == rhs.sType )
12564 && ( pNext == rhs.pNext )
12565 && ( srcAccessMask == rhs.srcAccessMask )
12566 && ( dstAccessMask == rhs.dstAccessMask );
12567 }
12568
12569 bool operator!=( MemoryBarrier const& rhs ) const
12570 {
12571 return !operator==( rhs );
12572 }
12573
12574 private:
12575 StructureType sType;
12576
12577 public:
12578 const void* pNext;
12579 AccessFlags srcAccessMask;
12580 AccessFlags dstAccessMask;
12581 };
12582 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12583
12584 struct BufferMemoryBarrier
12585 {
12586 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12587 : sType( StructureType::eBufferMemoryBarrier )
12588 , pNext( nullptr )
12589 , srcAccessMask( srcAccessMask_ )
12590 , dstAccessMask( dstAccessMask_ )
12591 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12592 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12593 , buffer( buffer_ )
12594 , offset( offset_ )
12595 , size( size_ )
12596 {
12597 }
12598
12599 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12600 {
12601 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12602 }
12603
12604 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12605 {
12606 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12607 return *this;
12608 }
12609
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012610 BufferMemoryBarrier& setPNext( const void* pNext_ )
12611 {
12612 pNext = pNext_;
12613 return *this;
12614 }
12615
12616 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12617 {
12618 srcAccessMask = srcAccessMask_;
12619 return *this;
12620 }
12621
12622 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12623 {
12624 dstAccessMask = dstAccessMask_;
12625 return *this;
12626 }
12627
12628 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12629 {
12630 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12631 return *this;
12632 }
12633
12634 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12635 {
12636 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12637 return *this;
12638 }
12639
12640 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12641 {
12642 buffer = buffer_;
12643 return *this;
12644 }
12645
12646 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12647 {
12648 offset = offset_;
12649 return *this;
12650 }
12651
12652 BufferMemoryBarrier& setSize( DeviceSize size_ )
12653 {
12654 size = size_;
12655 return *this;
12656 }
12657
12658 operator const VkBufferMemoryBarrier&() const
12659 {
12660 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12661 }
12662
12663 bool operator==( BufferMemoryBarrier const& rhs ) const
12664 {
12665 return ( sType == rhs.sType )
12666 && ( pNext == rhs.pNext )
12667 && ( srcAccessMask == rhs.srcAccessMask )
12668 && ( dstAccessMask == rhs.dstAccessMask )
12669 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12670 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12671 && ( buffer == rhs.buffer )
12672 && ( offset == rhs.offset )
12673 && ( size == rhs.size );
12674 }
12675
12676 bool operator!=( BufferMemoryBarrier const& rhs ) const
12677 {
12678 return !operator==( rhs );
12679 }
12680
12681 private:
12682 StructureType sType;
12683
12684 public:
12685 const void* pNext;
12686 AccessFlags srcAccessMask;
12687 AccessFlags dstAccessMask;
12688 uint32_t srcQueueFamilyIndex;
12689 uint32_t dstQueueFamilyIndex;
12690 Buffer buffer;
12691 DeviceSize offset;
12692 DeviceSize size;
12693 };
12694 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12695
12696 enum class BufferUsageFlagBits
12697 {
12698 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12699 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12700 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12701 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12702 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12703 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12704 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12705 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12706 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12707 };
12708
12709 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12710
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012711 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012712 {
12713 return BufferUsageFlags( bit0 ) | bit1;
12714 }
12715
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012716 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12717 {
12718 return ~( BufferUsageFlags( bits ) );
12719 }
12720
12721 template <> struct FlagTraits<BufferUsageFlagBits>
12722 {
12723 enum
12724 {
12725 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)
12726 };
12727 };
12728
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012729 enum class BufferCreateFlagBits
12730 {
12731 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
12732 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
12733 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
12734 };
12735
12736 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
12737
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012738 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012739 {
12740 return BufferCreateFlags( bit0 ) | bit1;
12741 }
12742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012743 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
12744 {
12745 return ~( BufferCreateFlags( bits ) );
12746 }
12747
12748 template <> struct FlagTraits<BufferCreateFlagBits>
12749 {
12750 enum
12751 {
12752 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
12753 };
12754 };
12755
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012756 struct BufferCreateInfo
12757 {
12758 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
12759 : sType( StructureType::eBufferCreateInfo )
12760 , pNext( nullptr )
12761 , flags( flags_ )
12762 , size( size_ )
12763 , usage( usage_ )
12764 , sharingMode( sharingMode_ )
12765 , queueFamilyIndexCount( queueFamilyIndexCount_ )
12766 , pQueueFamilyIndices( pQueueFamilyIndices_ )
12767 {
12768 }
12769
12770 BufferCreateInfo( VkBufferCreateInfo const & rhs )
12771 {
12772 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12773 }
12774
12775 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
12776 {
12777 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12778 return *this;
12779 }
12780
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012781 BufferCreateInfo& setPNext( const void* pNext_ )
12782 {
12783 pNext = pNext_;
12784 return *this;
12785 }
12786
12787 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
12788 {
12789 flags = flags_;
12790 return *this;
12791 }
12792
12793 BufferCreateInfo& setSize( DeviceSize size_ )
12794 {
12795 size = size_;
12796 return *this;
12797 }
12798
12799 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
12800 {
12801 usage = usage_;
12802 return *this;
12803 }
12804
12805 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
12806 {
12807 sharingMode = sharingMode_;
12808 return *this;
12809 }
12810
12811 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
12812 {
12813 queueFamilyIndexCount = queueFamilyIndexCount_;
12814 return *this;
12815 }
12816
12817 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
12818 {
12819 pQueueFamilyIndices = pQueueFamilyIndices_;
12820 return *this;
12821 }
12822
12823 operator const VkBufferCreateInfo&() const
12824 {
12825 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
12826 }
12827
12828 bool operator==( BufferCreateInfo const& rhs ) const
12829 {
12830 return ( sType == rhs.sType )
12831 && ( pNext == rhs.pNext )
12832 && ( flags == rhs.flags )
12833 && ( size == rhs.size )
12834 && ( usage == rhs.usage )
12835 && ( sharingMode == rhs.sharingMode )
12836 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
12837 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
12838 }
12839
12840 bool operator!=( BufferCreateInfo const& rhs ) const
12841 {
12842 return !operator==( rhs );
12843 }
12844
12845 private:
12846 StructureType sType;
12847
12848 public:
12849 const void* pNext;
12850 BufferCreateFlags flags;
12851 DeviceSize size;
12852 BufferUsageFlags usage;
12853 SharingMode sharingMode;
12854 uint32_t queueFamilyIndexCount;
12855 const uint32_t* pQueueFamilyIndices;
12856 };
12857 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
12858
12859 enum class ShaderStageFlagBits
12860 {
12861 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
12862 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
12863 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
12864 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
12865 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
12866 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
12867 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
12868 eAll = VK_SHADER_STAGE_ALL
12869 };
12870
12871 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
12872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012873 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012874 {
12875 return ShaderStageFlags( bit0 ) | bit1;
12876 }
12877
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012878 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
12879 {
12880 return ~( ShaderStageFlags( bits ) );
12881 }
12882
12883 template <> struct FlagTraits<ShaderStageFlagBits>
12884 {
12885 enum
12886 {
12887 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)
12888 };
12889 };
12890
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012891 struct DescriptorSetLayoutBinding
12892 {
12893 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
12894 : binding( binding_ )
12895 , descriptorType( descriptorType_ )
12896 , descriptorCount( descriptorCount_ )
12897 , stageFlags( stageFlags_ )
12898 , pImmutableSamplers( pImmutableSamplers_ )
12899 {
12900 }
12901
12902 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
12903 {
12904 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12905 }
12906
12907 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
12908 {
12909 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
12910 return *this;
12911 }
12912
12913 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
12914 {
12915 binding = binding_;
12916 return *this;
12917 }
12918
12919 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
12920 {
12921 descriptorType = descriptorType_;
12922 return *this;
12923 }
12924
12925 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
12926 {
12927 descriptorCount = descriptorCount_;
12928 return *this;
12929 }
12930
12931 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
12932 {
12933 stageFlags = stageFlags_;
12934 return *this;
12935 }
12936
12937 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
12938 {
12939 pImmutableSamplers = pImmutableSamplers_;
12940 return *this;
12941 }
12942
12943 operator const VkDescriptorSetLayoutBinding&() const
12944 {
12945 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
12946 }
12947
12948 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
12949 {
12950 return ( binding == rhs.binding )
12951 && ( descriptorType == rhs.descriptorType )
12952 && ( descriptorCount == rhs.descriptorCount )
12953 && ( stageFlags == rhs.stageFlags )
12954 && ( pImmutableSamplers == rhs.pImmutableSamplers );
12955 }
12956
12957 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
12958 {
12959 return !operator==( rhs );
12960 }
12961
12962 uint32_t binding;
12963 DescriptorType descriptorType;
12964 uint32_t descriptorCount;
12965 ShaderStageFlags stageFlags;
12966 const Sampler* pImmutableSamplers;
12967 };
12968 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
12969
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012970 struct PipelineShaderStageCreateInfo
12971 {
12972 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
12973 : sType( StructureType::ePipelineShaderStageCreateInfo )
12974 , pNext( nullptr )
12975 , flags( flags_ )
12976 , stage( stage_ )
12977 , module( module_ )
12978 , pName( pName_ )
12979 , pSpecializationInfo( pSpecializationInfo_ )
12980 {
12981 }
12982
12983 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
12984 {
12985 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12986 }
12987
12988 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
12989 {
12990 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
12991 return *this;
12992 }
12993
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012994 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
12995 {
12996 pNext = pNext_;
12997 return *this;
12998 }
12999
13000 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13001 {
13002 flags = flags_;
13003 return *this;
13004 }
13005
13006 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13007 {
13008 stage = stage_;
13009 return *this;
13010 }
13011
13012 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13013 {
13014 module = module_;
13015 return *this;
13016 }
13017
13018 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13019 {
13020 pName = pName_;
13021 return *this;
13022 }
13023
13024 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13025 {
13026 pSpecializationInfo = pSpecializationInfo_;
13027 return *this;
13028 }
13029
13030 operator const VkPipelineShaderStageCreateInfo&() const
13031 {
13032 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13033 }
13034
13035 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13036 {
13037 return ( sType == rhs.sType )
13038 && ( pNext == rhs.pNext )
13039 && ( flags == rhs.flags )
13040 && ( stage == rhs.stage )
13041 && ( module == rhs.module )
13042 && ( pName == rhs.pName )
13043 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13044 }
13045
13046 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13047 {
13048 return !operator==( rhs );
13049 }
13050
13051 private:
13052 StructureType sType;
13053
13054 public:
13055 const void* pNext;
13056 PipelineShaderStageCreateFlags flags;
13057 ShaderStageFlagBits stage;
13058 ShaderModule module;
13059 const char* pName;
13060 const SpecializationInfo* pSpecializationInfo;
13061 };
13062 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13063
13064 struct PushConstantRange
13065 {
13066 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13067 : stageFlags( stageFlags_ )
13068 , offset( offset_ )
13069 , size( size_ )
13070 {
13071 }
13072
13073 PushConstantRange( VkPushConstantRange const & rhs )
13074 {
13075 memcpy( this, &rhs, sizeof(PushConstantRange) );
13076 }
13077
13078 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13079 {
13080 memcpy( this, &rhs, sizeof(PushConstantRange) );
13081 return *this;
13082 }
13083
13084 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13085 {
13086 stageFlags = stageFlags_;
13087 return *this;
13088 }
13089
13090 PushConstantRange& setOffset( uint32_t offset_ )
13091 {
13092 offset = offset_;
13093 return *this;
13094 }
13095
13096 PushConstantRange& setSize( uint32_t size_ )
13097 {
13098 size = size_;
13099 return *this;
13100 }
13101
13102 operator const VkPushConstantRange&() const
13103 {
13104 return *reinterpret_cast<const VkPushConstantRange*>(this);
13105 }
13106
13107 bool operator==( PushConstantRange const& rhs ) const
13108 {
13109 return ( stageFlags == rhs.stageFlags )
13110 && ( offset == rhs.offset )
13111 && ( size == rhs.size );
13112 }
13113
13114 bool operator!=( PushConstantRange const& rhs ) const
13115 {
13116 return !operator==( rhs );
13117 }
13118
13119 ShaderStageFlags stageFlags;
13120 uint32_t offset;
13121 uint32_t size;
13122 };
13123 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13124
13125 struct PipelineLayoutCreateInfo
13126 {
13127 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13128 : sType( StructureType::ePipelineLayoutCreateInfo )
13129 , pNext( nullptr )
13130 , flags( flags_ )
13131 , setLayoutCount( setLayoutCount_ )
13132 , pSetLayouts( pSetLayouts_ )
13133 , pushConstantRangeCount( pushConstantRangeCount_ )
13134 , pPushConstantRanges( pPushConstantRanges_ )
13135 {
13136 }
13137
13138 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13139 {
13140 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13141 }
13142
13143 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13144 {
13145 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13146 return *this;
13147 }
13148
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013149 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13150 {
13151 pNext = pNext_;
13152 return *this;
13153 }
13154
13155 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13156 {
13157 flags = flags_;
13158 return *this;
13159 }
13160
13161 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13162 {
13163 setLayoutCount = setLayoutCount_;
13164 return *this;
13165 }
13166
13167 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13168 {
13169 pSetLayouts = pSetLayouts_;
13170 return *this;
13171 }
13172
13173 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13174 {
13175 pushConstantRangeCount = pushConstantRangeCount_;
13176 return *this;
13177 }
13178
13179 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13180 {
13181 pPushConstantRanges = pPushConstantRanges_;
13182 return *this;
13183 }
13184
13185 operator const VkPipelineLayoutCreateInfo&() const
13186 {
13187 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13188 }
13189
13190 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13191 {
13192 return ( sType == rhs.sType )
13193 && ( pNext == rhs.pNext )
13194 && ( flags == rhs.flags )
13195 && ( setLayoutCount == rhs.setLayoutCount )
13196 && ( pSetLayouts == rhs.pSetLayouts )
13197 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13198 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13199 }
13200
13201 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13202 {
13203 return !operator==( rhs );
13204 }
13205
13206 private:
13207 StructureType sType;
13208
13209 public:
13210 const void* pNext;
13211 PipelineLayoutCreateFlags flags;
13212 uint32_t setLayoutCount;
13213 const DescriptorSetLayout* pSetLayouts;
13214 uint32_t pushConstantRangeCount;
13215 const PushConstantRange* pPushConstantRanges;
13216 };
13217 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13218
13219 enum class ImageUsageFlagBits
13220 {
13221 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13222 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13223 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13224 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13225 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13226 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13227 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13228 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13229 };
13230
13231 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013233 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013234 {
13235 return ImageUsageFlags( bit0 ) | bit1;
13236 }
13237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013238 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13239 {
13240 return ~( ImageUsageFlags( bits ) );
13241 }
13242
13243 template <> struct FlagTraits<ImageUsageFlagBits>
13244 {
13245 enum
13246 {
13247 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)
13248 };
13249 };
13250
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013251 enum class ImageCreateFlagBits
13252 {
13253 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13254 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13255 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13256 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013257 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013258 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013259 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013260 };
13261
13262 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13263
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013264 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013265 {
13266 return ImageCreateFlags( bit0 ) | bit1;
13267 }
13268
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013269 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13270 {
13271 return ~( ImageCreateFlags( bits ) );
13272 }
13273
13274 template <> struct FlagTraits<ImageCreateFlagBits>
13275 {
13276 enum
13277 {
Mark Young0f183a82017-02-28 09:58:04 -070013278 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 -070013279 };
13280 };
13281
Mark Young39389872017-01-19 21:10:49 -070013282 struct PhysicalDeviceImageFormatInfo2KHR
13283 {
13284 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13285 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13286 , pNext( nullptr )
13287 , format( format_ )
13288 , type( type_ )
13289 , tiling( tiling_ )
13290 , usage( usage_ )
13291 , flags( flags_ )
13292 {
13293 }
13294
13295 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13296 {
13297 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13298 }
13299
13300 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13301 {
13302 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13303 return *this;
13304 }
13305
Mark Young39389872017-01-19 21:10:49 -070013306 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13307 {
13308 pNext = pNext_;
13309 return *this;
13310 }
13311
13312 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13313 {
13314 format = format_;
13315 return *this;
13316 }
13317
13318 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13319 {
13320 type = type_;
13321 return *this;
13322 }
13323
13324 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13325 {
13326 tiling = tiling_;
13327 return *this;
13328 }
13329
13330 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13331 {
13332 usage = usage_;
13333 return *this;
13334 }
13335
13336 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13337 {
13338 flags = flags_;
13339 return *this;
13340 }
13341
13342 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13343 {
13344 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13345 }
13346
13347 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13348 {
13349 return ( sType == rhs.sType )
13350 && ( pNext == rhs.pNext )
13351 && ( format == rhs.format )
13352 && ( type == rhs.type )
13353 && ( tiling == rhs.tiling )
13354 && ( usage == rhs.usage )
13355 && ( flags == rhs.flags );
13356 }
13357
13358 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13359 {
13360 return !operator==( rhs );
13361 }
13362
13363 private:
13364 StructureType sType;
13365
13366 public:
13367 const void* pNext;
13368 Format format;
13369 ImageType type;
13370 ImageTiling tiling;
13371 ImageUsageFlags usage;
13372 ImageCreateFlags flags;
13373 };
13374 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13375
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013376 enum class PipelineCreateFlagBits
13377 {
13378 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13379 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013380 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13381 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13382 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013383 };
13384
13385 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13386
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013387 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013388 {
13389 return PipelineCreateFlags( bit0 ) | bit1;
13390 }
13391
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013392 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13393 {
13394 return ~( PipelineCreateFlags( bits ) );
13395 }
13396
13397 template <> struct FlagTraits<PipelineCreateFlagBits>
13398 {
13399 enum
13400 {
Mark Young0f183a82017-02-28 09:58:04 -070013401 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013402 };
13403 };
13404
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013405 struct ComputePipelineCreateInfo
13406 {
13407 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13408 : sType( StructureType::eComputePipelineCreateInfo )
13409 , pNext( nullptr )
13410 , flags( flags_ )
13411 , stage( stage_ )
13412 , layout( layout_ )
13413 , basePipelineHandle( basePipelineHandle_ )
13414 , basePipelineIndex( basePipelineIndex_ )
13415 {
13416 }
13417
13418 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13419 {
13420 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13421 }
13422
13423 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13424 {
13425 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13426 return *this;
13427 }
13428
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013429 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13430 {
13431 pNext = pNext_;
13432 return *this;
13433 }
13434
13435 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13436 {
13437 flags = flags_;
13438 return *this;
13439 }
13440
13441 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13442 {
13443 stage = stage_;
13444 return *this;
13445 }
13446
13447 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13448 {
13449 layout = layout_;
13450 return *this;
13451 }
13452
13453 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13454 {
13455 basePipelineHandle = basePipelineHandle_;
13456 return *this;
13457 }
13458
13459 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13460 {
13461 basePipelineIndex = basePipelineIndex_;
13462 return *this;
13463 }
13464
13465 operator const VkComputePipelineCreateInfo&() const
13466 {
13467 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13468 }
13469
13470 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13471 {
13472 return ( sType == rhs.sType )
13473 && ( pNext == rhs.pNext )
13474 && ( flags == rhs.flags )
13475 && ( stage == rhs.stage )
13476 && ( layout == rhs.layout )
13477 && ( basePipelineHandle == rhs.basePipelineHandle )
13478 && ( basePipelineIndex == rhs.basePipelineIndex );
13479 }
13480
13481 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13482 {
13483 return !operator==( rhs );
13484 }
13485
13486 private:
13487 StructureType sType;
13488
13489 public:
13490 const void* pNext;
13491 PipelineCreateFlags flags;
13492 PipelineShaderStageCreateInfo stage;
13493 PipelineLayout layout;
13494 Pipeline basePipelineHandle;
13495 int32_t basePipelineIndex;
13496 };
13497 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13498
13499 enum class ColorComponentFlagBits
13500 {
13501 eR = VK_COLOR_COMPONENT_R_BIT,
13502 eG = VK_COLOR_COMPONENT_G_BIT,
13503 eB = VK_COLOR_COMPONENT_B_BIT,
13504 eA = VK_COLOR_COMPONENT_A_BIT
13505 };
13506
13507 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013509 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013510 {
13511 return ColorComponentFlags( bit0 ) | bit1;
13512 }
13513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013514 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13515 {
13516 return ~( ColorComponentFlags( bits ) );
13517 }
13518
13519 template <> struct FlagTraits<ColorComponentFlagBits>
13520 {
13521 enum
13522 {
13523 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13524 };
13525 };
13526
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013527 struct PipelineColorBlendAttachmentState
13528 {
13529 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() )
13530 : blendEnable( blendEnable_ )
13531 , srcColorBlendFactor( srcColorBlendFactor_ )
13532 , dstColorBlendFactor( dstColorBlendFactor_ )
13533 , colorBlendOp( colorBlendOp_ )
13534 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13535 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13536 , alphaBlendOp( alphaBlendOp_ )
13537 , colorWriteMask( colorWriteMask_ )
13538 {
13539 }
13540
13541 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13542 {
13543 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13544 }
13545
13546 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13547 {
13548 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13549 return *this;
13550 }
13551
13552 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13553 {
13554 blendEnable = blendEnable_;
13555 return *this;
13556 }
13557
13558 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13559 {
13560 srcColorBlendFactor = srcColorBlendFactor_;
13561 return *this;
13562 }
13563
13564 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13565 {
13566 dstColorBlendFactor = dstColorBlendFactor_;
13567 return *this;
13568 }
13569
13570 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13571 {
13572 colorBlendOp = colorBlendOp_;
13573 return *this;
13574 }
13575
13576 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13577 {
13578 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13579 return *this;
13580 }
13581
13582 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13583 {
13584 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13585 return *this;
13586 }
13587
13588 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13589 {
13590 alphaBlendOp = alphaBlendOp_;
13591 return *this;
13592 }
13593
13594 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13595 {
13596 colorWriteMask = colorWriteMask_;
13597 return *this;
13598 }
13599
13600 operator const VkPipelineColorBlendAttachmentState&() const
13601 {
13602 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13603 }
13604
13605 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13606 {
13607 return ( blendEnable == rhs.blendEnable )
13608 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13609 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13610 && ( colorBlendOp == rhs.colorBlendOp )
13611 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13612 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13613 && ( alphaBlendOp == rhs.alphaBlendOp )
13614 && ( colorWriteMask == rhs.colorWriteMask );
13615 }
13616
13617 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13618 {
13619 return !operator==( rhs );
13620 }
13621
13622 Bool32 blendEnable;
13623 BlendFactor srcColorBlendFactor;
13624 BlendFactor dstColorBlendFactor;
13625 BlendOp colorBlendOp;
13626 BlendFactor srcAlphaBlendFactor;
13627 BlendFactor dstAlphaBlendFactor;
13628 BlendOp alphaBlendOp;
13629 ColorComponentFlags colorWriteMask;
13630 };
13631 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13632
13633 struct PipelineColorBlendStateCreateInfo
13634 {
13635 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 } } )
13636 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13637 , pNext( nullptr )
13638 , flags( flags_ )
13639 , logicOpEnable( logicOpEnable_ )
13640 , logicOp( logicOp_ )
13641 , attachmentCount( attachmentCount_ )
13642 , pAttachments( pAttachments_ )
13643 {
13644 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13645 }
13646
13647 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13648 {
13649 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13650 }
13651
13652 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13653 {
13654 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13655 return *this;
13656 }
13657
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013658 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13659 {
13660 pNext = pNext_;
13661 return *this;
13662 }
13663
13664 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13665 {
13666 flags = flags_;
13667 return *this;
13668 }
13669
13670 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13671 {
13672 logicOpEnable = logicOpEnable_;
13673 return *this;
13674 }
13675
13676 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13677 {
13678 logicOp = logicOp_;
13679 return *this;
13680 }
13681
13682 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13683 {
13684 attachmentCount = attachmentCount_;
13685 return *this;
13686 }
13687
13688 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13689 {
13690 pAttachments = pAttachments_;
13691 return *this;
13692 }
13693
13694 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
13695 {
13696 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13697 return *this;
13698 }
13699
13700 operator const VkPipelineColorBlendStateCreateInfo&() const
13701 {
13702 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
13703 }
13704
13705 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
13706 {
13707 return ( sType == rhs.sType )
13708 && ( pNext == rhs.pNext )
13709 && ( flags == rhs.flags )
13710 && ( logicOpEnable == rhs.logicOpEnable )
13711 && ( logicOp == rhs.logicOp )
13712 && ( attachmentCount == rhs.attachmentCount )
13713 && ( pAttachments == rhs.pAttachments )
13714 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
13715 }
13716
13717 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
13718 {
13719 return !operator==( rhs );
13720 }
13721
13722 private:
13723 StructureType sType;
13724
13725 public:
13726 const void* pNext;
13727 PipelineColorBlendStateCreateFlags flags;
13728 Bool32 logicOpEnable;
13729 LogicOp logicOp;
13730 uint32_t attachmentCount;
13731 const PipelineColorBlendAttachmentState* pAttachments;
13732 float blendConstants[4];
13733 };
13734 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
13735
13736 enum class FenceCreateFlagBits
13737 {
13738 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
13739 };
13740
13741 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
13742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013743 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013744 {
13745 return FenceCreateFlags( bit0 ) | bit1;
13746 }
13747
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013748 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
13749 {
13750 return ~( FenceCreateFlags( bits ) );
13751 }
13752
13753 template <> struct FlagTraits<FenceCreateFlagBits>
13754 {
13755 enum
13756 {
13757 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
13758 };
13759 };
13760
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013761 struct FenceCreateInfo
13762 {
13763 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
13764 : sType( StructureType::eFenceCreateInfo )
13765 , pNext( nullptr )
13766 , flags( flags_ )
13767 {
13768 }
13769
13770 FenceCreateInfo( VkFenceCreateInfo const & rhs )
13771 {
13772 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13773 }
13774
13775 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
13776 {
13777 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13778 return *this;
13779 }
13780
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013781 FenceCreateInfo& setPNext( const void* pNext_ )
13782 {
13783 pNext = pNext_;
13784 return *this;
13785 }
13786
13787 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
13788 {
13789 flags = flags_;
13790 return *this;
13791 }
13792
13793 operator const VkFenceCreateInfo&() const
13794 {
13795 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
13796 }
13797
13798 bool operator==( FenceCreateInfo const& rhs ) const
13799 {
13800 return ( sType == rhs.sType )
13801 && ( pNext == rhs.pNext )
13802 && ( flags == rhs.flags );
13803 }
13804
13805 bool operator!=( FenceCreateInfo const& rhs ) const
13806 {
13807 return !operator==( rhs );
13808 }
13809
13810 private:
13811 StructureType sType;
13812
13813 public:
13814 const void* pNext;
13815 FenceCreateFlags flags;
13816 };
13817 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
13818
13819 enum class FormatFeatureFlagBits
13820 {
13821 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
13822 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
13823 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
13824 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
13825 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
13826 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
13827 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
13828 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
13829 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
13830 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
13831 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
13832 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
13833 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070013834 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
13835 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
13836 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013837 };
13838
13839 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
13840
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013841 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013842 {
13843 return FormatFeatureFlags( bit0 ) | bit1;
13844 }
13845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013846 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
13847 {
13848 return ~( FormatFeatureFlags( bits ) );
13849 }
13850
13851 template <> struct FlagTraits<FormatFeatureFlagBits>
13852 {
13853 enum
13854 {
Mark Young39389872017-01-19 21:10:49 -070013855 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)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013856 };
13857 };
13858
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013859 struct FormatProperties
13860 {
13861 operator const VkFormatProperties&() const
13862 {
13863 return *reinterpret_cast<const VkFormatProperties*>(this);
13864 }
13865
13866 bool operator==( FormatProperties const& rhs ) const
13867 {
13868 return ( linearTilingFeatures == rhs.linearTilingFeatures )
13869 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
13870 && ( bufferFeatures == rhs.bufferFeatures );
13871 }
13872
13873 bool operator!=( FormatProperties const& rhs ) const
13874 {
13875 return !operator==( rhs );
13876 }
13877
13878 FormatFeatureFlags linearTilingFeatures;
13879 FormatFeatureFlags optimalTilingFeatures;
13880 FormatFeatureFlags bufferFeatures;
13881 };
13882 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
13883
Mark Young39389872017-01-19 21:10:49 -070013884 struct FormatProperties2KHR
13885 {
13886 operator const VkFormatProperties2KHR&() const
13887 {
13888 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
13889 }
13890
13891 bool operator==( FormatProperties2KHR const& rhs ) const
13892 {
13893 return ( sType == rhs.sType )
13894 && ( pNext == rhs.pNext )
13895 && ( formatProperties == rhs.formatProperties );
13896 }
13897
13898 bool operator!=( FormatProperties2KHR const& rhs ) const
13899 {
13900 return !operator==( rhs );
13901 }
13902
13903 private:
13904 StructureType sType;
13905
13906 public:
13907 void* pNext;
13908 FormatProperties formatProperties;
13909 };
13910 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
13911
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013912 enum class QueryControlFlagBits
13913 {
13914 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
13915 };
13916
13917 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
13918
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013919 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013920 {
13921 return QueryControlFlags( bit0 ) | bit1;
13922 }
13923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013924 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
13925 {
13926 return ~( QueryControlFlags( bits ) );
13927 }
13928
13929 template <> struct FlagTraits<QueryControlFlagBits>
13930 {
13931 enum
13932 {
13933 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
13934 };
13935 };
13936
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013937 enum class QueryResultFlagBits
13938 {
13939 e64 = VK_QUERY_RESULT_64_BIT,
13940 eWait = VK_QUERY_RESULT_WAIT_BIT,
13941 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
13942 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
13943 };
13944
13945 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
13946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013947 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013948 {
13949 return QueryResultFlags( bit0 ) | bit1;
13950 }
13951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013952 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
13953 {
13954 return ~( QueryResultFlags( bits ) );
13955 }
13956
13957 template <> struct FlagTraits<QueryResultFlagBits>
13958 {
13959 enum
13960 {
13961 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
13962 };
13963 };
13964
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013965 enum class CommandBufferUsageFlagBits
13966 {
13967 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
13968 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
13969 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
13970 };
13971
13972 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
13973
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013974 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013975 {
13976 return CommandBufferUsageFlags( bit0 ) | bit1;
13977 }
13978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013979 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
13980 {
13981 return ~( CommandBufferUsageFlags( bits ) );
13982 }
13983
13984 template <> struct FlagTraits<CommandBufferUsageFlagBits>
13985 {
13986 enum
13987 {
13988 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
13989 };
13990 };
13991
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013992 enum class QueryPipelineStatisticFlagBits
13993 {
13994 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
13995 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
13996 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
13997 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
13998 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
13999 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14000 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14001 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14002 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14003 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14004 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14005 };
14006
14007 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14008
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014009 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014010 {
14011 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14012 }
14013
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014014 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14015 {
14016 return ~( QueryPipelineStatisticFlags( bits ) );
14017 }
14018
14019 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14020 {
14021 enum
14022 {
14023 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)
14024 };
14025 };
14026
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014027 struct CommandBufferInheritanceInfo
14028 {
14029 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14030 : sType( StructureType::eCommandBufferInheritanceInfo )
14031 , pNext( nullptr )
14032 , renderPass( renderPass_ )
14033 , subpass( subpass_ )
14034 , framebuffer( framebuffer_ )
14035 , occlusionQueryEnable( occlusionQueryEnable_ )
14036 , queryFlags( queryFlags_ )
14037 , pipelineStatistics( pipelineStatistics_ )
14038 {
14039 }
14040
14041 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14042 {
14043 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14044 }
14045
14046 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14047 {
14048 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14049 return *this;
14050 }
14051
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014052 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14053 {
14054 pNext = pNext_;
14055 return *this;
14056 }
14057
14058 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14059 {
14060 renderPass = renderPass_;
14061 return *this;
14062 }
14063
14064 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14065 {
14066 subpass = subpass_;
14067 return *this;
14068 }
14069
14070 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14071 {
14072 framebuffer = framebuffer_;
14073 return *this;
14074 }
14075
14076 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14077 {
14078 occlusionQueryEnable = occlusionQueryEnable_;
14079 return *this;
14080 }
14081
14082 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14083 {
14084 queryFlags = queryFlags_;
14085 return *this;
14086 }
14087
14088 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14089 {
14090 pipelineStatistics = pipelineStatistics_;
14091 return *this;
14092 }
14093
14094 operator const VkCommandBufferInheritanceInfo&() const
14095 {
14096 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14097 }
14098
14099 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14100 {
14101 return ( sType == rhs.sType )
14102 && ( pNext == rhs.pNext )
14103 && ( renderPass == rhs.renderPass )
14104 && ( subpass == rhs.subpass )
14105 && ( framebuffer == rhs.framebuffer )
14106 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14107 && ( queryFlags == rhs.queryFlags )
14108 && ( pipelineStatistics == rhs.pipelineStatistics );
14109 }
14110
14111 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14112 {
14113 return !operator==( rhs );
14114 }
14115
14116 private:
14117 StructureType sType;
14118
14119 public:
14120 const void* pNext;
14121 RenderPass renderPass;
14122 uint32_t subpass;
14123 Framebuffer framebuffer;
14124 Bool32 occlusionQueryEnable;
14125 QueryControlFlags queryFlags;
14126 QueryPipelineStatisticFlags pipelineStatistics;
14127 };
14128 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14129
14130 struct CommandBufferBeginInfo
14131 {
14132 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14133 : sType( StructureType::eCommandBufferBeginInfo )
14134 , pNext( nullptr )
14135 , flags( flags_ )
14136 , pInheritanceInfo( pInheritanceInfo_ )
14137 {
14138 }
14139
14140 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14141 {
14142 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14143 }
14144
14145 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14146 {
14147 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14148 return *this;
14149 }
14150
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014151 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14152 {
14153 pNext = pNext_;
14154 return *this;
14155 }
14156
14157 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14158 {
14159 flags = flags_;
14160 return *this;
14161 }
14162
14163 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14164 {
14165 pInheritanceInfo = pInheritanceInfo_;
14166 return *this;
14167 }
14168
14169 operator const VkCommandBufferBeginInfo&() const
14170 {
14171 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14172 }
14173
14174 bool operator==( CommandBufferBeginInfo const& rhs ) const
14175 {
14176 return ( sType == rhs.sType )
14177 && ( pNext == rhs.pNext )
14178 && ( flags == rhs.flags )
14179 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14180 }
14181
14182 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14183 {
14184 return !operator==( rhs );
14185 }
14186
14187 private:
14188 StructureType sType;
14189
14190 public:
14191 const void* pNext;
14192 CommandBufferUsageFlags flags;
14193 const CommandBufferInheritanceInfo* pInheritanceInfo;
14194 };
14195 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14196
14197 struct QueryPoolCreateInfo
14198 {
14199 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14200 : sType( StructureType::eQueryPoolCreateInfo )
14201 , pNext( nullptr )
14202 , flags( flags_ )
14203 , queryType( queryType_ )
14204 , queryCount( queryCount_ )
14205 , pipelineStatistics( pipelineStatistics_ )
14206 {
14207 }
14208
14209 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14210 {
14211 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14212 }
14213
14214 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14215 {
14216 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14217 return *this;
14218 }
14219
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014220 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14221 {
14222 pNext = pNext_;
14223 return *this;
14224 }
14225
14226 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14227 {
14228 flags = flags_;
14229 return *this;
14230 }
14231
14232 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14233 {
14234 queryType = queryType_;
14235 return *this;
14236 }
14237
14238 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14239 {
14240 queryCount = queryCount_;
14241 return *this;
14242 }
14243
14244 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14245 {
14246 pipelineStatistics = pipelineStatistics_;
14247 return *this;
14248 }
14249
14250 operator const VkQueryPoolCreateInfo&() const
14251 {
14252 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14253 }
14254
14255 bool operator==( QueryPoolCreateInfo const& rhs ) const
14256 {
14257 return ( sType == rhs.sType )
14258 && ( pNext == rhs.pNext )
14259 && ( flags == rhs.flags )
14260 && ( queryType == rhs.queryType )
14261 && ( queryCount == rhs.queryCount )
14262 && ( pipelineStatistics == rhs.pipelineStatistics );
14263 }
14264
14265 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14266 {
14267 return !operator==( rhs );
14268 }
14269
14270 private:
14271 StructureType sType;
14272
14273 public:
14274 const void* pNext;
14275 QueryPoolCreateFlags flags;
14276 QueryType queryType;
14277 uint32_t queryCount;
14278 QueryPipelineStatisticFlags pipelineStatistics;
14279 };
14280 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14281
14282 enum class ImageAspectFlagBits
14283 {
14284 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14285 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14286 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14287 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14288 };
14289
14290 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14291
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014292 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014293 {
14294 return ImageAspectFlags( bit0 ) | bit1;
14295 }
14296
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014297 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14298 {
14299 return ~( ImageAspectFlags( bits ) );
14300 }
14301
14302 template <> struct FlagTraits<ImageAspectFlagBits>
14303 {
14304 enum
14305 {
14306 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14307 };
14308 };
14309
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014310 struct ImageSubresource
14311 {
14312 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14313 : aspectMask( aspectMask_ )
14314 , mipLevel( mipLevel_ )
14315 , arrayLayer( arrayLayer_ )
14316 {
14317 }
14318
14319 ImageSubresource( VkImageSubresource const & rhs )
14320 {
14321 memcpy( this, &rhs, sizeof(ImageSubresource) );
14322 }
14323
14324 ImageSubresource& operator=( VkImageSubresource const & rhs )
14325 {
14326 memcpy( this, &rhs, sizeof(ImageSubresource) );
14327 return *this;
14328 }
14329
14330 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14331 {
14332 aspectMask = aspectMask_;
14333 return *this;
14334 }
14335
14336 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14337 {
14338 mipLevel = mipLevel_;
14339 return *this;
14340 }
14341
14342 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14343 {
14344 arrayLayer = arrayLayer_;
14345 return *this;
14346 }
14347
14348 operator const VkImageSubresource&() const
14349 {
14350 return *reinterpret_cast<const VkImageSubresource*>(this);
14351 }
14352
14353 bool operator==( ImageSubresource const& rhs ) const
14354 {
14355 return ( aspectMask == rhs.aspectMask )
14356 && ( mipLevel == rhs.mipLevel )
14357 && ( arrayLayer == rhs.arrayLayer );
14358 }
14359
14360 bool operator!=( ImageSubresource const& rhs ) const
14361 {
14362 return !operator==( rhs );
14363 }
14364
14365 ImageAspectFlags aspectMask;
14366 uint32_t mipLevel;
14367 uint32_t arrayLayer;
14368 };
14369 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14370
14371 struct ImageSubresourceLayers
14372 {
14373 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14374 : aspectMask( aspectMask_ )
14375 , mipLevel( mipLevel_ )
14376 , baseArrayLayer( baseArrayLayer_ )
14377 , layerCount( layerCount_ )
14378 {
14379 }
14380
14381 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14382 {
14383 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14384 }
14385
14386 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14387 {
14388 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14389 return *this;
14390 }
14391
14392 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14393 {
14394 aspectMask = aspectMask_;
14395 return *this;
14396 }
14397
14398 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14399 {
14400 mipLevel = mipLevel_;
14401 return *this;
14402 }
14403
14404 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14405 {
14406 baseArrayLayer = baseArrayLayer_;
14407 return *this;
14408 }
14409
14410 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14411 {
14412 layerCount = layerCount_;
14413 return *this;
14414 }
14415
14416 operator const VkImageSubresourceLayers&() const
14417 {
14418 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14419 }
14420
14421 bool operator==( ImageSubresourceLayers const& rhs ) const
14422 {
14423 return ( aspectMask == rhs.aspectMask )
14424 && ( mipLevel == rhs.mipLevel )
14425 && ( baseArrayLayer == rhs.baseArrayLayer )
14426 && ( layerCount == rhs.layerCount );
14427 }
14428
14429 bool operator!=( ImageSubresourceLayers const& rhs ) const
14430 {
14431 return !operator==( rhs );
14432 }
14433
14434 ImageAspectFlags aspectMask;
14435 uint32_t mipLevel;
14436 uint32_t baseArrayLayer;
14437 uint32_t layerCount;
14438 };
14439 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14440
14441 struct ImageSubresourceRange
14442 {
14443 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14444 : aspectMask( aspectMask_ )
14445 , baseMipLevel( baseMipLevel_ )
14446 , levelCount( levelCount_ )
14447 , baseArrayLayer( baseArrayLayer_ )
14448 , layerCount( layerCount_ )
14449 {
14450 }
14451
14452 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14453 {
14454 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14455 }
14456
14457 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14458 {
14459 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14460 return *this;
14461 }
14462
14463 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14464 {
14465 aspectMask = aspectMask_;
14466 return *this;
14467 }
14468
14469 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14470 {
14471 baseMipLevel = baseMipLevel_;
14472 return *this;
14473 }
14474
14475 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14476 {
14477 levelCount = levelCount_;
14478 return *this;
14479 }
14480
14481 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14482 {
14483 baseArrayLayer = baseArrayLayer_;
14484 return *this;
14485 }
14486
14487 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14488 {
14489 layerCount = layerCount_;
14490 return *this;
14491 }
14492
14493 operator const VkImageSubresourceRange&() const
14494 {
14495 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14496 }
14497
14498 bool operator==( ImageSubresourceRange const& rhs ) const
14499 {
14500 return ( aspectMask == rhs.aspectMask )
14501 && ( baseMipLevel == rhs.baseMipLevel )
14502 && ( levelCount == rhs.levelCount )
14503 && ( baseArrayLayer == rhs.baseArrayLayer )
14504 && ( layerCount == rhs.layerCount );
14505 }
14506
14507 bool operator!=( ImageSubresourceRange const& rhs ) const
14508 {
14509 return !operator==( rhs );
14510 }
14511
14512 ImageAspectFlags aspectMask;
14513 uint32_t baseMipLevel;
14514 uint32_t levelCount;
14515 uint32_t baseArrayLayer;
14516 uint32_t layerCount;
14517 };
14518 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14519
14520 struct ImageMemoryBarrier
14521 {
14522 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() )
14523 : sType( StructureType::eImageMemoryBarrier )
14524 , pNext( nullptr )
14525 , srcAccessMask( srcAccessMask_ )
14526 , dstAccessMask( dstAccessMask_ )
14527 , oldLayout( oldLayout_ )
14528 , newLayout( newLayout_ )
14529 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14530 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14531 , image( image_ )
14532 , subresourceRange( subresourceRange_ )
14533 {
14534 }
14535
14536 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14537 {
14538 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14539 }
14540
14541 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14542 {
14543 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14544 return *this;
14545 }
14546
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014547 ImageMemoryBarrier& setPNext( const void* pNext_ )
14548 {
14549 pNext = pNext_;
14550 return *this;
14551 }
14552
14553 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14554 {
14555 srcAccessMask = srcAccessMask_;
14556 return *this;
14557 }
14558
14559 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14560 {
14561 dstAccessMask = dstAccessMask_;
14562 return *this;
14563 }
14564
14565 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14566 {
14567 oldLayout = oldLayout_;
14568 return *this;
14569 }
14570
14571 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14572 {
14573 newLayout = newLayout_;
14574 return *this;
14575 }
14576
14577 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14578 {
14579 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14580 return *this;
14581 }
14582
14583 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14584 {
14585 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14586 return *this;
14587 }
14588
14589 ImageMemoryBarrier& setImage( Image image_ )
14590 {
14591 image = image_;
14592 return *this;
14593 }
14594
14595 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14596 {
14597 subresourceRange = subresourceRange_;
14598 return *this;
14599 }
14600
14601 operator const VkImageMemoryBarrier&() const
14602 {
14603 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14604 }
14605
14606 bool operator==( ImageMemoryBarrier const& rhs ) const
14607 {
14608 return ( sType == rhs.sType )
14609 && ( pNext == rhs.pNext )
14610 && ( srcAccessMask == rhs.srcAccessMask )
14611 && ( dstAccessMask == rhs.dstAccessMask )
14612 && ( oldLayout == rhs.oldLayout )
14613 && ( newLayout == rhs.newLayout )
14614 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14615 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14616 && ( image == rhs.image )
14617 && ( subresourceRange == rhs.subresourceRange );
14618 }
14619
14620 bool operator!=( ImageMemoryBarrier const& rhs ) const
14621 {
14622 return !operator==( rhs );
14623 }
14624
14625 private:
14626 StructureType sType;
14627
14628 public:
14629 const void* pNext;
14630 AccessFlags srcAccessMask;
14631 AccessFlags dstAccessMask;
14632 ImageLayout oldLayout;
14633 ImageLayout newLayout;
14634 uint32_t srcQueueFamilyIndex;
14635 uint32_t dstQueueFamilyIndex;
14636 Image image;
14637 ImageSubresourceRange subresourceRange;
14638 };
14639 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14640
14641 struct ImageViewCreateInfo
14642 {
14643 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14644 : sType( StructureType::eImageViewCreateInfo )
14645 , pNext( nullptr )
14646 , flags( flags_ )
14647 , image( image_ )
14648 , viewType( viewType_ )
14649 , format( format_ )
14650 , components( components_ )
14651 , subresourceRange( subresourceRange_ )
14652 {
14653 }
14654
14655 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14656 {
14657 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14658 }
14659
14660 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14661 {
14662 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14663 return *this;
14664 }
14665
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014666 ImageViewCreateInfo& setPNext( const void* pNext_ )
14667 {
14668 pNext = pNext_;
14669 return *this;
14670 }
14671
14672 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14673 {
14674 flags = flags_;
14675 return *this;
14676 }
14677
14678 ImageViewCreateInfo& setImage( Image image_ )
14679 {
14680 image = image_;
14681 return *this;
14682 }
14683
14684 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14685 {
14686 viewType = viewType_;
14687 return *this;
14688 }
14689
14690 ImageViewCreateInfo& setFormat( Format format_ )
14691 {
14692 format = format_;
14693 return *this;
14694 }
14695
14696 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
14697 {
14698 components = components_;
14699 return *this;
14700 }
14701
14702 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14703 {
14704 subresourceRange = subresourceRange_;
14705 return *this;
14706 }
14707
14708 operator const VkImageViewCreateInfo&() const
14709 {
14710 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
14711 }
14712
14713 bool operator==( ImageViewCreateInfo const& rhs ) const
14714 {
14715 return ( sType == rhs.sType )
14716 && ( pNext == rhs.pNext )
14717 && ( flags == rhs.flags )
14718 && ( image == rhs.image )
14719 && ( viewType == rhs.viewType )
14720 && ( format == rhs.format )
14721 && ( components == rhs.components )
14722 && ( subresourceRange == rhs.subresourceRange );
14723 }
14724
14725 bool operator!=( ImageViewCreateInfo const& rhs ) const
14726 {
14727 return !operator==( rhs );
14728 }
14729
14730 private:
14731 StructureType sType;
14732
14733 public:
14734 const void* pNext;
14735 ImageViewCreateFlags flags;
14736 Image image;
14737 ImageViewType viewType;
14738 Format format;
14739 ComponentMapping components;
14740 ImageSubresourceRange subresourceRange;
14741 };
14742 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
14743
14744 struct ImageCopy
14745 {
14746 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14747 : srcSubresource( srcSubresource_ )
14748 , srcOffset( srcOffset_ )
14749 , dstSubresource( dstSubresource_ )
14750 , dstOffset( dstOffset_ )
14751 , extent( extent_ )
14752 {
14753 }
14754
14755 ImageCopy( VkImageCopy const & rhs )
14756 {
14757 memcpy( this, &rhs, sizeof(ImageCopy) );
14758 }
14759
14760 ImageCopy& operator=( VkImageCopy const & rhs )
14761 {
14762 memcpy( this, &rhs, sizeof(ImageCopy) );
14763 return *this;
14764 }
14765
14766 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14767 {
14768 srcSubresource = srcSubresource_;
14769 return *this;
14770 }
14771
14772 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
14773 {
14774 srcOffset = srcOffset_;
14775 return *this;
14776 }
14777
14778 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14779 {
14780 dstSubresource = dstSubresource_;
14781 return *this;
14782 }
14783
14784 ImageCopy& setDstOffset( Offset3D dstOffset_ )
14785 {
14786 dstOffset = dstOffset_;
14787 return *this;
14788 }
14789
14790 ImageCopy& setExtent( Extent3D extent_ )
14791 {
14792 extent = extent_;
14793 return *this;
14794 }
14795
14796 operator const VkImageCopy&() const
14797 {
14798 return *reinterpret_cast<const VkImageCopy*>(this);
14799 }
14800
14801 bool operator==( ImageCopy const& rhs ) const
14802 {
14803 return ( srcSubresource == rhs.srcSubresource )
14804 && ( srcOffset == rhs.srcOffset )
14805 && ( dstSubresource == rhs.dstSubresource )
14806 && ( dstOffset == rhs.dstOffset )
14807 && ( extent == rhs.extent );
14808 }
14809
14810 bool operator!=( ImageCopy const& rhs ) const
14811 {
14812 return !operator==( rhs );
14813 }
14814
14815 ImageSubresourceLayers srcSubresource;
14816 Offset3D srcOffset;
14817 ImageSubresourceLayers dstSubresource;
14818 Offset3D dstOffset;
14819 Extent3D extent;
14820 };
14821 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
14822
14823 struct ImageBlit
14824 {
14825 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
14826 : srcSubresource( srcSubresource_ )
14827 , dstSubresource( dstSubresource_ )
14828 {
14829 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14830 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14831 }
14832
14833 ImageBlit( VkImageBlit const & rhs )
14834 {
14835 memcpy( this, &rhs, sizeof(ImageBlit) );
14836 }
14837
14838 ImageBlit& operator=( VkImageBlit const & rhs )
14839 {
14840 memcpy( this, &rhs, sizeof(ImageBlit) );
14841 return *this;
14842 }
14843
14844 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14845 {
14846 srcSubresource = srcSubresource_;
14847 return *this;
14848 }
14849
14850 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
14851 {
14852 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
14853 return *this;
14854 }
14855
14856 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14857 {
14858 dstSubresource = dstSubresource_;
14859 return *this;
14860 }
14861
14862 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
14863 {
14864 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
14865 return *this;
14866 }
14867
14868 operator const VkImageBlit&() const
14869 {
14870 return *reinterpret_cast<const VkImageBlit*>(this);
14871 }
14872
14873 bool operator==( ImageBlit const& rhs ) const
14874 {
14875 return ( srcSubresource == rhs.srcSubresource )
14876 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
14877 && ( dstSubresource == rhs.dstSubresource )
14878 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
14879 }
14880
14881 bool operator!=( ImageBlit const& rhs ) const
14882 {
14883 return !operator==( rhs );
14884 }
14885
14886 ImageSubresourceLayers srcSubresource;
14887 Offset3D srcOffsets[2];
14888 ImageSubresourceLayers dstSubresource;
14889 Offset3D dstOffsets[2];
14890 };
14891 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
14892
14893 struct BufferImageCopy
14894 {
14895 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
14896 : bufferOffset( bufferOffset_ )
14897 , bufferRowLength( bufferRowLength_ )
14898 , bufferImageHeight( bufferImageHeight_ )
14899 , imageSubresource( imageSubresource_ )
14900 , imageOffset( imageOffset_ )
14901 , imageExtent( imageExtent_ )
14902 {
14903 }
14904
14905 BufferImageCopy( VkBufferImageCopy const & rhs )
14906 {
14907 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14908 }
14909
14910 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
14911 {
14912 memcpy( this, &rhs, sizeof(BufferImageCopy) );
14913 return *this;
14914 }
14915
14916 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
14917 {
14918 bufferOffset = bufferOffset_;
14919 return *this;
14920 }
14921
14922 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
14923 {
14924 bufferRowLength = bufferRowLength_;
14925 return *this;
14926 }
14927
14928 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
14929 {
14930 bufferImageHeight = bufferImageHeight_;
14931 return *this;
14932 }
14933
14934 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
14935 {
14936 imageSubresource = imageSubresource_;
14937 return *this;
14938 }
14939
14940 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
14941 {
14942 imageOffset = imageOffset_;
14943 return *this;
14944 }
14945
14946 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
14947 {
14948 imageExtent = imageExtent_;
14949 return *this;
14950 }
14951
14952 operator const VkBufferImageCopy&() const
14953 {
14954 return *reinterpret_cast<const VkBufferImageCopy*>(this);
14955 }
14956
14957 bool operator==( BufferImageCopy const& rhs ) const
14958 {
14959 return ( bufferOffset == rhs.bufferOffset )
14960 && ( bufferRowLength == rhs.bufferRowLength )
14961 && ( bufferImageHeight == rhs.bufferImageHeight )
14962 && ( imageSubresource == rhs.imageSubresource )
14963 && ( imageOffset == rhs.imageOffset )
14964 && ( imageExtent == rhs.imageExtent );
14965 }
14966
14967 bool operator!=( BufferImageCopy const& rhs ) const
14968 {
14969 return !operator==( rhs );
14970 }
14971
14972 DeviceSize bufferOffset;
14973 uint32_t bufferRowLength;
14974 uint32_t bufferImageHeight;
14975 ImageSubresourceLayers imageSubresource;
14976 Offset3D imageOffset;
14977 Extent3D imageExtent;
14978 };
14979 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
14980
14981 struct ImageResolve
14982 {
14983 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14984 : srcSubresource( srcSubresource_ )
14985 , srcOffset( srcOffset_ )
14986 , dstSubresource( dstSubresource_ )
14987 , dstOffset( dstOffset_ )
14988 , extent( extent_ )
14989 {
14990 }
14991
14992 ImageResolve( VkImageResolve const & rhs )
14993 {
14994 memcpy( this, &rhs, sizeof(ImageResolve) );
14995 }
14996
14997 ImageResolve& operator=( VkImageResolve const & rhs )
14998 {
14999 memcpy( this, &rhs, sizeof(ImageResolve) );
15000 return *this;
15001 }
15002
15003 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15004 {
15005 srcSubresource = srcSubresource_;
15006 return *this;
15007 }
15008
15009 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15010 {
15011 srcOffset = srcOffset_;
15012 return *this;
15013 }
15014
15015 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15016 {
15017 dstSubresource = dstSubresource_;
15018 return *this;
15019 }
15020
15021 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15022 {
15023 dstOffset = dstOffset_;
15024 return *this;
15025 }
15026
15027 ImageResolve& setExtent( Extent3D extent_ )
15028 {
15029 extent = extent_;
15030 return *this;
15031 }
15032
15033 operator const VkImageResolve&() const
15034 {
15035 return *reinterpret_cast<const VkImageResolve*>(this);
15036 }
15037
15038 bool operator==( ImageResolve const& rhs ) const
15039 {
15040 return ( srcSubresource == rhs.srcSubresource )
15041 && ( srcOffset == rhs.srcOffset )
15042 && ( dstSubresource == rhs.dstSubresource )
15043 && ( dstOffset == rhs.dstOffset )
15044 && ( extent == rhs.extent );
15045 }
15046
15047 bool operator!=( ImageResolve const& rhs ) const
15048 {
15049 return !operator==( rhs );
15050 }
15051
15052 ImageSubresourceLayers srcSubresource;
15053 Offset3D srcOffset;
15054 ImageSubresourceLayers dstSubresource;
15055 Offset3D dstOffset;
15056 Extent3D extent;
15057 };
15058 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15059
15060 struct ClearAttachment
15061 {
15062 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15063 : aspectMask( aspectMask_ )
15064 , colorAttachment( colorAttachment_ )
15065 , clearValue( clearValue_ )
15066 {
15067 }
15068
15069 ClearAttachment( VkClearAttachment const & rhs )
15070 {
15071 memcpy( this, &rhs, sizeof(ClearAttachment) );
15072 }
15073
15074 ClearAttachment& operator=( VkClearAttachment const & rhs )
15075 {
15076 memcpy( this, &rhs, sizeof(ClearAttachment) );
15077 return *this;
15078 }
15079
15080 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15081 {
15082 aspectMask = aspectMask_;
15083 return *this;
15084 }
15085
15086 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15087 {
15088 colorAttachment = colorAttachment_;
15089 return *this;
15090 }
15091
15092 ClearAttachment& setClearValue( ClearValue clearValue_ )
15093 {
15094 clearValue = clearValue_;
15095 return *this;
15096 }
15097
15098 operator const VkClearAttachment&() const
15099 {
15100 return *reinterpret_cast<const VkClearAttachment*>(this);
15101 }
15102
15103 ImageAspectFlags aspectMask;
15104 uint32_t colorAttachment;
15105 ClearValue clearValue;
15106 };
15107 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15108
15109 enum class SparseImageFormatFlagBits
15110 {
15111 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15112 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15113 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15114 };
15115
15116 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15117
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015118 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015119 {
15120 return SparseImageFormatFlags( bit0 ) | bit1;
15121 }
15122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015123 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15124 {
15125 return ~( SparseImageFormatFlags( bits ) );
15126 }
15127
15128 template <> struct FlagTraits<SparseImageFormatFlagBits>
15129 {
15130 enum
15131 {
15132 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15133 };
15134 };
15135
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015136 struct SparseImageFormatProperties
15137 {
15138 operator const VkSparseImageFormatProperties&() const
15139 {
15140 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15141 }
15142
15143 bool operator==( SparseImageFormatProperties const& rhs ) const
15144 {
15145 return ( aspectMask == rhs.aspectMask )
15146 && ( imageGranularity == rhs.imageGranularity )
15147 && ( flags == rhs.flags );
15148 }
15149
15150 bool operator!=( SparseImageFormatProperties const& rhs ) const
15151 {
15152 return !operator==( rhs );
15153 }
15154
15155 ImageAspectFlags aspectMask;
15156 Extent3D imageGranularity;
15157 SparseImageFormatFlags flags;
15158 };
15159 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15160
15161 struct SparseImageMemoryRequirements
15162 {
15163 operator const VkSparseImageMemoryRequirements&() const
15164 {
15165 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15166 }
15167
15168 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15169 {
15170 return ( formatProperties == rhs.formatProperties )
15171 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15172 && ( imageMipTailSize == rhs.imageMipTailSize )
15173 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15174 && ( imageMipTailStride == rhs.imageMipTailStride );
15175 }
15176
15177 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15178 {
15179 return !operator==( rhs );
15180 }
15181
15182 SparseImageFormatProperties formatProperties;
15183 uint32_t imageMipTailFirstLod;
15184 DeviceSize imageMipTailSize;
15185 DeviceSize imageMipTailOffset;
15186 DeviceSize imageMipTailStride;
15187 };
15188 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15189
Mark Young39389872017-01-19 21:10:49 -070015190 struct SparseImageFormatProperties2KHR
15191 {
15192 operator const VkSparseImageFormatProperties2KHR&() const
15193 {
15194 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15195 }
15196
15197 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15198 {
15199 return ( sType == rhs.sType )
15200 && ( pNext == rhs.pNext )
15201 && ( properties == rhs.properties );
15202 }
15203
15204 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15205 {
15206 return !operator==( rhs );
15207 }
15208
15209 private:
15210 StructureType sType;
15211
15212 public:
15213 void* pNext;
15214 SparseImageFormatProperties properties;
15215 };
15216 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15217
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015218 enum class SparseMemoryBindFlagBits
15219 {
15220 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15221 };
15222
15223 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15224
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015225 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015226 {
15227 return SparseMemoryBindFlags( bit0 ) | bit1;
15228 }
15229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015230 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15231 {
15232 return ~( SparseMemoryBindFlags( bits ) );
15233 }
15234
15235 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15236 {
15237 enum
15238 {
15239 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15240 };
15241 };
15242
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015243 struct SparseMemoryBind
15244 {
15245 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15246 : resourceOffset( resourceOffset_ )
15247 , size( size_ )
15248 , memory( memory_ )
15249 , memoryOffset( memoryOffset_ )
15250 , flags( flags_ )
15251 {
15252 }
15253
15254 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15255 {
15256 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15257 }
15258
15259 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15260 {
15261 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15262 return *this;
15263 }
15264
15265 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15266 {
15267 resourceOffset = resourceOffset_;
15268 return *this;
15269 }
15270
15271 SparseMemoryBind& setSize( DeviceSize size_ )
15272 {
15273 size = size_;
15274 return *this;
15275 }
15276
15277 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15278 {
15279 memory = memory_;
15280 return *this;
15281 }
15282
15283 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15284 {
15285 memoryOffset = memoryOffset_;
15286 return *this;
15287 }
15288
15289 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15290 {
15291 flags = flags_;
15292 return *this;
15293 }
15294
15295 operator const VkSparseMemoryBind&() const
15296 {
15297 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15298 }
15299
15300 bool operator==( SparseMemoryBind const& rhs ) const
15301 {
15302 return ( resourceOffset == rhs.resourceOffset )
15303 && ( size == rhs.size )
15304 && ( memory == rhs.memory )
15305 && ( memoryOffset == rhs.memoryOffset )
15306 && ( flags == rhs.flags );
15307 }
15308
15309 bool operator!=( SparseMemoryBind const& rhs ) const
15310 {
15311 return !operator==( rhs );
15312 }
15313
15314 DeviceSize resourceOffset;
15315 DeviceSize size;
15316 DeviceMemory memory;
15317 DeviceSize memoryOffset;
15318 SparseMemoryBindFlags flags;
15319 };
15320 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15321
15322 struct SparseImageMemoryBind
15323 {
15324 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15325 : subresource( subresource_ )
15326 , offset( offset_ )
15327 , extent( extent_ )
15328 , memory( memory_ )
15329 , memoryOffset( memoryOffset_ )
15330 , flags( flags_ )
15331 {
15332 }
15333
15334 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15335 {
15336 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15337 }
15338
15339 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15340 {
15341 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15342 return *this;
15343 }
15344
15345 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15346 {
15347 subresource = subresource_;
15348 return *this;
15349 }
15350
15351 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15352 {
15353 offset = offset_;
15354 return *this;
15355 }
15356
15357 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15358 {
15359 extent = extent_;
15360 return *this;
15361 }
15362
15363 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15364 {
15365 memory = memory_;
15366 return *this;
15367 }
15368
15369 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15370 {
15371 memoryOffset = memoryOffset_;
15372 return *this;
15373 }
15374
15375 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15376 {
15377 flags = flags_;
15378 return *this;
15379 }
15380
15381 operator const VkSparseImageMemoryBind&() const
15382 {
15383 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15384 }
15385
15386 bool operator==( SparseImageMemoryBind const& rhs ) const
15387 {
15388 return ( subresource == rhs.subresource )
15389 && ( offset == rhs.offset )
15390 && ( extent == rhs.extent )
15391 && ( memory == rhs.memory )
15392 && ( memoryOffset == rhs.memoryOffset )
15393 && ( flags == rhs.flags );
15394 }
15395
15396 bool operator!=( SparseImageMemoryBind const& rhs ) const
15397 {
15398 return !operator==( rhs );
15399 }
15400
15401 ImageSubresource subresource;
15402 Offset3D offset;
15403 Extent3D extent;
15404 DeviceMemory memory;
15405 DeviceSize memoryOffset;
15406 SparseMemoryBindFlags flags;
15407 };
15408 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15409
15410 struct SparseBufferMemoryBindInfo
15411 {
15412 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15413 : buffer( buffer_ )
15414 , bindCount( bindCount_ )
15415 , pBinds( pBinds_ )
15416 {
15417 }
15418
15419 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15420 {
15421 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15422 }
15423
15424 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15425 {
15426 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15427 return *this;
15428 }
15429
15430 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15431 {
15432 buffer = buffer_;
15433 return *this;
15434 }
15435
15436 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15437 {
15438 bindCount = bindCount_;
15439 return *this;
15440 }
15441
15442 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15443 {
15444 pBinds = pBinds_;
15445 return *this;
15446 }
15447
15448 operator const VkSparseBufferMemoryBindInfo&() const
15449 {
15450 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15451 }
15452
15453 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15454 {
15455 return ( buffer == rhs.buffer )
15456 && ( bindCount == rhs.bindCount )
15457 && ( pBinds == rhs.pBinds );
15458 }
15459
15460 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15461 {
15462 return !operator==( rhs );
15463 }
15464
15465 Buffer buffer;
15466 uint32_t bindCount;
15467 const SparseMemoryBind* pBinds;
15468 };
15469 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15470
15471 struct SparseImageOpaqueMemoryBindInfo
15472 {
15473 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15474 : image( image_ )
15475 , bindCount( bindCount_ )
15476 , pBinds( pBinds_ )
15477 {
15478 }
15479
15480 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15481 {
15482 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15483 }
15484
15485 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15486 {
15487 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15488 return *this;
15489 }
15490
15491 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15492 {
15493 image = image_;
15494 return *this;
15495 }
15496
15497 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15498 {
15499 bindCount = bindCount_;
15500 return *this;
15501 }
15502
15503 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15504 {
15505 pBinds = pBinds_;
15506 return *this;
15507 }
15508
15509 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15510 {
15511 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15512 }
15513
15514 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15515 {
15516 return ( image == rhs.image )
15517 && ( bindCount == rhs.bindCount )
15518 && ( pBinds == rhs.pBinds );
15519 }
15520
15521 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15522 {
15523 return !operator==( rhs );
15524 }
15525
15526 Image image;
15527 uint32_t bindCount;
15528 const SparseMemoryBind* pBinds;
15529 };
15530 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15531
15532 struct SparseImageMemoryBindInfo
15533 {
15534 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15535 : image( image_ )
15536 , bindCount( bindCount_ )
15537 , pBinds( pBinds_ )
15538 {
15539 }
15540
15541 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15542 {
15543 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15544 }
15545
15546 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15547 {
15548 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15549 return *this;
15550 }
15551
15552 SparseImageMemoryBindInfo& setImage( Image image_ )
15553 {
15554 image = image_;
15555 return *this;
15556 }
15557
15558 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15559 {
15560 bindCount = bindCount_;
15561 return *this;
15562 }
15563
15564 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15565 {
15566 pBinds = pBinds_;
15567 return *this;
15568 }
15569
15570 operator const VkSparseImageMemoryBindInfo&() const
15571 {
15572 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15573 }
15574
15575 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15576 {
15577 return ( image == rhs.image )
15578 && ( bindCount == rhs.bindCount )
15579 && ( pBinds == rhs.pBinds );
15580 }
15581
15582 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15583 {
15584 return !operator==( rhs );
15585 }
15586
15587 Image image;
15588 uint32_t bindCount;
15589 const SparseImageMemoryBind* pBinds;
15590 };
15591 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15592
15593 struct BindSparseInfo
15594 {
15595 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 )
15596 : sType( StructureType::eBindSparseInfo )
15597 , pNext( nullptr )
15598 , waitSemaphoreCount( waitSemaphoreCount_ )
15599 , pWaitSemaphores( pWaitSemaphores_ )
15600 , bufferBindCount( bufferBindCount_ )
15601 , pBufferBinds( pBufferBinds_ )
15602 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15603 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15604 , imageBindCount( imageBindCount_ )
15605 , pImageBinds( pImageBinds_ )
15606 , signalSemaphoreCount( signalSemaphoreCount_ )
15607 , pSignalSemaphores( pSignalSemaphores_ )
15608 {
15609 }
15610
15611 BindSparseInfo( VkBindSparseInfo const & rhs )
15612 {
15613 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15614 }
15615
15616 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15617 {
15618 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15619 return *this;
15620 }
15621
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015622 BindSparseInfo& setPNext( const void* pNext_ )
15623 {
15624 pNext = pNext_;
15625 return *this;
15626 }
15627
15628 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15629 {
15630 waitSemaphoreCount = waitSemaphoreCount_;
15631 return *this;
15632 }
15633
15634 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15635 {
15636 pWaitSemaphores = pWaitSemaphores_;
15637 return *this;
15638 }
15639
15640 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15641 {
15642 bufferBindCount = bufferBindCount_;
15643 return *this;
15644 }
15645
15646 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15647 {
15648 pBufferBinds = pBufferBinds_;
15649 return *this;
15650 }
15651
15652 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15653 {
15654 imageOpaqueBindCount = imageOpaqueBindCount_;
15655 return *this;
15656 }
15657
15658 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15659 {
15660 pImageOpaqueBinds = pImageOpaqueBinds_;
15661 return *this;
15662 }
15663
15664 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15665 {
15666 imageBindCount = imageBindCount_;
15667 return *this;
15668 }
15669
15670 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15671 {
15672 pImageBinds = pImageBinds_;
15673 return *this;
15674 }
15675
15676 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15677 {
15678 signalSemaphoreCount = signalSemaphoreCount_;
15679 return *this;
15680 }
15681
15682 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15683 {
15684 pSignalSemaphores = pSignalSemaphores_;
15685 return *this;
15686 }
15687
15688 operator const VkBindSparseInfo&() const
15689 {
15690 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15691 }
15692
15693 bool operator==( BindSparseInfo const& rhs ) const
15694 {
15695 return ( sType == rhs.sType )
15696 && ( pNext == rhs.pNext )
15697 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
15698 && ( pWaitSemaphores == rhs.pWaitSemaphores )
15699 && ( bufferBindCount == rhs.bufferBindCount )
15700 && ( pBufferBinds == rhs.pBufferBinds )
15701 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
15702 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
15703 && ( imageBindCount == rhs.imageBindCount )
15704 && ( pImageBinds == rhs.pImageBinds )
15705 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
15706 && ( pSignalSemaphores == rhs.pSignalSemaphores );
15707 }
15708
15709 bool operator!=( BindSparseInfo const& rhs ) const
15710 {
15711 return !operator==( rhs );
15712 }
15713
15714 private:
15715 StructureType sType;
15716
15717 public:
15718 const void* pNext;
15719 uint32_t waitSemaphoreCount;
15720 const Semaphore* pWaitSemaphores;
15721 uint32_t bufferBindCount;
15722 const SparseBufferMemoryBindInfo* pBufferBinds;
15723 uint32_t imageOpaqueBindCount;
15724 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
15725 uint32_t imageBindCount;
15726 const SparseImageMemoryBindInfo* pImageBinds;
15727 uint32_t signalSemaphoreCount;
15728 const Semaphore* pSignalSemaphores;
15729 };
15730 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
15731
15732 enum class PipelineStageFlagBits
15733 {
15734 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
15735 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
15736 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
15737 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
15738 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
15739 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
15740 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
15741 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
15742 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
15743 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
15744 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
15745 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
15746 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
15747 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
15748 eHost = VK_PIPELINE_STAGE_HOST_BIT,
15749 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015750 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
15751 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015752 };
15753
15754 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
15755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015756 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015757 {
15758 return PipelineStageFlags( bit0 ) | bit1;
15759 }
15760
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015761 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
15762 {
15763 return ~( PipelineStageFlags( bits ) );
15764 }
15765
15766 template <> struct FlagTraits<PipelineStageFlagBits>
15767 {
15768 enum
15769 {
15770 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)
15771 };
15772 };
15773
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015774 enum class CommandPoolCreateFlagBits
15775 {
15776 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
15777 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
15778 };
15779
15780 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
15781
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015782 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015783 {
15784 return CommandPoolCreateFlags( bit0 ) | bit1;
15785 }
15786
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015787 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
15788 {
15789 return ~( CommandPoolCreateFlags( bits ) );
15790 }
15791
15792 template <> struct FlagTraits<CommandPoolCreateFlagBits>
15793 {
15794 enum
15795 {
15796 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
15797 };
15798 };
15799
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015800 struct CommandPoolCreateInfo
15801 {
15802 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
15803 : sType( StructureType::eCommandPoolCreateInfo )
15804 , pNext( nullptr )
15805 , flags( flags_ )
15806 , queueFamilyIndex( queueFamilyIndex_ )
15807 {
15808 }
15809
15810 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
15811 {
15812 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15813 }
15814
15815 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
15816 {
15817 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15818 return *this;
15819 }
15820
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015821 CommandPoolCreateInfo& setPNext( const void* pNext_ )
15822 {
15823 pNext = pNext_;
15824 return *this;
15825 }
15826
15827 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
15828 {
15829 flags = flags_;
15830 return *this;
15831 }
15832
15833 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
15834 {
15835 queueFamilyIndex = queueFamilyIndex_;
15836 return *this;
15837 }
15838
15839 operator const VkCommandPoolCreateInfo&() const
15840 {
15841 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
15842 }
15843
15844 bool operator==( CommandPoolCreateInfo const& rhs ) const
15845 {
15846 return ( sType == rhs.sType )
15847 && ( pNext == rhs.pNext )
15848 && ( flags == rhs.flags )
15849 && ( queueFamilyIndex == rhs.queueFamilyIndex );
15850 }
15851
15852 bool operator!=( CommandPoolCreateInfo const& rhs ) const
15853 {
15854 return !operator==( rhs );
15855 }
15856
15857 private:
15858 StructureType sType;
15859
15860 public:
15861 const void* pNext;
15862 CommandPoolCreateFlags flags;
15863 uint32_t queueFamilyIndex;
15864 };
15865 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
15866
15867 enum class CommandPoolResetFlagBits
15868 {
15869 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
15870 };
15871
15872 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
15873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015874 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015875 {
15876 return CommandPoolResetFlags( bit0 ) | bit1;
15877 }
15878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015879 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
15880 {
15881 return ~( CommandPoolResetFlags( bits ) );
15882 }
15883
15884 template <> struct FlagTraits<CommandPoolResetFlagBits>
15885 {
15886 enum
15887 {
15888 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
15889 };
15890 };
15891
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015892 enum class CommandBufferResetFlagBits
15893 {
15894 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
15895 };
15896
15897 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
15898
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015899 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015900 {
15901 return CommandBufferResetFlags( bit0 ) | bit1;
15902 }
15903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015904 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
15905 {
15906 return ~( CommandBufferResetFlags( bits ) );
15907 }
15908
15909 template <> struct FlagTraits<CommandBufferResetFlagBits>
15910 {
15911 enum
15912 {
15913 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
15914 };
15915 };
15916
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015917 enum class SampleCountFlagBits
15918 {
15919 e1 = VK_SAMPLE_COUNT_1_BIT,
15920 e2 = VK_SAMPLE_COUNT_2_BIT,
15921 e4 = VK_SAMPLE_COUNT_4_BIT,
15922 e8 = VK_SAMPLE_COUNT_8_BIT,
15923 e16 = VK_SAMPLE_COUNT_16_BIT,
15924 e32 = VK_SAMPLE_COUNT_32_BIT,
15925 e64 = VK_SAMPLE_COUNT_64_BIT
15926 };
15927
15928 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
15929
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015930 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015931 {
15932 return SampleCountFlags( bit0 ) | bit1;
15933 }
15934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015935 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
15936 {
15937 return ~( SampleCountFlags( bits ) );
15938 }
15939
15940 template <> struct FlagTraits<SampleCountFlagBits>
15941 {
15942 enum
15943 {
15944 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
15945 };
15946 };
15947
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015948 struct ImageFormatProperties
15949 {
15950 operator const VkImageFormatProperties&() const
15951 {
15952 return *reinterpret_cast<const VkImageFormatProperties*>(this);
15953 }
15954
15955 bool operator==( ImageFormatProperties const& rhs ) const
15956 {
15957 return ( maxExtent == rhs.maxExtent )
15958 && ( maxMipLevels == rhs.maxMipLevels )
15959 && ( maxArrayLayers == rhs.maxArrayLayers )
15960 && ( sampleCounts == rhs.sampleCounts )
15961 && ( maxResourceSize == rhs.maxResourceSize );
15962 }
15963
15964 bool operator!=( ImageFormatProperties const& rhs ) const
15965 {
15966 return !operator==( rhs );
15967 }
15968
15969 Extent3D maxExtent;
15970 uint32_t maxMipLevels;
15971 uint32_t maxArrayLayers;
15972 SampleCountFlags sampleCounts;
15973 DeviceSize maxResourceSize;
15974 };
15975 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
15976
15977 struct ImageCreateInfo
15978 {
15979 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 )
15980 : sType( StructureType::eImageCreateInfo )
15981 , pNext( nullptr )
15982 , flags( flags_ )
15983 , imageType( imageType_ )
15984 , format( format_ )
15985 , extent( extent_ )
15986 , mipLevels( mipLevels_ )
15987 , arrayLayers( arrayLayers_ )
15988 , samples( samples_ )
15989 , tiling( tiling_ )
15990 , usage( usage_ )
15991 , sharingMode( sharingMode_ )
15992 , queueFamilyIndexCount( queueFamilyIndexCount_ )
15993 , pQueueFamilyIndices( pQueueFamilyIndices_ )
15994 , initialLayout( initialLayout_ )
15995 {
15996 }
15997
15998 ImageCreateInfo( VkImageCreateInfo const & rhs )
15999 {
16000 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16001 }
16002
16003 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16004 {
16005 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16006 return *this;
16007 }
16008
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016009 ImageCreateInfo& setPNext( const void* pNext_ )
16010 {
16011 pNext = pNext_;
16012 return *this;
16013 }
16014
16015 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16016 {
16017 flags = flags_;
16018 return *this;
16019 }
16020
16021 ImageCreateInfo& setImageType( ImageType imageType_ )
16022 {
16023 imageType = imageType_;
16024 return *this;
16025 }
16026
16027 ImageCreateInfo& setFormat( Format format_ )
16028 {
16029 format = format_;
16030 return *this;
16031 }
16032
16033 ImageCreateInfo& setExtent( Extent3D extent_ )
16034 {
16035 extent = extent_;
16036 return *this;
16037 }
16038
16039 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16040 {
16041 mipLevels = mipLevels_;
16042 return *this;
16043 }
16044
16045 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16046 {
16047 arrayLayers = arrayLayers_;
16048 return *this;
16049 }
16050
16051 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16052 {
16053 samples = samples_;
16054 return *this;
16055 }
16056
16057 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16058 {
16059 tiling = tiling_;
16060 return *this;
16061 }
16062
16063 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16064 {
16065 usage = usage_;
16066 return *this;
16067 }
16068
16069 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16070 {
16071 sharingMode = sharingMode_;
16072 return *this;
16073 }
16074
16075 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16076 {
16077 queueFamilyIndexCount = queueFamilyIndexCount_;
16078 return *this;
16079 }
16080
16081 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16082 {
16083 pQueueFamilyIndices = pQueueFamilyIndices_;
16084 return *this;
16085 }
16086
16087 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16088 {
16089 initialLayout = initialLayout_;
16090 return *this;
16091 }
16092
16093 operator const VkImageCreateInfo&() const
16094 {
16095 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16096 }
16097
16098 bool operator==( ImageCreateInfo const& rhs ) const
16099 {
16100 return ( sType == rhs.sType )
16101 && ( pNext == rhs.pNext )
16102 && ( flags == rhs.flags )
16103 && ( imageType == rhs.imageType )
16104 && ( format == rhs.format )
16105 && ( extent == rhs.extent )
16106 && ( mipLevels == rhs.mipLevels )
16107 && ( arrayLayers == rhs.arrayLayers )
16108 && ( samples == rhs.samples )
16109 && ( tiling == rhs.tiling )
16110 && ( usage == rhs.usage )
16111 && ( sharingMode == rhs.sharingMode )
16112 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16113 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16114 && ( initialLayout == rhs.initialLayout );
16115 }
16116
16117 bool operator!=( ImageCreateInfo const& rhs ) const
16118 {
16119 return !operator==( rhs );
16120 }
16121
16122 private:
16123 StructureType sType;
16124
16125 public:
16126 const void* pNext;
16127 ImageCreateFlags flags;
16128 ImageType imageType;
16129 Format format;
16130 Extent3D extent;
16131 uint32_t mipLevels;
16132 uint32_t arrayLayers;
16133 SampleCountFlagBits samples;
16134 ImageTiling tiling;
16135 ImageUsageFlags usage;
16136 SharingMode sharingMode;
16137 uint32_t queueFamilyIndexCount;
16138 const uint32_t* pQueueFamilyIndices;
16139 ImageLayout initialLayout;
16140 };
16141 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16142
16143 struct PipelineMultisampleStateCreateInfo
16144 {
16145 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16146 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16147 , pNext( nullptr )
16148 , flags( flags_ )
16149 , rasterizationSamples( rasterizationSamples_ )
16150 , sampleShadingEnable( sampleShadingEnable_ )
16151 , minSampleShading( minSampleShading_ )
16152 , pSampleMask( pSampleMask_ )
16153 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16154 , alphaToOneEnable( alphaToOneEnable_ )
16155 {
16156 }
16157
16158 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16159 {
16160 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16161 }
16162
16163 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16164 {
16165 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16166 return *this;
16167 }
16168
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016169 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16170 {
16171 pNext = pNext_;
16172 return *this;
16173 }
16174
16175 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16176 {
16177 flags = flags_;
16178 return *this;
16179 }
16180
16181 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16182 {
16183 rasterizationSamples = rasterizationSamples_;
16184 return *this;
16185 }
16186
16187 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16188 {
16189 sampleShadingEnable = sampleShadingEnable_;
16190 return *this;
16191 }
16192
16193 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16194 {
16195 minSampleShading = minSampleShading_;
16196 return *this;
16197 }
16198
16199 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16200 {
16201 pSampleMask = pSampleMask_;
16202 return *this;
16203 }
16204
16205 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16206 {
16207 alphaToCoverageEnable = alphaToCoverageEnable_;
16208 return *this;
16209 }
16210
16211 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16212 {
16213 alphaToOneEnable = alphaToOneEnable_;
16214 return *this;
16215 }
16216
16217 operator const VkPipelineMultisampleStateCreateInfo&() const
16218 {
16219 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16220 }
16221
16222 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16223 {
16224 return ( sType == rhs.sType )
16225 && ( pNext == rhs.pNext )
16226 && ( flags == rhs.flags )
16227 && ( rasterizationSamples == rhs.rasterizationSamples )
16228 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16229 && ( minSampleShading == rhs.minSampleShading )
16230 && ( pSampleMask == rhs.pSampleMask )
16231 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16232 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16233 }
16234
16235 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16236 {
16237 return !operator==( rhs );
16238 }
16239
16240 private:
16241 StructureType sType;
16242
16243 public:
16244 const void* pNext;
16245 PipelineMultisampleStateCreateFlags flags;
16246 SampleCountFlagBits rasterizationSamples;
16247 Bool32 sampleShadingEnable;
16248 float minSampleShading;
16249 const SampleMask* pSampleMask;
16250 Bool32 alphaToCoverageEnable;
16251 Bool32 alphaToOneEnable;
16252 };
16253 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16254
16255 struct GraphicsPipelineCreateInfo
16256 {
16257 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 )
16258 : sType( StructureType::eGraphicsPipelineCreateInfo )
16259 , pNext( nullptr )
16260 , flags( flags_ )
16261 , stageCount( stageCount_ )
16262 , pStages( pStages_ )
16263 , pVertexInputState( pVertexInputState_ )
16264 , pInputAssemblyState( pInputAssemblyState_ )
16265 , pTessellationState( pTessellationState_ )
16266 , pViewportState( pViewportState_ )
16267 , pRasterizationState( pRasterizationState_ )
16268 , pMultisampleState( pMultisampleState_ )
16269 , pDepthStencilState( pDepthStencilState_ )
16270 , pColorBlendState( pColorBlendState_ )
16271 , pDynamicState( pDynamicState_ )
16272 , layout( layout_ )
16273 , renderPass( renderPass_ )
16274 , subpass( subpass_ )
16275 , basePipelineHandle( basePipelineHandle_ )
16276 , basePipelineIndex( basePipelineIndex_ )
16277 {
16278 }
16279
16280 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16281 {
16282 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16283 }
16284
16285 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16286 {
16287 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16288 return *this;
16289 }
16290
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016291 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16292 {
16293 pNext = pNext_;
16294 return *this;
16295 }
16296
16297 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16298 {
16299 flags = flags_;
16300 return *this;
16301 }
16302
16303 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16304 {
16305 stageCount = stageCount_;
16306 return *this;
16307 }
16308
16309 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16310 {
16311 pStages = pStages_;
16312 return *this;
16313 }
16314
16315 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16316 {
16317 pVertexInputState = pVertexInputState_;
16318 return *this;
16319 }
16320
16321 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16322 {
16323 pInputAssemblyState = pInputAssemblyState_;
16324 return *this;
16325 }
16326
16327 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16328 {
16329 pTessellationState = pTessellationState_;
16330 return *this;
16331 }
16332
16333 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16334 {
16335 pViewportState = pViewportState_;
16336 return *this;
16337 }
16338
16339 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16340 {
16341 pRasterizationState = pRasterizationState_;
16342 return *this;
16343 }
16344
16345 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16346 {
16347 pMultisampleState = pMultisampleState_;
16348 return *this;
16349 }
16350
16351 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16352 {
16353 pDepthStencilState = pDepthStencilState_;
16354 return *this;
16355 }
16356
16357 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16358 {
16359 pColorBlendState = pColorBlendState_;
16360 return *this;
16361 }
16362
16363 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16364 {
16365 pDynamicState = pDynamicState_;
16366 return *this;
16367 }
16368
16369 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16370 {
16371 layout = layout_;
16372 return *this;
16373 }
16374
16375 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16376 {
16377 renderPass = renderPass_;
16378 return *this;
16379 }
16380
16381 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16382 {
16383 subpass = subpass_;
16384 return *this;
16385 }
16386
16387 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16388 {
16389 basePipelineHandle = basePipelineHandle_;
16390 return *this;
16391 }
16392
16393 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16394 {
16395 basePipelineIndex = basePipelineIndex_;
16396 return *this;
16397 }
16398
16399 operator const VkGraphicsPipelineCreateInfo&() const
16400 {
16401 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16402 }
16403
16404 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16405 {
16406 return ( sType == rhs.sType )
16407 && ( pNext == rhs.pNext )
16408 && ( flags == rhs.flags )
16409 && ( stageCount == rhs.stageCount )
16410 && ( pStages == rhs.pStages )
16411 && ( pVertexInputState == rhs.pVertexInputState )
16412 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16413 && ( pTessellationState == rhs.pTessellationState )
16414 && ( pViewportState == rhs.pViewportState )
16415 && ( pRasterizationState == rhs.pRasterizationState )
16416 && ( pMultisampleState == rhs.pMultisampleState )
16417 && ( pDepthStencilState == rhs.pDepthStencilState )
16418 && ( pColorBlendState == rhs.pColorBlendState )
16419 && ( pDynamicState == rhs.pDynamicState )
16420 && ( layout == rhs.layout )
16421 && ( renderPass == rhs.renderPass )
16422 && ( subpass == rhs.subpass )
16423 && ( basePipelineHandle == rhs.basePipelineHandle )
16424 && ( basePipelineIndex == rhs.basePipelineIndex );
16425 }
16426
16427 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16428 {
16429 return !operator==( rhs );
16430 }
16431
16432 private:
16433 StructureType sType;
16434
16435 public:
16436 const void* pNext;
16437 PipelineCreateFlags flags;
16438 uint32_t stageCount;
16439 const PipelineShaderStageCreateInfo* pStages;
16440 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16441 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16442 const PipelineTessellationStateCreateInfo* pTessellationState;
16443 const PipelineViewportStateCreateInfo* pViewportState;
16444 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16445 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16446 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16447 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16448 const PipelineDynamicStateCreateInfo* pDynamicState;
16449 PipelineLayout layout;
16450 RenderPass renderPass;
16451 uint32_t subpass;
16452 Pipeline basePipelineHandle;
16453 int32_t basePipelineIndex;
16454 };
16455 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16456
16457 struct PhysicalDeviceLimits
16458 {
16459 operator const VkPhysicalDeviceLimits&() const
16460 {
16461 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16462 }
16463
16464 bool operator==( PhysicalDeviceLimits const& rhs ) const
16465 {
16466 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16467 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16468 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16469 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16470 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16471 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16472 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16473 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16474 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16475 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16476 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16477 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16478 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16479 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16480 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16481 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16482 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16483 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16484 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16485 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16486 && ( maxPerStageResources == rhs.maxPerStageResources )
16487 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16488 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16489 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16490 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16491 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16492 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16493 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16494 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16495 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16496 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16497 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16498 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16499 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16500 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16501 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16502 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16503 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16504 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16505 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16506 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16507 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16508 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16509 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16510 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16511 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16512 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16513 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16514 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16515 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16516 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16517 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16518 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16519 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16520 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16521 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16522 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16523 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16524 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16525 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16526 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16527 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16528 && ( maxViewports == rhs.maxViewports )
16529 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16530 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16531 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16532 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16533 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16534 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16535 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16536 && ( minTexelOffset == rhs.minTexelOffset )
16537 && ( maxTexelOffset == rhs.maxTexelOffset )
16538 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16539 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16540 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16541 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16542 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16543 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16544 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16545 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16546 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16547 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16548 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16549 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16550 && ( maxColorAttachments == rhs.maxColorAttachments )
16551 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16552 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16553 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16554 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16555 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16556 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16557 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16558 && ( timestampPeriod == rhs.timestampPeriod )
16559 && ( maxClipDistances == rhs.maxClipDistances )
16560 && ( maxCullDistances == rhs.maxCullDistances )
16561 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16562 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16563 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16564 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16565 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16566 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16567 && ( strictLines == rhs.strictLines )
16568 && ( standardSampleLocations == rhs.standardSampleLocations )
16569 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16570 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16571 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16572 }
16573
16574 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16575 {
16576 return !operator==( rhs );
16577 }
16578
16579 uint32_t maxImageDimension1D;
16580 uint32_t maxImageDimension2D;
16581 uint32_t maxImageDimension3D;
16582 uint32_t maxImageDimensionCube;
16583 uint32_t maxImageArrayLayers;
16584 uint32_t maxTexelBufferElements;
16585 uint32_t maxUniformBufferRange;
16586 uint32_t maxStorageBufferRange;
16587 uint32_t maxPushConstantsSize;
16588 uint32_t maxMemoryAllocationCount;
16589 uint32_t maxSamplerAllocationCount;
16590 DeviceSize bufferImageGranularity;
16591 DeviceSize sparseAddressSpaceSize;
16592 uint32_t maxBoundDescriptorSets;
16593 uint32_t maxPerStageDescriptorSamplers;
16594 uint32_t maxPerStageDescriptorUniformBuffers;
16595 uint32_t maxPerStageDescriptorStorageBuffers;
16596 uint32_t maxPerStageDescriptorSampledImages;
16597 uint32_t maxPerStageDescriptorStorageImages;
16598 uint32_t maxPerStageDescriptorInputAttachments;
16599 uint32_t maxPerStageResources;
16600 uint32_t maxDescriptorSetSamplers;
16601 uint32_t maxDescriptorSetUniformBuffers;
16602 uint32_t maxDescriptorSetUniformBuffersDynamic;
16603 uint32_t maxDescriptorSetStorageBuffers;
16604 uint32_t maxDescriptorSetStorageBuffersDynamic;
16605 uint32_t maxDescriptorSetSampledImages;
16606 uint32_t maxDescriptorSetStorageImages;
16607 uint32_t maxDescriptorSetInputAttachments;
16608 uint32_t maxVertexInputAttributes;
16609 uint32_t maxVertexInputBindings;
16610 uint32_t maxVertexInputAttributeOffset;
16611 uint32_t maxVertexInputBindingStride;
16612 uint32_t maxVertexOutputComponents;
16613 uint32_t maxTessellationGenerationLevel;
16614 uint32_t maxTessellationPatchSize;
16615 uint32_t maxTessellationControlPerVertexInputComponents;
16616 uint32_t maxTessellationControlPerVertexOutputComponents;
16617 uint32_t maxTessellationControlPerPatchOutputComponents;
16618 uint32_t maxTessellationControlTotalOutputComponents;
16619 uint32_t maxTessellationEvaluationInputComponents;
16620 uint32_t maxTessellationEvaluationOutputComponents;
16621 uint32_t maxGeometryShaderInvocations;
16622 uint32_t maxGeometryInputComponents;
16623 uint32_t maxGeometryOutputComponents;
16624 uint32_t maxGeometryOutputVertices;
16625 uint32_t maxGeometryTotalOutputComponents;
16626 uint32_t maxFragmentInputComponents;
16627 uint32_t maxFragmentOutputAttachments;
16628 uint32_t maxFragmentDualSrcAttachments;
16629 uint32_t maxFragmentCombinedOutputResources;
16630 uint32_t maxComputeSharedMemorySize;
16631 uint32_t maxComputeWorkGroupCount[3];
16632 uint32_t maxComputeWorkGroupInvocations;
16633 uint32_t maxComputeWorkGroupSize[3];
16634 uint32_t subPixelPrecisionBits;
16635 uint32_t subTexelPrecisionBits;
16636 uint32_t mipmapPrecisionBits;
16637 uint32_t maxDrawIndexedIndexValue;
16638 uint32_t maxDrawIndirectCount;
16639 float maxSamplerLodBias;
16640 float maxSamplerAnisotropy;
16641 uint32_t maxViewports;
16642 uint32_t maxViewportDimensions[2];
16643 float viewportBoundsRange[2];
16644 uint32_t viewportSubPixelBits;
16645 size_t minMemoryMapAlignment;
16646 DeviceSize minTexelBufferOffsetAlignment;
16647 DeviceSize minUniformBufferOffsetAlignment;
16648 DeviceSize minStorageBufferOffsetAlignment;
16649 int32_t minTexelOffset;
16650 uint32_t maxTexelOffset;
16651 int32_t minTexelGatherOffset;
16652 uint32_t maxTexelGatherOffset;
16653 float minInterpolationOffset;
16654 float maxInterpolationOffset;
16655 uint32_t subPixelInterpolationOffsetBits;
16656 uint32_t maxFramebufferWidth;
16657 uint32_t maxFramebufferHeight;
16658 uint32_t maxFramebufferLayers;
16659 SampleCountFlags framebufferColorSampleCounts;
16660 SampleCountFlags framebufferDepthSampleCounts;
16661 SampleCountFlags framebufferStencilSampleCounts;
16662 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16663 uint32_t maxColorAttachments;
16664 SampleCountFlags sampledImageColorSampleCounts;
16665 SampleCountFlags sampledImageIntegerSampleCounts;
16666 SampleCountFlags sampledImageDepthSampleCounts;
16667 SampleCountFlags sampledImageStencilSampleCounts;
16668 SampleCountFlags storageImageSampleCounts;
16669 uint32_t maxSampleMaskWords;
16670 Bool32 timestampComputeAndGraphics;
16671 float timestampPeriod;
16672 uint32_t maxClipDistances;
16673 uint32_t maxCullDistances;
16674 uint32_t maxCombinedClipAndCullDistances;
16675 uint32_t discreteQueuePriorities;
16676 float pointSizeRange[2];
16677 float lineWidthRange[2];
16678 float pointSizeGranularity;
16679 float lineWidthGranularity;
16680 Bool32 strictLines;
16681 Bool32 standardSampleLocations;
16682 DeviceSize optimalBufferCopyOffsetAlignment;
16683 DeviceSize optimalBufferCopyRowPitchAlignment;
16684 DeviceSize nonCoherentAtomSize;
16685 };
16686 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16687
16688 struct PhysicalDeviceProperties
16689 {
16690 operator const VkPhysicalDeviceProperties&() const
16691 {
16692 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
16693 }
16694
16695 bool operator==( PhysicalDeviceProperties const& rhs ) const
16696 {
16697 return ( apiVersion == rhs.apiVersion )
16698 && ( driverVersion == rhs.driverVersion )
16699 && ( vendorID == rhs.vendorID )
16700 && ( deviceID == rhs.deviceID )
16701 && ( deviceType == rhs.deviceType )
16702 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
16703 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
16704 && ( limits == rhs.limits )
16705 && ( sparseProperties == rhs.sparseProperties );
16706 }
16707
16708 bool operator!=( PhysicalDeviceProperties const& rhs ) const
16709 {
16710 return !operator==( rhs );
16711 }
16712
16713 uint32_t apiVersion;
16714 uint32_t driverVersion;
16715 uint32_t vendorID;
16716 uint32_t deviceID;
16717 PhysicalDeviceType deviceType;
16718 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
16719 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
16720 PhysicalDeviceLimits limits;
16721 PhysicalDeviceSparseProperties sparseProperties;
16722 };
16723 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
16724
Mark Young39389872017-01-19 21:10:49 -070016725 struct PhysicalDeviceProperties2KHR
16726 {
16727 operator const VkPhysicalDeviceProperties2KHR&() const
16728 {
16729 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
16730 }
16731
16732 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
16733 {
16734 return ( sType == rhs.sType )
16735 && ( pNext == rhs.pNext )
16736 && ( properties == rhs.properties );
16737 }
16738
16739 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
16740 {
16741 return !operator==( rhs );
16742 }
16743
16744 private:
16745 StructureType sType;
16746
16747 public:
16748 void* pNext;
16749 PhysicalDeviceProperties properties;
16750 };
16751 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
16752
16753 struct ImageFormatProperties2KHR
16754 {
16755 operator const VkImageFormatProperties2KHR&() const
16756 {
16757 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
16758 }
16759
16760 bool operator==( ImageFormatProperties2KHR const& rhs ) const
16761 {
16762 return ( sType == rhs.sType )
16763 && ( pNext == rhs.pNext )
16764 && ( imageFormatProperties == rhs.imageFormatProperties );
16765 }
16766
16767 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
16768 {
16769 return !operator==( rhs );
16770 }
16771
16772 private:
16773 StructureType sType;
16774
16775 public:
16776 void* pNext;
16777 ImageFormatProperties imageFormatProperties;
16778 };
16779 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16780
16781 struct PhysicalDeviceSparseImageFormatInfo2KHR
16782 {
16783 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
16784 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
16785 , pNext( nullptr )
16786 , format( format_ )
16787 , type( type_ )
16788 , samples( samples_ )
16789 , usage( usage_ )
16790 , tiling( tiling_ )
16791 {
16792 }
16793
16794 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16795 {
16796 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16797 }
16798
16799 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16800 {
16801 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16802 return *this;
16803 }
16804
Mark Young39389872017-01-19 21:10:49 -070016805 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
16806 {
16807 pNext = pNext_;
16808 return *this;
16809 }
16810
16811 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
16812 {
16813 format = format_;
16814 return *this;
16815 }
16816
16817 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
16818 {
16819 type = type_;
16820 return *this;
16821 }
16822
16823 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
16824 {
16825 samples = samples_;
16826 return *this;
16827 }
16828
16829 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
16830 {
16831 usage = usage_;
16832 return *this;
16833 }
16834
16835 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
16836 {
16837 tiling = tiling_;
16838 return *this;
16839 }
16840
16841 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
16842 {
16843 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
16844 }
16845
16846 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16847 {
16848 return ( sType == rhs.sType )
16849 && ( pNext == rhs.pNext )
16850 && ( format == rhs.format )
16851 && ( type == rhs.type )
16852 && ( samples == rhs.samples )
16853 && ( usage == rhs.usage )
16854 && ( tiling == rhs.tiling );
16855 }
16856
16857 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
16858 {
16859 return !operator==( rhs );
16860 }
16861
16862 private:
16863 StructureType sType;
16864
16865 public:
16866 const void* pNext;
16867 Format format;
16868 ImageType type;
16869 SampleCountFlagBits samples;
16870 ImageUsageFlags usage;
16871 ImageTiling tiling;
16872 };
16873 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
16874
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016875 enum class AttachmentDescriptionFlagBits
16876 {
16877 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
16878 };
16879
16880 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
16881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016882 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016883 {
16884 return AttachmentDescriptionFlags( bit0 ) | bit1;
16885 }
16886
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016887 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
16888 {
16889 return ~( AttachmentDescriptionFlags( bits ) );
16890 }
16891
16892 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
16893 {
16894 enum
16895 {
16896 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
16897 };
16898 };
16899
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016900 struct AttachmentDescription
16901 {
16902 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 )
16903 : flags( flags_ )
16904 , format( format_ )
16905 , samples( samples_ )
16906 , loadOp( loadOp_ )
16907 , storeOp( storeOp_ )
16908 , stencilLoadOp( stencilLoadOp_ )
16909 , stencilStoreOp( stencilStoreOp_ )
16910 , initialLayout( initialLayout_ )
16911 , finalLayout( finalLayout_ )
16912 {
16913 }
16914
16915 AttachmentDescription( VkAttachmentDescription const & rhs )
16916 {
16917 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16918 }
16919
16920 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
16921 {
16922 memcpy( this, &rhs, sizeof(AttachmentDescription) );
16923 return *this;
16924 }
16925
16926 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
16927 {
16928 flags = flags_;
16929 return *this;
16930 }
16931
16932 AttachmentDescription& setFormat( Format format_ )
16933 {
16934 format = format_;
16935 return *this;
16936 }
16937
16938 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
16939 {
16940 samples = samples_;
16941 return *this;
16942 }
16943
16944 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
16945 {
16946 loadOp = loadOp_;
16947 return *this;
16948 }
16949
16950 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
16951 {
16952 storeOp = storeOp_;
16953 return *this;
16954 }
16955
16956 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
16957 {
16958 stencilLoadOp = stencilLoadOp_;
16959 return *this;
16960 }
16961
16962 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
16963 {
16964 stencilStoreOp = stencilStoreOp_;
16965 return *this;
16966 }
16967
16968 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
16969 {
16970 initialLayout = initialLayout_;
16971 return *this;
16972 }
16973
16974 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
16975 {
16976 finalLayout = finalLayout_;
16977 return *this;
16978 }
16979
16980 operator const VkAttachmentDescription&() const
16981 {
16982 return *reinterpret_cast<const VkAttachmentDescription*>(this);
16983 }
16984
16985 bool operator==( AttachmentDescription const& rhs ) const
16986 {
16987 return ( flags == rhs.flags )
16988 && ( format == rhs.format )
16989 && ( samples == rhs.samples )
16990 && ( loadOp == rhs.loadOp )
16991 && ( storeOp == rhs.storeOp )
16992 && ( stencilLoadOp == rhs.stencilLoadOp )
16993 && ( stencilStoreOp == rhs.stencilStoreOp )
16994 && ( initialLayout == rhs.initialLayout )
16995 && ( finalLayout == rhs.finalLayout );
16996 }
16997
16998 bool operator!=( AttachmentDescription const& rhs ) const
16999 {
17000 return !operator==( rhs );
17001 }
17002
17003 AttachmentDescriptionFlags flags;
17004 Format format;
17005 SampleCountFlagBits samples;
17006 AttachmentLoadOp loadOp;
17007 AttachmentStoreOp storeOp;
17008 AttachmentLoadOp stencilLoadOp;
17009 AttachmentStoreOp stencilStoreOp;
17010 ImageLayout initialLayout;
17011 ImageLayout finalLayout;
17012 };
17013 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17014
17015 enum class StencilFaceFlagBits
17016 {
17017 eFront = VK_STENCIL_FACE_FRONT_BIT,
17018 eBack = VK_STENCIL_FACE_BACK_BIT,
17019 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17020 };
17021
17022 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017024 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017025 {
17026 return StencilFaceFlags( bit0 ) | bit1;
17027 }
17028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017029 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17030 {
17031 return ~( StencilFaceFlags( bits ) );
17032 }
17033
17034 template <> struct FlagTraits<StencilFaceFlagBits>
17035 {
17036 enum
17037 {
17038 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17039 };
17040 };
17041
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017042 enum class DescriptorPoolCreateFlagBits
17043 {
17044 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17045 };
17046
17047 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017049 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017050 {
17051 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17052 }
17053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017054 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17055 {
17056 return ~( DescriptorPoolCreateFlags( bits ) );
17057 }
17058
17059 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17060 {
17061 enum
17062 {
17063 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17064 };
17065 };
17066
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017067 struct DescriptorPoolCreateInfo
17068 {
17069 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17070 : sType( StructureType::eDescriptorPoolCreateInfo )
17071 , pNext( nullptr )
17072 , flags( flags_ )
17073 , maxSets( maxSets_ )
17074 , poolSizeCount( poolSizeCount_ )
17075 , pPoolSizes( pPoolSizes_ )
17076 {
17077 }
17078
17079 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17080 {
17081 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17082 }
17083
17084 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17085 {
17086 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17087 return *this;
17088 }
17089
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017090 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17091 {
17092 pNext = pNext_;
17093 return *this;
17094 }
17095
17096 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17097 {
17098 flags = flags_;
17099 return *this;
17100 }
17101
17102 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17103 {
17104 maxSets = maxSets_;
17105 return *this;
17106 }
17107
17108 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17109 {
17110 poolSizeCount = poolSizeCount_;
17111 return *this;
17112 }
17113
17114 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17115 {
17116 pPoolSizes = pPoolSizes_;
17117 return *this;
17118 }
17119
17120 operator const VkDescriptorPoolCreateInfo&() const
17121 {
17122 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17123 }
17124
17125 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17126 {
17127 return ( sType == rhs.sType )
17128 && ( pNext == rhs.pNext )
17129 && ( flags == rhs.flags )
17130 && ( maxSets == rhs.maxSets )
17131 && ( poolSizeCount == rhs.poolSizeCount )
17132 && ( pPoolSizes == rhs.pPoolSizes );
17133 }
17134
17135 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17136 {
17137 return !operator==( rhs );
17138 }
17139
17140 private:
17141 StructureType sType;
17142
17143 public:
17144 const void* pNext;
17145 DescriptorPoolCreateFlags flags;
17146 uint32_t maxSets;
17147 uint32_t poolSizeCount;
17148 const DescriptorPoolSize* pPoolSizes;
17149 };
17150 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17151
17152 enum class DependencyFlagBits
17153 {
Mark Young0f183a82017-02-28 09:58:04 -070017154 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17155 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17156 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017157 };
17158
17159 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17160
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017161 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017162 {
17163 return DependencyFlags( bit0 ) | bit1;
17164 }
17165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017166 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17167 {
17168 return ~( DependencyFlags( bits ) );
17169 }
17170
17171 template <> struct FlagTraits<DependencyFlagBits>
17172 {
17173 enum
17174 {
Mark Young0f183a82017-02-28 09:58:04 -070017175 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017176 };
17177 };
17178
17179 struct SubpassDependency
17180 {
17181 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17182 : srcSubpass( srcSubpass_ )
17183 , dstSubpass( dstSubpass_ )
17184 , srcStageMask( srcStageMask_ )
17185 , dstStageMask( dstStageMask_ )
17186 , srcAccessMask( srcAccessMask_ )
17187 , dstAccessMask( dstAccessMask_ )
17188 , dependencyFlags( dependencyFlags_ )
17189 {
17190 }
17191
17192 SubpassDependency( VkSubpassDependency const & rhs )
17193 {
17194 memcpy( this, &rhs, sizeof(SubpassDependency) );
17195 }
17196
17197 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17198 {
17199 memcpy( this, &rhs, sizeof(SubpassDependency) );
17200 return *this;
17201 }
17202
17203 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17204 {
17205 srcSubpass = srcSubpass_;
17206 return *this;
17207 }
17208
17209 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17210 {
17211 dstSubpass = dstSubpass_;
17212 return *this;
17213 }
17214
17215 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17216 {
17217 srcStageMask = srcStageMask_;
17218 return *this;
17219 }
17220
17221 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17222 {
17223 dstStageMask = dstStageMask_;
17224 return *this;
17225 }
17226
17227 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17228 {
17229 srcAccessMask = srcAccessMask_;
17230 return *this;
17231 }
17232
17233 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17234 {
17235 dstAccessMask = dstAccessMask_;
17236 return *this;
17237 }
17238
17239 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17240 {
17241 dependencyFlags = dependencyFlags_;
17242 return *this;
17243 }
17244
17245 operator const VkSubpassDependency&() const
17246 {
17247 return *reinterpret_cast<const VkSubpassDependency*>(this);
17248 }
17249
17250 bool operator==( SubpassDependency const& rhs ) const
17251 {
17252 return ( srcSubpass == rhs.srcSubpass )
17253 && ( dstSubpass == rhs.dstSubpass )
17254 && ( srcStageMask == rhs.srcStageMask )
17255 && ( dstStageMask == rhs.dstStageMask )
17256 && ( srcAccessMask == rhs.srcAccessMask )
17257 && ( dstAccessMask == rhs.dstAccessMask )
17258 && ( dependencyFlags == rhs.dependencyFlags );
17259 }
17260
17261 bool operator!=( SubpassDependency const& rhs ) const
17262 {
17263 return !operator==( rhs );
17264 }
17265
17266 uint32_t srcSubpass;
17267 uint32_t dstSubpass;
17268 PipelineStageFlags srcStageMask;
17269 PipelineStageFlags dstStageMask;
17270 AccessFlags srcAccessMask;
17271 AccessFlags dstAccessMask;
17272 DependencyFlags dependencyFlags;
17273 };
17274 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17275
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017276 enum class PresentModeKHR
17277 {
17278 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17279 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17280 eFifo = VK_PRESENT_MODE_FIFO_KHR,
17281 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR
17282 };
17283
17284 enum class ColorSpaceKHR
17285 {
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070017286 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017287 };
17288
17289 struct SurfaceFormatKHR
17290 {
17291 operator const VkSurfaceFormatKHR&() const
17292 {
17293 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17294 }
17295
17296 bool operator==( SurfaceFormatKHR const& rhs ) const
17297 {
17298 return ( format == rhs.format )
17299 && ( colorSpace == rhs.colorSpace );
17300 }
17301
17302 bool operator!=( SurfaceFormatKHR const& rhs ) const
17303 {
17304 return !operator==( rhs );
17305 }
17306
17307 Format format;
17308 ColorSpaceKHR colorSpace;
17309 };
17310 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17311
17312 enum class DisplayPlaneAlphaFlagBitsKHR
17313 {
17314 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17315 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17316 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17317 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17318 };
17319
17320 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17321
17322 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17323 {
17324 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17325 }
17326
17327 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17328 {
17329 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17330 }
17331
17332 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17333 {
17334 enum
17335 {
17336 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17337 };
17338 };
17339
17340 struct DisplayPlaneCapabilitiesKHR
17341 {
17342 operator const VkDisplayPlaneCapabilitiesKHR&() const
17343 {
17344 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17345 }
17346
17347 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17348 {
17349 return ( supportedAlpha == rhs.supportedAlpha )
17350 && ( minSrcPosition == rhs.minSrcPosition )
17351 && ( maxSrcPosition == rhs.maxSrcPosition )
17352 && ( minSrcExtent == rhs.minSrcExtent )
17353 && ( maxSrcExtent == rhs.maxSrcExtent )
17354 && ( minDstPosition == rhs.minDstPosition )
17355 && ( maxDstPosition == rhs.maxDstPosition )
17356 && ( minDstExtent == rhs.minDstExtent )
17357 && ( maxDstExtent == rhs.maxDstExtent );
17358 }
17359
17360 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17361 {
17362 return !operator==( rhs );
17363 }
17364
17365 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17366 Offset2D minSrcPosition;
17367 Offset2D maxSrcPosition;
17368 Extent2D minSrcExtent;
17369 Extent2D maxSrcExtent;
17370 Offset2D minDstPosition;
17371 Offset2D maxDstPosition;
17372 Extent2D minDstExtent;
17373 Extent2D maxDstExtent;
17374 };
17375 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17376
17377 enum class CompositeAlphaFlagBitsKHR
17378 {
17379 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17380 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17381 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17382 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17383 };
17384
17385 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17386
17387 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17388 {
17389 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17390 }
17391
17392 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17393 {
17394 return ~( CompositeAlphaFlagsKHR( bits ) );
17395 }
17396
17397 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17398 {
17399 enum
17400 {
17401 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17402 };
17403 };
17404
17405 enum class SurfaceTransformFlagBitsKHR
17406 {
17407 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17408 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17409 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17410 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17411 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17412 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17413 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17414 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17415 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17416 };
17417
17418 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17419
17420 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17421 {
17422 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17423 }
17424
17425 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17426 {
17427 return ~( SurfaceTransformFlagsKHR( bits ) );
17428 }
17429
17430 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17431 {
17432 enum
17433 {
17434 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)
17435 };
17436 };
17437
17438 struct DisplayPropertiesKHR
17439 {
17440 operator const VkDisplayPropertiesKHR&() const
17441 {
17442 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17443 }
17444
17445 bool operator==( DisplayPropertiesKHR const& rhs ) const
17446 {
17447 return ( display == rhs.display )
17448 && ( displayName == rhs.displayName )
17449 && ( physicalDimensions == rhs.physicalDimensions )
17450 && ( physicalResolution == rhs.physicalResolution )
17451 && ( supportedTransforms == rhs.supportedTransforms )
17452 && ( planeReorderPossible == rhs.planeReorderPossible )
17453 && ( persistentContent == rhs.persistentContent );
17454 }
17455
17456 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17457 {
17458 return !operator==( rhs );
17459 }
17460
17461 DisplayKHR display;
17462 const char* displayName;
17463 Extent2D physicalDimensions;
17464 Extent2D physicalResolution;
17465 SurfaceTransformFlagsKHR supportedTransforms;
17466 Bool32 planeReorderPossible;
17467 Bool32 persistentContent;
17468 };
17469 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17470
17471 struct DisplaySurfaceCreateInfoKHR
17472 {
17473 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() )
17474 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17475 , pNext( nullptr )
17476 , flags( flags_ )
17477 , displayMode( displayMode_ )
17478 , planeIndex( planeIndex_ )
17479 , planeStackIndex( planeStackIndex_ )
17480 , transform( transform_ )
17481 , globalAlpha( globalAlpha_ )
17482 , alphaMode( alphaMode_ )
17483 , imageExtent( imageExtent_ )
17484 {
17485 }
17486
17487 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17488 {
17489 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17490 }
17491
17492 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17493 {
17494 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17495 return *this;
17496 }
17497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017498 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17499 {
17500 pNext = pNext_;
17501 return *this;
17502 }
17503
17504 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17505 {
17506 flags = flags_;
17507 return *this;
17508 }
17509
17510 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17511 {
17512 displayMode = displayMode_;
17513 return *this;
17514 }
17515
17516 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17517 {
17518 planeIndex = planeIndex_;
17519 return *this;
17520 }
17521
17522 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17523 {
17524 planeStackIndex = planeStackIndex_;
17525 return *this;
17526 }
17527
17528 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17529 {
17530 transform = transform_;
17531 return *this;
17532 }
17533
17534 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17535 {
17536 globalAlpha = globalAlpha_;
17537 return *this;
17538 }
17539
17540 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17541 {
17542 alphaMode = alphaMode_;
17543 return *this;
17544 }
17545
17546 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17547 {
17548 imageExtent = imageExtent_;
17549 return *this;
17550 }
17551
17552 operator const VkDisplaySurfaceCreateInfoKHR&() const
17553 {
17554 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17555 }
17556
17557 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17558 {
17559 return ( sType == rhs.sType )
17560 && ( pNext == rhs.pNext )
17561 && ( flags == rhs.flags )
17562 && ( displayMode == rhs.displayMode )
17563 && ( planeIndex == rhs.planeIndex )
17564 && ( planeStackIndex == rhs.planeStackIndex )
17565 && ( transform == rhs.transform )
17566 && ( globalAlpha == rhs.globalAlpha )
17567 && ( alphaMode == rhs.alphaMode )
17568 && ( imageExtent == rhs.imageExtent );
17569 }
17570
17571 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17572 {
17573 return !operator==( rhs );
17574 }
17575
17576 private:
17577 StructureType sType;
17578
17579 public:
17580 const void* pNext;
17581 DisplaySurfaceCreateFlagsKHR flags;
17582 DisplayModeKHR displayMode;
17583 uint32_t planeIndex;
17584 uint32_t planeStackIndex;
17585 SurfaceTransformFlagBitsKHR transform;
17586 float globalAlpha;
17587 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17588 Extent2D imageExtent;
17589 };
17590 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17591
17592 struct SurfaceCapabilitiesKHR
17593 {
17594 operator const VkSurfaceCapabilitiesKHR&() const
17595 {
17596 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17597 }
17598
17599 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17600 {
17601 return ( minImageCount == rhs.minImageCount )
17602 && ( maxImageCount == rhs.maxImageCount )
17603 && ( currentExtent == rhs.currentExtent )
17604 && ( minImageExtent == rhs.minImageExtent )
17605 && ( maxImageExtent == rhs.maxImageExtent )
17606 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17607 && ( supportedTransforms == rhs.supportedTransforms )
17608 && ( currentTransform == rhs.currentTransform )
17609 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17610 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17611 }
17612
17613 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17614 {
17615 return !operator==( rhs );
17616 }
17617
17618 uint32_t minImageCount;
17619 uint32_t maxImageCount;
17620 Extent2D currentExtent;
17621 Extent2D minImageExtent;
17622 Extent2D maxImageExtent;
17623 uint32_t maxImageArrayLayers;
17624 SurfaceTransformFlagsKHR supportedTransforms;
17625 SurfaceTransformFlagBitsKHR currentTransform;
17626 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17627 ImageUsageFlags supportedUsageFlags;
17628 };
17629 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17630
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017631 enum class DebugReportFlagBitsEXT
17632 {
17633 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
17634 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
17635 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
17636 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
17637 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
17638 };
17639
17640 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
17641
17642 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
17643 {
17644 return DebugReportFlagsEXT( bit0 ) | bit1;
17645 }
17646
17647 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
17648 {
17649 return ~( DebugReportFlagsEXT( bits ) );
17650 }
17651
17652 template <> struct FlagTraits<DebugReportFlagBitsEXT>
17653 {
17654 enum
17655 {
17656 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
17657 };
17658 };
17659
17660 struct DebugReportCallbackCreateInfoEXT
17661 {
17662 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
17663 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
17664 , pNext( nullptr )
17665 , flags( flags_ )
17666 , pfnCallback( pfnCallback_ )
17667 , pUserData( pUserData_ )
17668 {
17669 }
17670
17671 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
17672 {
17673 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17674 }
17675
17676 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
17677 {
17678 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17679 return *this;
17680 }
17681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017682 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
17683 {
17684 pNext = pNext_;
17685 return *this;
17686 }
17687
17688 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
17689 {
17690 flags = flags_;
17691 return *this;
17692 }
17693
17694 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
17695 {
17696 pfnCallback = pfnCallback_;
17697 return *this;
17698 }
17699
17700 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
17701 {
17702 pUserData = pUserData_;
17703 return *this;
17704 }
17705
17706 operator const VkDebugReportCallbackCreateInfoEXT&() const
17707 {
17708 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
17709 }
17710
17711 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
17712 {
17713 return ( sType == rhs.sType )
17714 && ( pNext == rhs.pNext )
17715 && ( flags == rhs.flags )
17716 && ( pfnCallback == rhs.pfnCallback )
17717 && ( pUserData == rhs.pUserData );
17718 }
17719
17720 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
17721 {
17722 return !operator==( rhs );
17723 }
17724
17725 private:
17726 StructureType sType;
17727
17728 public:
17729 const void* pNext;
17730 DebugReportFlagsEXT flags;
17731 PFN_vkDebugReportCallbackEXT pfnCallback;
17732 void* pUserData;
17733 };
17734 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
17735
17736 enum class DebugReportObjectTypeEXT
17737 {
17738 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
17739 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
17740 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
17741 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
17742 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
17743 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
17744 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
17745 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
17746 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
17747 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
17748 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
17749 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
17750 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
17751 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
17752 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
17753 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
17754 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
17755 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
17756 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
17757 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
17758 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
17759 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
17760 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
17761 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
17762 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
17763 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
17764 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
17765 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
17766 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
17767 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
17768 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
17769 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
17770 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
17771 };
17772
17773 struct DebugMarkerObjectNameInfoEXT
17774 {
17775 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
17776 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
17777 , pNext( nullptr )
17778 , objectType( objectType_ )
17779 , object( object_ )
17780 , pObjectName( pObjectName_ )
17781 {
17782 }
17783
17784 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
17785 {
17786 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17787 }
17788
17789 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
17790 {
17791 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17792 return *this;
17793 }
17794
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017795 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
17796 {
17797 pNext = pNext_;
17798 return *this;
17799 }
17800
17801 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17802 {
17803 objectType = objectType_;
17804 return *this;
17805 }
17806
17807 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
17808 {
17809 object = object_;
17810 return *this;
17811 }
17812
17813 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
17814 {
17815 pObjectName = pObjectName_;
17816 return *this;
17817 }
17818
17819 operator const VkDebugMarkerObjectNameInfoEXT&() const
17820 {
17821 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
17822 }
17823
17824 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
17825 {
17826 return ( sType == rhs.sType )
17827 && ( pNext == rhs.pNext )
17828 && ( objectType == rhs.objectType )
17829 && ( object == rhs.object )
17830 && ( pObjectName == rhs.pObjectName );
17831 }
17832
17833 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
17834 {
17835 return !operator==( rhs );
17836 }
17837
17838 private:
17839 StructureType sType;
17840
17841 public:
17842 const void* pNext;
17843 DebugReportObjectTypeEXT objectType;
17844 uint64_t object;
17845 const char* pObjectName;
17846 };
17847 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
17848
17849 struct DebugMarkerObjectTagInfoEXT
17850 {
17851 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
17852 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
17853 , pNext( nullptr )
17854 , objectType( objectType_ )
17855 , object( object_ )
17856 , tagName( tagName_ )
17857 , tagSize( tagSize_ )
17858 , pTag( pTag_ )
17859 {
17860 }
17861
17862 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
17863 {
17864 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17865 }
17866
17867 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
17868 {
17869 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
17870 return *this;
17871 }
17872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017873 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
17874 {
17875 pNext = pNext_;
17876 return *this;
17877 }
17878
17879 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17880 {
17881 objectType = objectType_;
17882 return *this;
17883 }
17884
17885 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
17886 {
17887 object = object_;
17888 return *this;
17889 }
17890
17891 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
17892 {
17893 tagName = tagName_;
17894 return *this;
17895 }
17896
17897 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
17898 {
17899 tagSize = tagSize_;
17900 return *this;
17901 }
17902
17903 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
17904 {
17905 pTag = pTag_;
17906 return *this;
17907 }
17908
17909 operator const VkDebugMarkerObjectTagInfoEXT&() const
17910 {
17911 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
17912 }
17913
17914 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
17915 {
17916 return ( sType == rhs.sType )
17917 && ( pNext == rhs.pNext )
17918 && ( objectType == rhs.objectType )
17919 && ( object == rhs.object )
17920 && ( tagName == rhs.tagName )
17921 && ( tagSize == rhs.tagSize )
17922 && ( pTag == rhs.pTag );
17923 }
17924
17925 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
17926 {
17927 return !operator==( rhs );
17928 }
17929
17930 private:
17931 StructureType sType;
17932
17933 public:
17934 const void* pNext;
17935 DebugReportObjectTypeEXT objectType;
17936 uint64_t object;
17937 uint64_t tagName;
17938 size_t tagSize;
17939 const void* pTag;
17940 };
17941 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
17942
17943 enum class DebugReportErrorEXT
17944 {
17945 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
17946 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
17947 };
17948
17949 enum class RasterizationOrderAMD
17950 {
17951 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
17952 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
17953 };
17954
17955 struct PipelineRasterizationStateRasterizationOrderAMD
17956 {
17957 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
17958 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
17959 , pNext( nullptr )
17960 , rasterizationOrder( rasterizationOrder_ )
17961 {
17962 }
17963
17964 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17965 {
17966 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17967 }
17968
17969 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
17970 {
17971 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
17972 return *this;
17973 }
17974
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017975 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
17976 {
17977 pNext = pNext_;
17978 return *this;
17979 }
17980
17981 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
17982 {
17983 rasterizationOrder = rasterizationOrder_;
17984 return *this;
17985 }
17986
17987 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
17988 {
17989 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
17990 }
17991
17992 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
17993 {
17994 return ( sType == rhs.sType )
17995 && ( pNext == rhs.pNext )
17996 && ( rasterizationOrder == rhs.rasterizationOrder );
17997 }
17998
17999 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18000 {
18001 return !operator==( rhs );
18002 }
18003
18004 private:
18005 StructureType sType;
18006
18007 public:
18008 const void* pNext;
18009 RasterizationOrderAMD rasterizationOrder;
18010 };
18011 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18012
18013 enum class ExternalMemoryHandleTypeFlagBitsNV
18014 {
18015 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18016 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18017 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18018 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18019 };
18020
18021 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18022
18023 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18024 {
18025 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18026 }
18027
18028 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18029 {
18030 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18031 }
18032
18033 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18034 {
18035 enum
18036 {
18037 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18038 };
18039 };
18040
18041 struct ExternalMemoryImageCreateInfoNV
18042 {
18043 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18044 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18045 , pNext( nullptr )
18046 , handleTypes( handleTypes_ )
18047 {
18048 }
18049
18050 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18051 {
18052 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18053 }
18054
18055 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18056 {
18057 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18058 return *this;
18059 }
18060
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018061 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18062 {
18063 pNext = pNext_;
18064 return *this;
18065 }
18066
18067 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18068 {
18069 handleTypes = handleTypes_;
18070 return *this;
18071 }
18072
18073 operator const VkExternalMemoryImageCreateInfoNV&() const
18074 {
18075 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18076 }
18077
18078 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18079 {
18080 return ( sType == rhs.sType )
18081 && ( pNext == rhs.pNext )
18082 && ( handleTypes == rhs.handleTypes );
18083 }
18084
18085 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18086 {
18087 return !operator==( rhs );
18088 }
18089
18090 private:
18091 StructureType sType;
18092
18093 public:
18094 const void* pNext;
18095 ExternalMemoryHandleTypeFlagsNV handleTypes;
18096 };
18097 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18098
18099 struct ExportMemoryAllocateInfoNV
18100 {
18101 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18102 : sType( StructureType::eExportMemoryAllocateInfoNV )
18103 , pNext( nullptr )
18104 , handleTypes( handleTypes_ )
18105 {
18106 }
18107
18108 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18109 {
18110 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18111 }
18112
18113 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18114 {
18115 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18116 return *this;
18117 }
18118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018119 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18120 {
18121 pNext = pNext_;
18122 return *this;
18123 }
18124
18125 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18126 {
18127 handleTypes = handleTypes_;
18128 return *this;
18129 }
18130
18131 operator const VkExportMemoryAllocateInfoNV&() const
18132 {
18133 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18134 }
18135
18136 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18137 {
18138 return ( sType == rhs.sType )
18139 && ( pNext == rhs.pNext )
18140 && ( handleTypes == rhs.handleTypes );
18141 }
18142
18143 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18144 {
18145 return !operator==( rhs );
18146 }
18147
18148 private:
18149 StructureType sType;
18150
18151 public:
18152 const void* pNext;
18153 ExternalMemoryHandleTypeFlagsNV handleTypes;
18154 };
18155 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18156
18157#ifdef VK_USE_PLATFORM_WIN32_KHR
18158 struct ImportMemoryWin32HandleInfoNV
18159 {
18160 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18161 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18162 , pNext( nullptr )
18163 , handleType( handleType_ )
18164 , handle( handle_ )
18165 {
18166 }
18167
18168 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18169 {
18170 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18171 }
18172
18173 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18174 {
18175 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18176 return *this;
18177 }
18178
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018179 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18180 {
18181 pNext = pNext_;
18182 return *this;
18183 }
18184
18185 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18186 {
18187 handleType = handleType_;
18188 return *this;
18189 }
18190
18191 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18192 {
18193 handle = handle_;
18194 return *this;
18195 }
18196
18197 operator const VkImportMemoryWin32HandleInfoNV&() const
18198 {
18199 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18200 }
18201
18202 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18203 {
18204 return ( sType == rhs.sType )
18205 && ( pNext == rhs.pNext )
18206 && ( handleType == rhs.handleType )
18207 && ( handle == rhs.handle );
18208 }
18209
18210 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18211 {
18212 return !operator==( rhs );
18213 }
18214
18215 private:
18216 StructureType sType;
18217
18218 public:
18219 const void* pNext;
18220 ExternalMemoryHandleTypeFlagsNV handleType;
18221 HANDLE handle;
18222 };
18223 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18224#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18225
18226 enum class ExternalMemoryFeatureFlagBitsNV
18227 {
18228 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18229 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18230 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18231 };
18232
18233 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18234
18235 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18236 {
18237 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18238 }
18239
18240 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18241 {
18242 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18243 }
18244
18245 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18246 {
18247 enum
18248 {
18249 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18250 };
18251 };
18252
18253 struct ExternalImageFormatPropertiesNV
18254 {
18255 operator const VkExternalImageFormatPropertiesNV&() const
18256 {
18257 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18258 }
18259
18260 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18261 {
18262 return ( imageFormatProperties == rhs.imageFormatProperties )
18263 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18264 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18265 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18266 }
18267
18268 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18269 {
18270 return !operator==( rhs );
18271 }
18272
18273 ImageFormatProperties imageFormatProperties;
18274 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18275 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18276 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18277 };
18278 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18279
18280 enum class ValidationCheckEXT
18281 {
18282 eAll = VK_VALIDATION_CHECK_ALL_EXT
18283 };
18284
18285 struct ValidationFlagsEXT
18286 {
18287 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18288 : sType( StructureType::eValidationFlagsEXT )
18289 , pNext( nullptr )
18290 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18291 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18292 {
18293 }
18294
18295 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18296 {
18297 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18298 }
18299
18300 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18301 {
18302 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18303 return *this;
18304 }
18305
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018306 ValidationFlagsEXT& setPNext( const void* pNext_ )
18307 {
18308 pNext = pNext_;
18309 return *this;
18310 }
18311
18312 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18313 {
18314 disabledValidationCheckCount = disabledValidationCheckCount_;
18315 return *this;
18316 }
18317
18318 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18319 {
18320 pDisabledValidationChecks = pDisabledValidationChecks_;
18321 return *this;
18322 }
18323
18324 operator const VkValidationFlagsEXT&() const
18325 {
18326 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18327 }
18328
18329 bool operator==( ValidationFlagsEXT const& rhs ) const
18330 {
18331 return ( sType == rhs.sType )
18332 && ( pNext == rhs.pNext )
18333 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18334 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18335 }
18336
18337 bool operator!=( ValidationFlagsEXT const& rhs ) const
18338 {
18339 return !operator==( rhs );
18340 }
18341
18342 private:
18343 StructureType sType;
18344
18345 public:
18346 const void* pNext;
18347 uint32_t disabledValidationCheckCount;
18348 ValidationCheckEXT* pDisabledValidationChecks;
18349 };
18350 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18351
18352 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18353 {
18354 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18355 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18356 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18357 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18358 };
18359
18360 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18361
18362 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18363 {
18364 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18365 }
18366
18367 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18368 {
18369 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18370 }
18371
18372 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18373 {
18374 enum
18375 {
18376 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18377 };
18378 };
18379
18380 enum class ObjectEntryUsageFlagBitsNVX
18381 {
18382 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18383 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18384 };
18385
18386 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18387
18388 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18389 {
18390 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18391 }
18392
18393 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18394 {
18395 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18396 }
18397
18398 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18399 {
18400 enum
18401 {
18402 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18403 };
18404 };
18405
18406 enum class IndirectCommandsTokenTypeNVX
18407 {
18408 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18409 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18410 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18411 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18412 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18413 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18414 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18415 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18416 };
18417
18418 struct IndirectCommandsTokenNVX
18419 {
18420 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18421 : tokenType( tokenType_ )
18422 , buffer( buffer_ )
18423 , offset( offset_ )
18424 {
18425 }
18426
18427 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18428 {
18429 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18430 }
18431
18432 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18433 {
18434 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18435 return *this;
18436 }
18437
18438 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18439 {
18440 tokenType = tokenType_;
18441 return *this;
18442 }
18443
18444 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18445 {
18446 buffer = buffer_;
18447 return *this;
18448 }
18449
18450 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18451 {
18452 offset = offset_;
18453 return *this;
18454 }
18455
18456 operator const VkIndirectCommandsTokenNVX&() const
18457 {
18458 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18459 }
18460
18461 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18462 {
18463 return ( tokenType == rhs.tokenType )
18464 && ( buffer == rhs.buffer )
18465 && ( offset == rhs.offset );
18466 }
18467
18468 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18469 {
18470 return !operator==( rhs );
18471 }
18472
18473 IndirectCommandsTokenTypeNVX tokenType;
18474 Buffer buffer;
18475 DeviceSize offset;
18476 };
18477 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18478
18479 struct IndirectCommandsLayoutTokenNVX
18480 {
18481 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18482 : tokenType( tokenType_ )
18483 , bindingUnit( bindingUnit_ )
18484 , dynamicCount( dynamicCount_ )
18485 , divisor( divisor_ )
18486 {
18487 }
18488
18489 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18490 {
18491 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18492 }
18493
18494 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18495 {
18496 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18497 return *this;
18498 }
18499
18500 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18501 {
18502 tokenType = tokenType_;
18503 return *this;
18504 }
18505
18506 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18507 {
18508 bindingUnit = bindingUnit_;
18509 return *this;
18510 }
18511
18512 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18513 {
18514 dynamicCount = dynamicCount_;
18515 return *this;
18516 }
18517
18518 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18519 {
18520 divisor = divisor_;
18521 return *this;
18522 }
18523
18524 operator const VkIndirectCommandsLayoutTokenNVX&() const
18525 {
18526 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18527 }
18528
18529 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18530 {
18531 return ( tokenType == rhs.tokenType )
18532 && ( bindingUnit == rhs.bindingUnit )
18533 && ( dynamicCount == rhs.dynamicCount )
18534 && ( divisor == rhs.divisor );
18535 }
18536
18537 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18538 {
18539 return !operator==( rhs );
18540 }
18541
18542 IndirectCommandsTokenTypeNVX tokenType;
18543 uint32_t bindingUnit;
18544 uint32_t dynamicCount;
18545 uint32_t divisor;
18546 };
18547 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18548
18549 struct IndirectCommandsLayoutCreateInfoNVX
18550 {
18551 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18552 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18553 , pNext( nullptr )
18554 , pipelineBindPoint( pipelineBindPoint_ )
18555 , flags( flags_ )
18556 , tokenCount( tokenCount_ )
18557 , pTokens( pTokens_ )
18558 {
18559 }
18560
18561 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18562 {
18563 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18564 }
18565
18566 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18567 {
18568 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18569 return *this;
18570 }
18571
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018572 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18573 {
18574 pNext = pNext_;
18575 return *this;
18576 }
18577
18578 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18579 {
18580 pipelineBindPoint = pipelineBindPoint_;
18581 return *this;
18582 }
18583
18584 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18585 {
18586 flags = flags_;
18587 return *this;
18588 }
18589
18590 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18591 {
18592 tokenCount = tokenCount_;
18593 return *this;
18594 }
18595
18596 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18597 {
18598 pTokens = pTokens_;
18599 return *this;
18600 }
18601
18602 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18603 {
18604 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18605 }
18606
18607 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18608 {
18609 return ( sType == rhs.sType )
18610 && ( pNext == rhs.pNext )
18611 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18612 && ( flags == rhs.flags )
18613 && ( tokenCount == rhs.tokenCount )
18614 && ( pTokens == rhs.pTokens );
18615 }
18616
18617 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18618 {
18619 return !operator==( rhs );
18620 }
18621
18622 private:
18623 StructureType sType;
18624
18625 public:
18626 const void* pNext;
18627 PipelineBindPoint pipelineBindPoint;
18628 IndirectCommandsLayoutUsageFlagsNVX flags;
18629 uint32_t tokenCount;
18630 const IndirectCommandsLayoutTokenNVX* pTokens;
18631 };
18632 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
18633
18634 enum class ObjectEntryTypeNVX
18635 {
18636 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
18637 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
18638 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
18639 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
18640 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
18641 };
18642
18643 struct ObjectTableCreateInfoNVX
18644 {
18645 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 )
18646 : sType( StructureType::eObjectTableCreateInfoNVX )
18647 , pNext( nullptr )
18648 , objectCount( objectCount_ )
18649 , pObjectEntryTypes( pObjectEntryTypes_ )
18650 , pObjectEntryCounts( pObjectEntryCounts_ )
18651 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
18652 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
18653 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
18654 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
18655 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
18656 , maxPipelineLayouts( maxPipelineLayouts_ )
18657 {
18658 }
18659
18660 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
18661 {
18662 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18663 }
18664
18665 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
18666 {
18667 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18668 return *this;
18669 }
18670
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018671 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
18672 {
18673 pNext = pNext_;
18674 return *this;
18675 }
18676
18677 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
18678 {
18679 objectCount = objectCount_;
18680 return *this;
18681 }
18682
18683 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
18684 {
18685 pObjectEntryTypes = pObjectEntryTypes_;
18686 return *this;
18687 }
18688
18689 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
18690 {
18691 pObjectEntryCounts = pObjectEntryCounts_;
18692 return *this;
18693 }
18694
18695 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
18696 {
18697 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
18698 return *this;
18699 }
18700
18701 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
18702 {
18703 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
18704 return *this;
18705 }
18706
18707 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
18708 {
18709 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
18710 return *this;
18711 }
18712
18713 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
18714 {
18715 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
18716 return *this;
18717 }
18718
18719 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
18720 {
18721 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
18722 return *this;
18723 }
18724
18725 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
18726 {
18727 maxPipelineLayouts = maxPipelineLayouts_;
18728 return *this;
18729 }
18730
18731 operator const VkObjectTableCreateInfoNVX&() const
18732 {
18733 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
18734 }
18735
18736 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
18737 {
18738 return ( sType == rhs.sType )
18739 && ( pNext == rhs.pNext )
18740 && ( objectCount == rhs.objectCount )
18741 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
18742 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
18743 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
18744 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
18745 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
18746 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
18747 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
18748 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
18749 }
18750
18751 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
18752 {
18753 return !operator==( rhs );
18754 }
18755
18756 private:
18757 StructureType sType;
18758
18759 public:
18760 const void* pNext;
18761 uint32_t objectCount;
18762 const ObjectEntryTypeNVX* pObjectEntryTypes;
18763 const uint32_t* pObjectEntryCounts;
18764 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
18765 uint32_t maxUniformBuffersPerDescriptor;
18766 uint32_t maxStorageBuffersPerDescriptor;
18767 uint32_t maxStorageImagesPerDescriptor;
18768 uint32_t maxSampledImagesPerDescriptor;
18769 uint32_t maxPipelineLayouts;
18770 };
18771 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
18772
18773 struct ObjectTableEntryNVX
18774 {
18775 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
18776 : type( type_ )
18777 , flags( flags_ )
18778 {
18779 }
18780
18781 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
18782 {
18783 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18784 }
18785
18786 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
18787 {
18788 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18789 return *this;
18790 }
18791
18792 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
18793 {
18794 type = type_;
18795 return *this;
18796 }
18797
18798 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18799 {
18800 flags = flags_;
18801 return *this;
18802 }
18803
18804 operator const VkObjectTableEntryNVX&() const
18805 {
18806 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
18807 }
18808
18809 bool operator==( ObjectTableEntryNVX const& rhs ) const
18810 {
18811 return ( type == rhs.type )
18812 && ( flags == rhs.flags );
18813 }
18814
18815 bool operator!=( ObjectTableEntryNVX const& rhs ) const
18816 {
18817 return !operator==( rhs );
18818 }
18819
18820 ObjectEntryTypeNVX type;
18821 ObjectEntryUsageFlagsNVX flags;
18822 };
18823 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
18824
18825 struct ObjectTablePipelineEntryNVX
18826 {
18827 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
18828 : type( type_ )
18829 , flags( flags_ )
18830 , pipeline( pipeline_ )
18831 {
18832 }
18833
18834 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
18835 {
18836 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18837 }
18838
18839 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
18840 {
18841 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
18842 return *this;
18843 }
18844
18845 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
18846 {
18847 type = type_;
18848 return *this;
18849 }
18850
18851 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18852 {
18853 flags = flags_;
18854 return *this;
18855 }
18856
18857 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
18858 {
18859 pipeline = pipeline_;
18860 return *this;
18861 }
18862
18863 operator const VkObjectTablePipelineEntryNVX&() const
18864 {
18865 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
18866 }
18867
18868 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
18869 {
18870 return ( type == rhs.type )
18871 && ( flags == rhs.flags )
18872 && ( pipeline == rhs.pipeline );
18873 }
18874
18875 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
18876 {
18877 return !operator==( rhs );
18878 }
18879
18880 ObjectEntryTypeNVX type;
18881 ObjectEntryUsageFlagsNVX flags;
18882 Pipeline pipeline;
18883 };
18884 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
18885
18886 struct ObjectTableDescriptorSetEntryNVX
18887 {
18888 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
18889 : type( type_ )
18890 , flags( flags_ )
18891 , pipelineLayout( pipelineLayout_ )
18892 , descriptorSet( descriptorSet_ )
18893 {
18894 }
18895
18896 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
18897 {
18898 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18899 }
18900
18901 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
18902 {
18903 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
18904 return *this;
18905 }
18906
18907 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
18908 {
18909 type = type_;
18910 return *this;
18911 }
18912
18913 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18914 {
18915 flags = flags_;
18916 return *this;
18917 }
18918
18919 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
18920 {
18921 pipelineLayout = pipelineLayout_;
18922 return *this;
18923 }
18924
18925 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
18926 {
18927 descriptorSet = descriptorSet_;
18928 return *this;
18929 }
18930
18931 operator const VkObjectTableDescriptorSetEntryNVX&() const
18932 {
18933 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
18934 }
18935
18936 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18937 {
18938 return ( type == rhs.type )
18939 && ( flags == rhs.flags )
18940 && ( pipelineLayout == rhs.pipelineLayout )
18941 && ( descriptorSet == rhs.descriptorSet );
18942 }
18943
18944 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
18945 {
18946 return !operator==( rhs );
18947 }
18948
18949 ObjectEntryTypeNVX type;
18950 ObjectEntryUsageFlagsNVX flags;
18951 PipelineLayout pipelineLayout;
18952 DescriptorSet descriptorSet;
18953 };
18954 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
18955
18956 struct ObjectTableVertexBufferEntryNVX
18957 {
18958 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
18959 : type( type_ )
18960 , flags( flags_ )
18961 , buffer( buffer_ )
18962 {
18963 }
18964
18965 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
18966 {
18967 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18968 }
18969
18970 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
18971 {
18972 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
18973 return *this;
18974 }
18975
18976 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
18977 {
18978 type = type_;
18979 return *this;
18980 }
18981
18982 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18983 {
18984 flags = flags_;
18985 return *this;
18986 }
18987
18988 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
18989 {
18990 buffer = buffer_;
18991 return *this;
18992 }
18993
18994 operator const VkObjectTableVertexBufferEntryNVX&() const
18995 {
18996 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
18997 }
18998
18999 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19000 {
19001 return ( type == rhs.type )
19002 && ( flags == rhs.flags )
19003 && ( buffer == rhs.buffer );
19004 }
19005
19006 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19007 {
19008 return !operator==( rhs );
19009 }
19010
19011 ObjectEntryTypeNVX type;
19012 ObjectEntryUsageFlagsNVX flags;
19013 Buffer buffer;
19014 };
19015 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19016
19017 struct ObjectTableIndexBufferEntryNVX
19018 {
Mark Young39389872017-01-19 21:10:49 -070019019 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019020 : type( type_ )
19021 , flags( flags_ )
19022 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019023 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019024 {
19025 }
19026
19027 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19028 {
19029 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19030 }
19031
19032 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19033 {
19034 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19035 return *this;
19036 }
19037
19038 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19039 {
19040 type = type_;
19041 return *this;
19042 }
19043
19044 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19045 {
19046 flags = flags_;
19047 return *this;
19048 }
19049
19050 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19051 {
19052 buffer = buffer_;
19053 return *this;
19054 }
19055
Mark Young39389872017-01-19 21:10:49 -070019056 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19057 {
19058 indexType = indexType_;
19059 return *this;
19060 }
19061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019062 operator const VkObjectTableIndexBufferEntryNVX&() const
19063 {
19064 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19065 }
19066
19067 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19068 {
19069 return ( type == rhs.type )
19070 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019071 && ( buffer == rhs.buffer )
19072 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019073 }
19074
19075 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19076 {
19077 return !operator==( rhs );
19078 }
19079
19080 ObjectEntryTypeNVX type;
19081 ObjectEntryUsageFlagsNVX flags;
19082 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019083 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019084 };
19085 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19086
19087 struct ObjectTablePushConstantEntryNVX
19088 {
19089 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19090 : type( type_ )
19091 , flags( flags_ )
19092 , pipelineLayout( pipelineLayout_ )
19093 , stageFlags( stageFlags_ )
19094 {
19095 }
19096
19097 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19098 {
19099 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19100 }
19101
19102 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19103 {
19104 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19105 return *this;
19106 }
19107
19108 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19109 {
19110 type = type_;
19111 return *this;
19112 }
19113
19114 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19115 {
19116 flags = flags_;
19117 return *this;
19118 }
19119
19120 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19121 {
19122 pipelineLayout = pipelineLayout_;
19123 return *this;
19124 }
19125
19126 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19127 {
19128 stageFlags = stageFlags_;
19129 return *this;
19130 }
19131
19132 operator const VkObjectTablePushConstantEntryNVX&() const
19133 {
19134 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19135 }
19136
19137 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19138 {
19139 return ( type == rhs.type )
19140 && ( flags == rhs.flags )
19141 && ( pipelineLayout == rhs.pipelineLayout )
19142 && ( stageFlags == rhs.stageFlags );
19143 }
19144
19145 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19146 {
19147 return !operator==( rhs );
19148 }
19149
19150 ObjectEntryTypeNVX type;
19151 ObjectEntryUsageFlagsNVX flags;
19152 PipelineLayout pipelineLayout;
19153 ShaderStageFlags stageFlags;
19154 };
19155 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19156
Mark Young0f183a82017-02-28 09:58:04 -070019157 enum class DescriptorSetLayoutCreateFlagBits
19158 {
19159 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19160 };
19161
19162 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19163
19164 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19165 {
19166 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19167 }
19168
19169 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19170 {
19171 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19172 }
19173
19174 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19175 {
19176 enum
19177 {
19178 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19179 };
19180 };
19181
19182 struct DescriptorSetLayoutCreateInfo
19183 {
19184 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19185 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19186 , pNext( nullptr )
19187 , flags( flags_ )
19188 , bindingCount( bindingCount_ )
19189 , pBindings( pBindings_ )
19190 {
19191 }
19192
19193 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19194 {
19195 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19196 }
19197
19198 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19199 {
19200 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19201 return *this;
19202 }
19203
19204 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19205 {
19206 pNext = pNext_;
19207 return *this;
19208 }
19209
19210 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19211 {
19212 flags = flags_;
19213 return *this;
19214 }
19215
19216 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19217 {
19218 bindingCount = bindingCount_;
19219 return *this;
19220 }
19221
19222 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19223 {
19224 pBindings = pBindings_;
19225 return *this;
19226 }
19227
19228 operator const VkDescriptorSetLayoutCreateInfo&() const
19229 {
19230 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19231 }
19232
19233 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19234 {
19235 return ( sType == rhs.sType )
19236 && ( pNext == rhs.pNext )
19237 && ( flags == rhs.flags )
19238 && ( bindingCount == rhs.bindingCount )
19239 && ( pBindings == rhs.pBindings );
19240 }
19241
19242 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19243 {
19244 return !operator==( rhs );
19245 }
19246
19247 private:
19248 StructureType sType;
19249
19250 public:
19251 const void* pNext;
19252 DescriptorSetLayoutCreateFlags flags;
19253 uint32_t bindingCount;
19254 const DescriptorSetLayoutBinding* pBindings;
19255 };
19256 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19257
19258 enum class ExternalMemoryHandleTypeFlagBitsKHX
19259 {
19260 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19261 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19262 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19263 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19264 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19265 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19266 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19267 };
19268
19269 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19270
19271 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19272 {
19273 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19274 }
19275
19276 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19277 {
19278 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19279 }
19280
19281 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19282 {
19283 enum
19284 {
19285 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19286 };
19287 };
19288
19289 struct PhysicalDeviceExternalImageFormatInfoKHX
19290 {
19291 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19292 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19293 , pNext( nullptr )
19294 , handleType( handleType_ )
19295 {
19296 }
19297
19298 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19299 {
19300 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19301 }
19302
19303 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19304 {
19305 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19306 return *this;
19307 }
19308
19309 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19310 {
19311 pNext = pNext_;
19312 return *this;
19313 }
19314
19315 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19316 {
19317 handleType = handleType_;
19318 return *this;
19319 }
19320
19321 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19322 {
19323 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19324 }
19325
19326 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19327 {
19328 return ( sType == rhs.sType )
19329 && ( pNext == rhs.pNext )
19330 && ( handleType == rhs.handleType );
19331 }
19332
19333 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19334 {
19335 return !operator==( rhs );
19336 }
19337
19338 private:
19339 StructureType sType;
19340
19341 public:
19342 const void* pNext;
19343 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19344 };
19345 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19346
19347 struct PhysicalDeviceExternalBufferInfoKHX
19348 {
19349 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19350 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19351 , pNext( nullptr )
19352 , flags( flags_ )
19353 , usage( usage_ )
19354 , handleType( handleType_ )
19355 {
19356 }
19357
19358 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19359 {
19360 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19361 }
19362
19363 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19364 {
19365 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19366 return *this;
19367 }
19368
19369 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19370 {
19371 pNext = pNext_;
19372 return *this;
19373 }
19374
19375 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19376 {
19377 flags = flags_;
19378 return *this;
19379 }
19380
19381 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19382 {
19383 usage = usage_;
19384 return *this;
19385 }
19386
19387 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19388 {
19389 handleType = handleType_;
19390 return *this;
19391 }
19392
19393 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19394 {
19395 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19396 }
19397
19398 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19399 {
19400 return ( sType == rhs.sType )
19401 && ( pNext == rhs.pNext )
19402 && ( flags == rhs.flags )
19403 && ( usage == rhs.usage )
19404 && ( handleType == rhs.handleType );
19405 }
19406
19407 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19408 {
19409 return !operator==( rhs );
19410 }
19411
19412 private:
19413 StructureType sType;
19414
19415 public:
19416 const void* pNext;
19417 BufferCreateFlags flags;
19418 BufferUsageFlags usage;
19419 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19420 };
19421 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19422
19423 struct ExternalMemoryImageCreateInfoKHX
19424 {
19425 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19426 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19427 , pNext( nullptr )
19428 , handleTypes( handleTypes_ )
19429 {
19430 }
19431
19432 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19433 {
19434 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19435 }
19436
19437 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19438 {
19439 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19440 return *this;
19441 }
19442
19443 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19444 {
19445 pNext = pNext_;
19446 return *this;
19447 }
19448
19449 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19450 {
19451 handleTypes = handleTypes_;
19452 return *this;
19453 }
19454
19455 operator const VkExternalMemoryImageCreateInfoKHX&() const
19456 {
19457 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19458 }
19459
19460 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19461 {
19462 return ( sType == rhs.sType )
19463 && ( pNext == rhs.pNext )
19464 && ( handleTypes == rhs.handleTypes );
19465 }
19466
19467 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19468 {
19469 return !operator==( rhs );
19470 }
19471
19472 private:
19473 StructureType sType;
19474
19475 public:
19476 const void* pNext;
19477 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19478 };
19479 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19480
19481 struct ExternalMemoryBufferCreateInfoKHX
19482 {
19483 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19484 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19485 , pNext( nullptr )
19486 , handleTypes( handleTypes_ )
19487 {
19488 }
19489
19490 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19491 {
19492 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19493 }
19494
19495 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19496 {
19497 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19498 return *this;
19499 }
19500
19501 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19502 {
19503 pNext = pNext_;
19504 return *this;
19505 }
19506
19507 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19508 {
19509 handleTypes = handleTypes_;
19510 return *this;
19511 }
19512
19513 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19514 {
19515 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19516 }
19517
19518 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19519 {
19520 return ( sType == rhs.sType )
19521 && ( pNext == rhs.pNext )
19522 && ( handleTypes == rhs.handleTypes );
19523 }
19524
19525 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19526 {
19527 return !operator==( rhs );
19528 }
19529
19530 private:
19531 StructureType sType;
19532
19533 public:
19534 const void* pNext;
19535 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19536 };
19537 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19538
19539 struct ExportMemoryAllocateInfoKHX
19540 {
19541 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19542 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19543 , pNext( nullptr )
19544 , handleTypes( handleTypes_ )
19545 {
19546 }
19547
19548 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19549 {
19550 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19551 }
19552
19553 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19554 {
19555 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19556 return *this;
19557 }
19558
19559 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19560 {
19561 pNext = pNext_;
19562 return *this;
19563 }
19564
19565 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19566 {
19567 handleTypes = handleTypes_;
19568 return *this;
19569 }
19570
19571 operator const VkExportMemoryAllocateInfoKHX&() const
19572 {
19573 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19574 }
19575
19576 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19577 {
19578 return ( sType == rhs.sType )
19579 && ( pNext == rhs.pNext )
19580 && ( handleTypes == rhs.handleTypes );
19581 }
19582
19583 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19584 {
19585 return !operator==( rhs );
19586 }
19587
19588 private:
19589 StructureType sType;
19590
19591 public:
19592 const void* pNext;
19593 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19594 };
19595 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19596
19597#ifdef VK_USE_PLATFORM_WIN32_KHR
19598 struct ImportMemoryWin32HandleInfoKHX
19599 {
19600 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19601 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19602 , pNext( nullptr )
19603 , handleType( handleType_ )
19604 , handle( handle_ )
19605 {
19606 }
19607
19608 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19609 {
19610 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19611 }
19612
19613 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19614 {
19615 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19616 return *this;
19617 }
19618
19619 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19620 {
19621 pNext = pNext_;
19622 return *this;
19623 }
19624
19625 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19626 {
19627 handleType = handleType_;
19628 return *this;
19629 }
19630
19631 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19632 {
19633 handle = handle_;
19634 return *this;
19635 }
19636
19637 operator const VkImportMemoryWin32HandleInfoKHX&() const
19638 {
19639 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19640 }
19641
19642 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19643 {
19644 return ( sType == rhs.sType )
19645 && ( pNext == rhs.pNext )
19646 && ( handleType == rhs.handleType )
19647 && ( handle == rhs.handle );
19648 }
19649
19650 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19651 {
19652 return !operator==( rhs );
19653 }
19654
19655 private:
19656 StructureType sType;
19657
19658 public:
19659 const void* pNext;
19660 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19661 HANDLE handle;
19662 };
19663 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
19664#endif /*VK_USE_PLATFORM_WIN32_KHR*/
19665
19666 struct ImportMemoryFdInfoKHX
19667 {
19668 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
19669 : sType( StructureType::eImportMemoryFdInfoKHX )
19670 , pNext( nullptr )
19671 , handleType( handleType_ )
19672 , fd( fd_ )
19673 {
19674 }
19675
19676 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
19677 {
19678 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19679 }
19680
19681 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
19682 {
19683 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19684 return *this;
19685 }
19686
19687 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
19688 {
19689 pNext = pNext_;
19690 return *this;
19691 }
19692
19693 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19694 {
19695 handleType = handleType_;
19696 return *this;
19697 }
19698
19699 ImportMemoryFdInfoKHX& setFd( int fd_ )
19700 {
19701 fd = fd_;
19702 return *this;
19703 }
19704
19705 operator const VkImportMemoryFdInfoKHX&() const
19706 {
19707 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
19708 }
19709
19710 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
19711 {
19712 return ( sType == rhs.sType )
19713 && ( pNext == rhs.pNext )
19714 && ( handleType == rhs.handleType )
19715 && ( fd == rhs.fd );
19716 }
19717
19718 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
19719 {
19720 return !operator==( rhs );
19721 }
19722
19723 private:
19724 StructureType sType;
19725
19726 public:
19727 const void* pNext;
19728 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19729 int fd;
19730 };
19731 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
19732
19733 enum class ExternalMemoryFeatureFlagBitsKHX
19734 {
19735 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
19736 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
19737 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
19738 };
19739
19740 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
19741
19742 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
19743 {
19744 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
19745 }
19746
19747 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
19748 {
19749 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
19750 }
19751
19752 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
19753 {
19754 enum
19755 {
19756 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
19757 };
19758 };
19759
19760 struct ExternalMemoryPropertiesKHX
19761 {
19762 operator const VkExternalMemoryPropertiesKHX&() const
19763 {
19764 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
19765 }
19766
19767 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
19768 {
19769 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19770 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19771 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19772 }
19773
19774 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
19775 {
19776 return !operator==( rhs );
19777 }
19778
19779 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
19780 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
19781 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
19782 };
19783 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
19784
19785 struct ExternalImageFormatPropertiesKHX
19786 {
19787 operator const VkExternalImageFormatPropertiesKHX&() const
19788 {
19789 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
19790 }
19791
19792 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
19793 {
19794 return ( sType == rhs.sType )
19795 && ( pNext == rhs.pNext )
19796 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19797 }
19798
19799 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
19800 {
19801 return !operator==( rhs );
19802 }
19803
19804 private:
19805 StructureType sType;
19806
19807 public:
19808 void* pNext;
19809 ExternalMemoryPropertiesKHX externalMemoryProperties;
19810 };
19811 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
19812
19813 struct ExternalBufferPropertiesKHX
19814 {
19815 operator const VkExternalBufferPropertiesKHX&() const
19816 {
19817 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
19818 }
19819
19820 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
19821 {
19822 return ( sType == rhs.sType )
19823 && ( pNext == rhs.pNext )
19824 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19825 }
19826
19827 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
19828 {
19829 return !operator==( rhs );
19830 }
19831
19832 private:
19833 StructureType sType;
19834
19835 public:
19836 void* pNext;
19837 ExternalMemoryPropertiesKHX externalMemoryProperties;
19838 };
19839 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
19840
19841 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
19842 {
19843 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19844 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19845 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19846 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
19847 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
19848 };
19849
19850 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
19851
19852 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
19853 {
19854 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
19855 }
19856
19857 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
19858 {
19859 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
19860 }
19861
19862 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
19863 {
19864 enum
19865 {
19866 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
19867 };
19868 };
19869
19870 struct PhysicalDeviceExternalSemaphoreInfoKHX
19871 {
19872 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
19873 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
19874 , pNext( nullptr )
19875 , handleType( handleType_ )
19876 {
19877 }
19878
19879 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19880 {
19881 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19882 }
19883
19884 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
19885 {
19886 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
19887 return *this;
19888 }
19889
19890 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
19891 {
19892 pNext = pNext_;
19893 return *this;
19894 }
19895
19896 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
19897 {
19898 handleType = handleType_;
19899 return *this;
19900 }
19901
19902 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
19903 {
19904 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
19905 }
19906
19907 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19908 {
19909 return ( sType == rhs.sType )
19910 && ( pNext == rhs.pNext )
19911 && ( handleType == rhs.handleType );
19912 }
19913
19914 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
19915 {
19916 return !operator==( rhs );
19917 }
19918
19919 private:
19920 StructureType sType;
19921
19922 public:
19923 const void* pNext;
19924 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
19925 };
19926 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
19927
19928 struct ExportSemaphoreCreateInfoKHX
19929 {
19930 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
19931 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
19932 , pNext( nullptr )
19933 , handleTypes( handleTypes_ )
19934 {
19935 }
19936
19937 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
19938 {
19939 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19940 }
19941
19942 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
19943 {
19944 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
19945 return *this;
19946 }
19947
19948 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
19949 {
19950 pNext = pNext_;
19951 return *this;
19952 }
19953
19954 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
19955 {
19956 handleTypes = handleTypes_;
19957 return *this;
19958 }
19959
19960 operator const VkExportSemaphoreCreateInfoKHX&() const
19961 {
19962 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
19963 }
19964
19965 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
19966 {
19967 return ( sType == rhs.sType )
19968 && ( pNext == rhs.pNext )
19969 && ( handleTypes == rhs.handleTypes );
19970 }
19971
19972 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
19973 {
19974 return !operator==( rhs );
19975 }
19976
19977 private:
19978 StructureType sType;
19979
19980 public:
19981 const void* pNext;
19982 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
19983 };
19984 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
19985
19986#ifdef VK_USE_PLATFORM_WIN32_KHX
19987 struct ImportSemaphoreWin32HandleInfoKHX
19988 {
19989 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
19990 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
19991 , pNext( nullptr )
19992 , semaphore( semaphore_ )
19993 , handleType( handleType_ )
19994 , handle( handle_ )
19995 {
19996 }
19997
19998 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
19999 {
20000 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20001 }
20002
20003 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20004 {
20005 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20006 return *this;
20007 }
20008
20009 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20010 {
20011 pNext = pNext_;
20012 return *this;
20013 }
20014
20015 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20016 {
20017 semaphore = semaphore_;
20018 return *this;
20019 }
20020
20021 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20022 {
20023 handleType = handleType_;
20024 return *this;
20025 }
20026
20027 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20028 {
20029 handle = handle_;
20030 return *this;
20031 }
20032
20033 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20034 {
20035 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20036 }
20037
20038 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20039 {
20040 return ( sType == rhs.sType )
20041 && ( pNext == rhs.pNext )
20042 && ( semaphore == rhs.semaphore )
20043 && ( handleType == rhs.handleType )
20044 && ( handle == rhs.handle );
20045 }
20046
20047 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20048 {
20049 return !operator==( rhs );
20050 }
20051
20052 private:
20053 StructureType sType;
20054
20055 public:
20056 const void* pNext;
20057 Semaphore semaphore;
20058 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20059 HANDLE handle;
20060 };
20061 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20062#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20063
20064 struct ImportSemaphoreFdInfoKHX
20065 {
20066 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20067 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20068 , pNext( nullptr )
20069 , semaphore( semaphore_ )
20070 , handleType( handleType_ )
20071 , fd( fd_ )
20072 {
20073 }
20074
20075 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20076 {
20077 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20078 }
20079
20080 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20081 {
20082 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20083 return *this;
20084 }
20085
20086 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20087 {
20088 pNext = pNext_;
20089 return *this;
20090 }
20091
20092 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20093 {
20094 semaphore = semaphore_;
20095 return *this;
20096 }
20097
20098 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20099 {
20100 handleType = handleType_;
20101 return *this;
20102 }
20103
20104 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20105 {
20106 fd = fd_;
20107 return *this;
20108 }
20109
20110 operator const VkImportSemaphoreFdInfoKHX&() const
20111 {
20112 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20113 }
20114
20115 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20116 {
20117 return ( sType == rhs.sType )
20118 && ( pNext == rhs.pNext )
20119 && ( semaphore == rhs.semaphore )
20120 && ( handleType == rhs.handleType )
20121 && ( fd == rhs.fd );
20122 }
20123
20124 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20125 {
20126 return !operator==( rhs );
20127 }
20128
20129 private:
20130 StructureType sType;
20131
20132 public:
20133 const void* pNext;
20134 Semaphore semaphore;
20135 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20136 int fd;
20137 };
20138 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20139
20140 enum class ExternalSemaphoreFeatureFlagBitsKHX
20141 {
20142 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20143 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20144 };
20145
20146 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20147
20148 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20149 {
20150 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20151 }
20152
20153 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20154 {
20155 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20156 }
20157
20158 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20159 {
20160 enum
20161 {
20162 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20163 };
20164 };
20165
20166 struct ExternalSemaphorePropertiesKHX
20167 {
20168 operator const VkExternalSemaphorePropertiesKHX&() const
20169 {
20170 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20171 }
20172
20173 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20174 {
20175 return ( sType == rhs.sType )
20176 && ( pNext == rhs.pNext )
20177 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20178 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20179 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20180 }
20181
20182 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20183 {
20184 return !operator==( rhs );
20185 }
20186
20187 private:
20188 StructureType sType;
20189
20190 public:
20191 void* pNext;
20192 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20193 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20194 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20195 };
20196 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20197
Mark Young39389872017-01-19 21:10:49 -070020198 enum class SurfaceCounterFlagBitsEXT
20199 {
20200 eVblankExt = VK_SURFACE_COUNTER_VBLANK_EXT
20201 };
20202
20203 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20204
20205 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20206 {
20207 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20208 }
20209
20210 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20211 {
20212 return ~( SurfaceCounterFlagsEXT( bits ) );
20213 }
20214
20215 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20216 {
20217 enum
20218 {
20219 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblankExt)
20220 };
20221 };
20222
20223 struct SurfaceCapabilities2EXT
20224 {
20225 operator const VkSurfaceCapabilities2EXT&() const
20226 {
20227 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20228 }
20229
20230 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20231 {
20232 return ( sType == rhs.sType )
20233 && ( pNext == rhs.pNext )
20234 && ( minImageCount == rhs.minImageCount )
20235 && ( maxImageCount == rhs.maxImageCount )
20236 && ( currentExtent == rhs.currentExtent )
20237 && ( minImageExtent == rhs.minImageExtent )
20238 && ( maxImageExtent == rhs.maxImageExtent )
20239 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20240 && ( supportedTransforms == rhs.supportedTransforms )
20241 && ( currentTransform == rhs.currentTransform )
20242 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20243 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20244 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20245 }
20246
20247 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20248 {
20249 return !operator==( rhs );
20250 }
20251
20252 private:
20253 StructureType sType;
20254
20255 public:
20256 void* pNext;
20257 uint32_t minImageCount;
20258 uint32_t maxImageCount;
20259 Extent2D currentExtent;
20260 Extent2D minImageExtent;
20261 Extent2D maxImageExtent;
20262 uint32_t maxImageArrayLayers;
20263 SurfaceTransformFlagsKHR supportedTransforms;
20264 SurfaceTransformFlagBitsKHR currentTransform;
20265 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20266 ImageUsageFlags supportedUsageFlags;
20267 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20268 };
20269 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20270
20271 struct SwapchainCounterCreateInfoEXT
20272 {
20273 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20274 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20275 , pNext( nullptr )
20276 , surfaceCounters( surfaceCounters_ )
20277 {
20278 }
20279
20280 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20281 {
20282 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20283 }
20284
20285 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20286 {
20287 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20288 return *this;
20289 }
20290
Mark Young39389872017-01-19 21:10:49 -070020291 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20292 {
20293 pNext = pNext_;
20294 return *this;
20295 }
20296
20297 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20298 {
20299 surfaceCounters = surfaceCounters_;
20300 return *this;
20301 }
20302
20303 operator const VkSwapchainCounterCreateInfoEXT&() const
20304 {
20305 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20306 }
20307
20308 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20309 {
20310 return ( sType == rhs.sType )
20311 && ( pNext == rhs.pNext )
20312 && ( surfaceCounters == rhs.surfaceCounters );
20313 }
20314
20315 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20316 {
20317 return !operator==( rhs );
20318 }
20319
20320 private:
20321 StructureType sType;
20322
20323 public:
20324 const void* pNext;
20325 SurfaceCounterFlagsEXT surfaceCounters;
20326 };
20327 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20328
20329 enum class DisplayPowerStateEXT
20330 {
20331 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20332 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20333 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20334 };
20335
20336 struct DisplayPowerInfoEXT
20337 {
20338 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20339 : sType( StructureType::eDisplayPowerInfoEXT )
20340 , pNext( nullptr )
20341 , powerState( powerState_ )
20342 {
20343 }
20344
20345 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20346 {
20347 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20348 }
20349
20350 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20351 {
20352 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20353 return *this;
20354 }
20355
Mark Young39389872017-01-19 21:10:49 -070020356 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20357 {
20358 pNext = pNext_;
20359 return *this;
20360 }
20361
20362 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20363 {
20364 powerState = powerState_;
20365 return *this;
20366 }
20367
20368 operator const VkDisplayPowerInfoEXT&() const
20369 {
20370 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20371 }
20372
20373 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20374 {
20375 return ( sType == rhs.sType )
20376 && ( pNext == rhs.pNext )
20377 && ( powerState == rhs.powerState );
20378 }
20379
20380 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20381 {
20382 return !operator==( rhs );
20383 }
20384
20385 private:
20386 StructureType sType;
20387
20388 public:
20389 const void* pNext;
20390 DisplayPowerStateEXT powerState;
20391 };
20392 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20393
20394 enum class DeviceEventTypeEXT
20395 {
20396 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20397 };
20398
20399 struct DeviceEventInfoEXT
20400 {
20401 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20402 : sType( StructureType::eDeviceEventInfoEXT )
20403 , pNext( nullptr )
20404 , deviceEvent( deviceEvent_ )
20405 {
20406 }
20407
20408 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20409 {
20410 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20411 }
20412
20413 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20414 {
20415 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20416 return *this;
20417 }
20418
Mark Young39389872017-01-19 21:10:49 -070020419 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20420 {
20421 pNext = pNext_;
20422 return *this;
20423 }
20424
20425 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20426 {
20427 deviceEvent = deviceEvent_;
20428 return *this;
20429 }
20430
20431 operator const VkDeviceEventInfoEXT&() const
20432 {
20433 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20434 }
20435
20436 bool operator==( DeviceEventInfoEXT const& rhs ) const
20437 {
20438 return ( sType == rhs.sType )
20439 && ( pNext == rhs.pNext )
20440 && ( deviceEvent == rhs.deviceEvent );
20441 }
20442
20443 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20444 {
20445 return !operator==( rhs );
20446 }
20447
20448 private:
20449 StructureType sType;
20450
20451 public:
20452 const void* pNext;
20453 DeviceEventTypeEXT deviceEvent;
20454 };
20455 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20456
20457 enum class DisplayEventTypeEXT
20458 {
20459 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20460 };
20461
20462 struct DisplayEventInfoEXT
20463 {
20464 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20465 : sType( StructureType::eDisplayEventInfoEXT )
20466 , pNext( nullptr )
20467 , displayEvent( displayEvent_ )
20468 {
20469 }
20470
20471 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20472 {
20473 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20474 }
20475
20476 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20477 {
20478 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20479 return *this;
20480 }
20481
Mark Young39389872017-01-19 21:10:49 -070020482 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20483 {
20484 pNext = pNext_;
20485 return *this;
20486 }
20487
20488 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20489 {
20490 displayEvent = displayEvent_;
20491 return *this;
20492 }
20493
20494 operator const VkDisplayEventInfoEXT&() const
20495 {
20496 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20497 }
20498
20499 bool operator==( DisplayEventInfoEXT const& rhs ) const
20500 {
20501 return ( sType == rhs.sType )
20502 && ( pNext == rhs.pNext )
20503 && ( displayEvent == rhs.displayEvent );
20504 }
20505
20506 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20507 {
20508 return !operator==( rhs );
20509 }
20510
20511 private:
20512 StructureType sType;
20513
20514 public:
20515 const void* pNext;
20516 DisplayEventTypeEXT displayEvent;
20517 };
20518 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20519
Mark Young0f183a82017-02-28 09:58:04 -070020520 enum class PeerMemoryFeatureFlagBitsKHX
20521 {
20522 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20523 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20524 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20525 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20526 };
20527
20528 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20529
20530 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20531 {
20532 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20533 }
20534
20535 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20536 {
20537 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20538 }
20539
20540 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20541 {
20542 enum
20543 {
20544 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20545 };
20546 };
20547
20548 enum class MemoryAllocateFlagBitsKHX
20549 {
20550 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20551 };
20552
20553 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20554
20555 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20556 {
20557 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20558 }
20559
20560 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20561 {
20562 return ~( MemoryAllocateFlagsKHX( bits ) );
20563 }
20564
20565 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20566 {
20567 enum
20568 {
20569 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20570 };
20571 };
20572
20573 struct MemoryAllocateFlagsInfoKHX
20574 {
20575 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20576 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20577 , pNext( nullptr )
20578 , flags( flags_ )
20579 , deviceMask( deviceMask_ )
20580 {
20581 }
20582
20583 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20584 {
20585 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20586 }
20587
20588 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20589 {
20590 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20591 return *this;
20592 }
20593
20594 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20595 {
20596 pNext = pNext_;
20597 return *this;
20598 }
20599
20600 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20601 {
20602 flags = flags_;
20603 return *this;
20604 }
20605
20606 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20607 {
20608 deviceMask = deviceMask_;
20609 return *this;
20610 }
20611
20612 operator const VkMemoryAllocateFlagsInfoKHX&() const
20613 {
20614 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20615 }
20616
20617 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20618 {
20619 return ( sType == rhs.sType )
20620 && ( pNext == rhs.pNext )
20621 && ( flags == rhs.flags )
20622 && ( deviceMask == rhs.deviceMask );
20623 }
20624
20625 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20626 {
20627 return !operator==( rhs );
20628 }
20629
20630 private:
20631 StructureType sType;
20632
20633 public:
20634 const void* pNext;
20635 MemoryAllocateFlagsKHX flags;
20636 uint32_t deviceMask;
20637 };
20638 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20639
20640 enum class DeviceGroupPresentModeFlagBitsKHX
20641 {
20642 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20643 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20644 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20645 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20646 };
20647
20648 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20649
20650 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20651 {
20652 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20653 }
20654
20655 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20656 {
20657 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
20658 }
20659
20660 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
20661 {
20662 enum
20663 {
20664 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
20665 };
20666 };
20667
20668 struct DeviceGroupPresentCapabilitiesKHX
20669 {
20670 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
20671 {
20672 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
20673 }
20674
20675 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20676 {
20677 return ( sType == rhs.sType )
20678 && ( pNext == rhs.pNext )
20679 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
20680 && ( modes == rhs.modes );
20681 }
20682
20683 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20684 {
20685 return !operator==( rhs );
20686 }
20687
20688 private:
20689 StructureType sType;
20690
20691 public:
20692 const void* pNext;
20693 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
20694 DeviceGroupPresentModeFlagsKHX modes;
20695 };
20696 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
20697
20698 struct DeviceGroupPresentInfoKHX
20699 {
20700 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
20701 : sType( StructureType::eDeviceGroupPresentInfoKHX )
20702 , pNext( nullptr )
20703 , swapchainCount( swapchainCount_ )
20704 , pDeviceMasks( pDeviceMasks_ )
20705 , mode( mode_ )
20706 {
20707 }
20708
20709 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
20710 {
20711 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20712 }
20713
20714 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
20715 {
20716 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20717 return *this;
20718 }
20719
20720 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
20721 {
20722 pNext = pNext_;
20723 return *this;
20724 }
20725
20726 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
20727 {
20728 swapchainCount = swapchainCount_;
20729 return *this;
20730 }
20731
20732 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
20733 {
20734 pDeviceMasks = pDeviceMasks_;
20735 return *this;
20736 }
20737
20738 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
20739 {
20740 mode = mode_;
20741 return *this;
20742 }
20743
20744 operator const VkDeviceGroupPresentInfoKHX&() const
20745 {
20746 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
20747 }
20748
20749 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
20750 {
20751 return ( sType == rhs.sType )
20752 && ( pNext == rhs.pNext )
20753 && ( swapchainCount == rhs.swapchainCount )
20754 && ( pDeviceMasks == rhs.pDeviceMasks )
20755 && ( mode == rhs.mode );
20756 }
20757
20758 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
20759 {
20760 return !operator==( rhs );
20761 }
20762
20763 private:
20764 StructureType sType;
20765
20766 public:
20767 const void* pNext;
20768 uint32_t swapchainCount;
20769 const uint32_t* pDeviceMasks;
20770 DeviceGroupPresentModeFlagBitsKHX mode;
20771 };
20772 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
20773
20774 struct DeviceGroupSwapchainCreateInfoKHX
20775 {
20776 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
20777 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
20778 , pNext( nullptr )
20779 , modes( modes_ )
20780 {
20781 }
20782
20783 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20784 {
20785 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20786 }
20787
20788 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20789 {
20790 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20791 return *this;
20792 }
20793
20794 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
20795 {
20796 pNext = pNext_;
20797 return *this;
20798 }
20799
20800 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
20801 {
20802 modes = modes_;
20803 return *this;
20804 }
20805
20806 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
20807 {
20808 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
20809 }
20810
20811 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20812 {
20813 return ( sType == rhs.sType )
20814 && ( pNext == rhs.pNext )
20815 && ( modes == rhs.modes );
20816 }
20817
20818 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
20819 {
20820 return !operator==( rhs );
20821 }
20822
20823 private:
20824 StructureType sType;
20825
20826 public:
20827 const void* pNext;
20828 DeviceGroupPresentModeFlagsKHX modes;
20829 };
20830 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
20831
20832 enum class SwapchainCreateFlagBitsKHR
20833 {
20834 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
20835 };
20836
20837 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
20838
20839 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
20840 {
20841 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
20842 }
20843
20844 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
20845 {
20846 return ~( SwapchainCreateFlagsKHR( bits ) );
20847 }
20848
20849 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
20850 {
20851 enum
20852 {
20853 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
20854 };
20855 };
20856
20857 struct SwapchainCreateInfoKHR
20858 {
20859 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() )
20860 : sType( StructureType::eSwapchainCreateInfoKHR )
20861 , pNext( nullptr )
20862 , flags( flags_ )
20863 , surface( surface_ )
20864 , minImageCount( minImageCount_ )
20865 , imageFormat( imageFormat_ )
20866 , imageColorSpace( imageColorSpace_ )
20867 , imageExtent( imageExtent_ )
20868 , imageArrayLayers( imageArrayLayers_ )
20869 , imageUsage( imageUsage_ )
20870 , imageSharingMode( imageSharingMode_ )
20871 , queueFamilyIndexCount( queueFamilyIndexCount_ )
20872 , pQueueFamilyIndices( pQueueFamilyIndices_ )
20873 , preTransform( preTransform_ )
20874 , compositeAlpha( compositeAlpha_ )
20875 , presentMode( presentMode_ )
20876 , clipped( clipped_ )
20877 , oldSwapchain( oldSwapchain_ )
20878 {
20879 }
20880
20881 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
20882 {
20883 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20884 }
20885
20886 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
20887 {
20888 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
20889 return *this;
20890 }
20891
20892 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
20893 {
20894 pNext = pNext_;
20895 return *this;
20896 }
20897
20898 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
20899 {
20900 flags = flags_;
20901 return *this;
20902 }
20903
20904 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
20905 {
20906 surface = surface_;
20907 return *this;
20908 }
20909
20910 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
20911 {
20912 minImageCount = minImageCount_;
20913 return *this;
20914 }
20915
20916 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
20917 {
20918 imageFormat = imageFormat_;
20919 return *this;
20920 }
20921
20922 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
20923 {
20924 imageColorSpace = imageColorSpace_;
20925 return *this;
20926 }
20927
20928 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20929 {
20930 imageExtent = imageExtent_;
20931 return *this;
20932 }
20933
20934 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
20935 {
20936 imageArrayLayers = imageArrayLayers_;
20937 return *this;
20938 }
20939
20940 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
20941 {
20942 imageUsage = imageUsage_;
20943 return *this;
20944 }
20945
20946 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
20947 {
20948 imageSharingMode = imageSharingMode_;
20949 return *this;
20950 }
20951
20952 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
20953 {
20954 queueFamilyIndexCount = queueFamilyIndexCount_;
20955 return *this;
20956 }
20957
20958 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
20959 {
20960 pQueueFamilyIndices = pQueueFamilyIndices_;
20961 return *this;
20962 }
20963
20964 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
20965 {
20966 preTransform = preTransform_;
20967 return *this;
20968 }
20969
20970 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
20971 {
20972 compositeAlpha = compositeAlpha_;
20973 return *this;
20974 }
20975
20976 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
20977 {
20978 presentMode = presentMode_;
20979 return *this;
20980 }
20981
20982 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
20983 {
20984 clipped = clipped_;
20985 return *this;
20986 }
20987
20988 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
20989 {
20990 oldSwapchain = oldSwapchain_;
20991 return *this;
20992 }
20993
20994 operator const VkSwapchainCreateInfoKHR&() const
20995 {
20996 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
20997 }
20998
20999 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21000 {
21001 return ( sType == rhs.sType )
21002 && ( pNext == rhs.pNext )
21003 && ( flags == rhs.flags )
21004 && ( surface == rhs.surface )
21005 && ( minImageCount == rhs.minImageCount )
21006 && ( imageFormat == rhs.imageFormat )
21007 && ( imageColorSpace == rhs.imageColorSpace )
21008 && ( imageExtent == rhs.imageExtent )
21009 && ( imageArrayLayers == rhs.imageArrayLayers )
21010 && ( imageUsage == rhs.imageUsage )
21011 && ( imageSharingMode == rhs.imageSharingMode )
21012 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21013 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21014 && ( preTransform == rhs.preTransform )
21015 && ( compositeAlpha == rhs.compositeAlpha )
21016 && ( presentMode == rhs.presentMode )
21017 && ( clipped == rhs.clipped )
21018 && ( oldSwapchain == rhs.oldSwapchain );
21019 }
21020
21021 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21022 {
21023 return !operator==( rhs );
21024 }
21025
21026 private:
21027 StructureType sType;
21028
21029 public:
21030 const void* pNext;
21031 SwapchainCreateFlagsKHR flags;
21032 SurfaceKHR surface;
21033 uint32_t minImageCount;
21034 Format imageFormat;
21035 ColorSpaceKHR imageColorSpace;
21036 Extent2D imageExtent;
21037 uint32_t imageArrayLayers;
21038 ImageUsageFlags imageUsage;
21039 SharingMode imageSharingMode;
21040 uint32_t queueFamilyIndexCount;
21041 const uint32_t* pQueueFamilyIndices;
21042 SurfaceTransformFlagBitsKHR preTransform;
21043 CompositeAlphaFlagBitsKHR compositeAlpha;
21044 PresentModeKHR presentMode;
21045 Bool32 clipped;
21046 SwapchainKHR oldSwapchain;
21047 };
21048 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21049
21050 enum class ViewportCoordinateSwizzleNV
21051 {
21052 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21053 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21054 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21055 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21056 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21057 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21058 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21059 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21060 };
21061
21062 struct ViewportSwizzleNV
21063 {
21064 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21065 : x( x_ )
21066 , y( y_ )
21067 , z( z_ )
21068 , w( w_ )
21069 {
21070 }
21071
21072 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21073 {
21074 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21075 }
21076
21077 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21078 {
21079 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21080 return *this;
21081 }
21082
21083 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21084 {
21085 x = x_;
21086 return *this;
21087 }
21088
21089 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21090 {
21091 y = y_;
21092 return *this;
21093 }
21094
21095 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21096 {
21097 z = z_;
21098 return *this;
21099 }
21100
21101 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21102 {
21103 w = w_;
21104 return *this;
21105 }
21106
21107 operator const VkViewportSwizzleNV&() const
21108 {
21109 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21110 }
21111
21112 bool operator==( ViewportSwizzleNV const& rhs ) const
21113 {
21114 return ( x == rhs.x )
21115 && ( y == rhs.y )
21116 && ( z == rhs.z )
21117 && ( w == rhs.w );
21118 }
21119
21120 bool operator!=( ViewportSwizzleNV const& rhs ) const
21121 {
21122 return !operator==( rhs );
21123 }
21124
21125 ViewportCoordinateSwizzleNV x;
21126 ViewportCoordinateSwizzleNV y;
21127 ViewportCoordinateSwizzleNV z;
21128 ViewportCoordinateSwizzleNV w;
21129 };
21130 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21131
21132 struct PipelineViewportSwizzleStateCreateInfoNV
21133 {
21134 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21135 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21136 , pNext( nullptr )
21137 , flags( flags_ )
21138 , viewportCount( viewportCount_ )
21139 , pViewportSwizzles( pViewportSwizzles_ )
21140 {
21141 }
21142
21143 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21144 {
21145 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21146 }
21147
21148 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21149 {
21150 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21151 return *this;
21152 }
21153
21154 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21155 {
21156 pNext = pNext_;
21157 return *this;
21158 }
21159
21160 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21161 {
21162 flags = flags_;
21163 return *this;
21164 }
21165
21166 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21167 {
21168 viewportCount = viewportCount_;
21169 return *this;
21170 }
21171
21172 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21173 {
21174 pViewportSwizzles = pViewportSwizzles_;
21175 return *this;
21176 }
21177
21178 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21179 {
21180 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21181 }
21182
21183 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21184 {
21185 return ( sType == rhs.sType )
21186 && ( pNext == rhs.pNext )
21187 && ( flags == rhs.flags )
21188 && ( viewportCount == rhs.viewportCount )
21189 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21190 }
21191
21192 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21193 {
21194 return !operator==( rhs );
21195 }
21196
21197 private:
21198 StructureType sType;
21199
21200 public:
21201 const void* pNext;
21202 PipelineViewportSwizzleStateCreateFlagsNV flags;
21203 uint32_t viewportCount;
21204 const ViewportSwizzleNV* pViewportSwizzles;
21205 };
21206 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21207
21208 enum class DiscardRectangleModeEXT
21209 {
21210 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21211 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21212 };
21213
21214 struct PipelineDiscardRectangleStateCreateInfoEXT
21215 {
21216 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21217 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21218 , pNext( nullptr )
21219 , flags( flags_ )
21220 , discardRectangleMode( discardRectangleMode_ )
21221 , discardRectangleCount( discardRectangleCount_ )
21222 , pDiscardRectangles( pDiscardRectangles_ )
21223 {
21224 }
21225
21226 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21227 {
21228 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21229 }
21230
21231 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21232 {
21233 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21234 return *this;
21235 }
21236
21237 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21238 {
21239 pNext = pNext_;
21240 return *this;
21241 }
21242
21243 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21244 {
21245 flags = flags_;
21246 return *this;
21247 }
21248
21249 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21250 {
21251 discardRectangleMode = discardRectangleMode_;
21252 return *this;
21253 }
21254
21255 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21256 {
21257 discardRectangleCount = discardRectangleCount_;
21258 return *this;
21259 }
21260
21261 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21262 {
21263 pDiscardRectangles = pDiscardRectangles_;
21264 return *this;
21265 }
21266
21267 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21268 {
21269 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21270 }
21271
21272 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21273 {
21274 return ( sType == rhs.sType )
21275 && ( pNext == rhs.pNext )
21276 && ( flags == rhs.flags )
21277 && ( discardRectangleMode == rhs.discardRectangleMode )
21278 && ( discardRectangleCount == rhs.discardRectangleCount )
21279 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21280 }
21281
21282 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21283 {
21284 return !operator==( rhs );
21285 }
21286
21287 private:
21288 StructureType sType;
21289
21290 public:
21291 const void* pNext;
21292 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21293 DiscardRectangleModeEXT discardRectangleMode;
21294 uint32_t discardRectangleCount;
21295 const Rect2D* pDiscardRectangles;
21296 };
21297 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21298
21299 enum class SubpassDescriptionFlagBits
21300 {
21301 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21302 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21303 };
21304
21305 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21306
21307 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21308 {
21309 return SubpassDescriptionFlags( bit0 ) | bit1;
21310 }
21311
21312 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21313 {
21314 return ~( SubpassDescriptionFlags( bits ) );
21315 }
21316
21317 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21318 {
21319 enum
21320 {
21321 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21322 };
21323 };
21324
21325 struct SubpassDescription
21326 {
21327 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 )
21328 : flags( flags_ )
21329 , pipelineBindPoint( pipelineBindPoint_ )
21330 , inputAttachmentCount( inputAttachmentCount_ )
21331 , pInputAttachments( pInputAttachments_ )
21332 , colorAttachmentCount( colorAttachmentCount_ )
21333 , pColorAttachments( pColorAttachments_ )
21334 , pResolveAttachments( pResolveAttachments_ )
21335 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21336 , preserveAttachmentCount( preserveAttachmentCount_ )
21337 , pPreserveAttachments( pPreserveAttachments_ )
21338 {
21339 }
21340
21341 SubpassDescription( VkSubpassDescription const & rhs )
21342 {
21343 memcpy( this, &rhs, sizeof(SubpassDescription) );
21344 }
21345
21346 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21347 {
21348 memcpy( this, &rhs, sizeof(SubpassDescription) );
21349 return *this;
21350 }
21351
21352 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21353 {
21354 flags = flags_;
21355 return *this;
21356 }
21357
21358 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21359 {
21360 pipelineBindPoint = pipelineBindPoint_;
21361 return *this;
21362 }
21363
21364 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21365 {
21366 inputAttachmentCount = inputAttachmentCount_;
21367 return *this;
21368 }
21369
21370 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21371 {
21372 pInputAttachments = pInputAttachments_;
21373 return *this;
21374 }
21375
21376 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21377 {
21378 colorAttachmentCount = colorAttachmentCount_;
21379 return *this;
21380 }
21381
21382 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21383 {
21384 pColorAttachments = pColorAttachments_;
21385 return *this;
21386 }
21387
21388 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21389 {
21390 pResolveAttachments = pResolveAttachments_;
21391 return *this;
21392 }
21393
21394 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21395 {
21396 pDepthStencilAttachment = pDepthStencilAttachment_;
21397 return *this;
21398 }
21399
21400 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21401 {
21402 preserveAttachmentCount = preserveAttachmentCount_;
21403 return *this;
21404 }
21405
21406 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21407 {
21408 pPreserveAttachments = pPreserveAttachments_;
21409 return *this;
21410 }
21411
21412 operator const VkSubpassDescription&() const
21413 {
21414 return *reinterpret_cast<const VkSubpassDescription*>(this);
21415 }
21416
21417 bool operator==( SubpassDescription const& rhs ) const
21418 {
21419 return ( flags == rhs.flags )
21420 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21421 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21422 && ( pInputAttachments == rhs.pInputAttachments )
21423 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21424 && ( pColorAttachments == rhs.pColorAttachments )
21425 && ( pResolveAttachments == rhs.pResolveAttachments )
21426 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21427 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21428 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21429 }
21430
21431 bool operator!=( SubpassDescription const& rhs ) const
21432 {
21433 return !operator==( rhs );
21434 }
21435
21436 SubpassDescriptionFlags flags;
21437 PipelineBindPoint pipelineBindPoint;
21438 uint32_t inputAttachmentCount;
21439 const AttachmentReference* pInputAttachments;
21440 uint32_t colorAttachmentCount;
21441 const AttachmentReference* pColorAttachments;
21442 const AttachmentReference* pResolveAttachments;
21443 const AttachmentReference* pDepthStencilAttachment;
21444 uint32_t preserveAttachmentCount;
21445 const uint32_t* pPreserveAttachments;
21446 };
21447 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21448
21449 struct RenderPassCreateInfo
21450 {
21451 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 )
21452 : sType( StructureType::eRenderPassCreateInfo )
21453 , pNext( nullptr )
21454 , flags( flags_ )
21455 , attachmentCount( attachmentCount_ )
21456 , pAttachments( pAttachments_ )
21457 , subpassCount( subpassCount_ )
21458 , pSubpasses( pSubpasses_ )
21459 , dependencyCount( dependencyCount_ )
21460 , pDependencies( pDependencies_ )
21461 {
21462 }
21463
21464 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21465 {
21466 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21467 }
21468
21469 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21470 {
21471 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21472 return *this;
21473 }
21474
21475 RenderPassCreateInfo& setPNext( const void* pNext_ )
21476 {
21477 pNext = pNext_;
21478 return *this;
21479 }
21480
21481 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21482 {
21483 flags = flags_;
21484 return *this;
21485 }
21486
21487 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21488 {
21489 attachmentCount = attachmentCount_;
21490 return *this;
21491 }
21492
21493 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21494 {
21495 pAttachments = pAttachments_;
21496 return *this;
21497 }
21498
21499 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21500 {
21501 subpassCount = subpassCount_;
21502 return *this;
21503 }
21504
21505 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21506 {
21507 pSubpasses = pSubpasses_;
21508 return *this;
21509 }
21510
21511 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21512 {
21513 dependencyCount = dependencyCount_;
21514 return *this;
21515 }
21516
21517 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21518 {
21519 pDependencies = pDependencies_;
21520 return *this;
21521 }
21522
21523 operator const VkRenderPassCreateInfo&() const
21524 {
21525 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21526 }
21527
21528 bool operator==( RenderPassCreateInfo const& rhs ) const
21529 {
21530 return ( sType == rhs.sType )
21531 && ( pNext == rhs.pNext )
21532 && ( flags == rhs.flags )
21533 && ( attachmentCount == rhs.attachmentCount )
21534 && ( pAttachments == rhs.pAttachments )
21535 && ( subpassCount == rhs.subpassCount )
21536 && ( pSubpasses == rhs.pSubpasses )
21537 && ( dependencyCount == rhs.dependencyCount )
21538 && ( pDependencies == rhs.pDependencies );
21539 }
21540
21541 bool operator!=( RenderPassCreateInfo const& rhs ) const
21542 {
21543 return !operator==( rhs );
21544 }
21545
21546 private:
21547 StructureType sType;
21548
21549 public:
21550 const void* pNext;
21551 RenderPassCreateFlags flags;
21552 uint32_t attachmentCount;
21553 const AttachmentDescription* pAttachments;
21554 uint32_t subpassCount;
21555 const SubpassDescription* pSubpasses;
21556 uint32_t dependencyCount;
21557 const SubpassDependency* pDependencies;
21558 };
21559 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21560
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021561 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21562#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21563 template <typename Allocator = std::allocator<LayerProperties>>
21564 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21566
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021567 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21568 {
21569 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21570 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021572 template <typename Allocator>
21573 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021574 {
21575 std::vector<LayerProperties,Allocator> properties;
21576 uint32_t propertyCount;
21577 Result result;
21578 do
21579 {
21580 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21581 if ( ( result == Result::eSuccess ) && propertyCount )
21582 {
21583 properties.resize( propertyCount );
21584 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21585 }
21586 } while ( result == Result::eIncomplete );
21587 assert( propertyCount <= properties.size() );
21588 properties.resize( propertyCount );
21589 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21590 }
21591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21592
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021593
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021594 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21596 template <typename Allocator = std::allocator<ExtensionProperties>>
21597 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21599
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021600 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21601 {
21602 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21603 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021604#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021605 template <typename Allocator>
21606 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021607 {
21608 std::vector<ExtensionProperties,Allocator> properties;
21609 uint32_t propertyCount;
21610 Result result;
21611 do
21612 {
21613 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21614 if ( ( result == Result::eSuccess ) && propertyCount )
21615 {
21616 properties.resize( propertyCount );
21617 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21618 }
21619 } while ( result == Result::eIncomplete );
21620 assert( propertyCount <= properties.size() );
21621 properties.resize( propertyCount );
21622 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21623 }
21624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21625
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021627 // forward declarations
21628 struct CmdProcessCommandsInfoNVX;
21629
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021630 class CommandBuffer
21631 {
21632 public:
21633 CommandBuffer()
21634 : m_commandBuffer(VK_NULL_HANDLE)
21635 {}
21636
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021637 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021638 : m_commandBuffer(VK_NULL_HANDLE)
21639 {}
21640
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021641 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021642 : m_commandBuffer(commandBuffer)
21643 {}
21644
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021645#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021646 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
21647 {
21648 m_commandBuffer = commandBuffer;
21649 return *this;
21650 }
21651#endif
21652
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021653 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021654 {
21655 m_commandBuffer = VK_NULL_HANDLE;
21656 return *this;
21657 }
21658
Lenny Komowebf33162016-08-26 14:10:08 -060021659 bool operator==(CommandBuffer const &rhs) const
21660 {
21661 return m_commandBuffer == rhs.m_commandBuffer;
21662 }
21663
21664 bool operator!=(CommandBuffer const &rhs) const
21665 {
21666 return m_commandBuffer != rhs.m_commandBuffer;
21667 }
21668
21669 bool operator<(CommandBuffer const &rhs) const
21670 {
21671 return m_commandBuffer < rhs.m_commandBuffer;
21672 }
21673
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021674 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021676 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21678
21679#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021680 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021681#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021682 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21684
21685#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021686 Result reset( CommandBufferResetFlags flags ) const;
21687#else
21688 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21690
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021691 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021692
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021693 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021695 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21697
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021698 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021700 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21702
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021703 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021704
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021705 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
21706
21707 void setBlendConstants( const float blendConstants[4] ) const;
21708
21709 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
21710
21711 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
21712
21713 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
21714
21715 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
21716
21717 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 -060021718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021719 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 -060021720#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21721
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021722 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021723
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021724 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021726 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21728
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021729 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021730
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021731 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
21732
21733 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21734
21735 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21736
Mark Young0f183a82017-02-28 09:58:04 -070021737 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021738
21739 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
21740
21741 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021743 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21745
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021746 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021748 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21750
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021751 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 -060021752#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021753 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021754#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21755
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021756 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021757#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021758 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21760
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021761 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021762#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021763 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21765
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021766 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021767#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21768 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021769 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21771
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021772 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021773
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021774 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021776 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021777#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21778
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021779 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021781 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21783
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021784 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021786 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21788
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021789 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021791 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21793
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021794 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021795
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021796 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
21797
21798 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 -060021799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021800 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 -060021801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21802
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021803 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 -060021804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021805 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 -060021806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21807
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021808 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021809
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021810 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021811
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021812 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021814 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021815
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021816 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 -060021817
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021818 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21820 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021821 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21823
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021824 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021826 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21828
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021829 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021830
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021831 void endRenderPass() const;
21832
21833 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021834#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021835 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21837
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021838 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021839#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021840 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21842
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021843 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021844
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021845 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021847 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21849
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021850 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021851
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021852 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
21853
21854 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021856 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021857#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21858
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021859 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021861 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021862#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21863
Mark Young0f183a82017-02-28 09:58:04 -070021864 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
21865#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21866 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
21867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21868
21869 void setDeviceMaskKHX( uint32_t deviceMask ) const;
21870
21871 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
21872
21873 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
21874
21875 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
21876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21877 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
21878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21879
21880 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
21881#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21882 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
21883#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21884
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021885 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021886 {
21887 return m_commandBuffer;
21888 }
21889
21890 explicit operator bool() const
21891 {
21892 return m_commandBuffer != VK_NULL_HANDLE;
21893 }
21894
21895 bool operator!() const
21896 {
21897 return m_commandBuffer == VK_NULL_HANDLE;
21898 }
21899
21900 private:
21901 VkCommandBuffer m_commandBuffer;
21902 };
21903 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
21904
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021905 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
21906 {
21907 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
21908 }
21909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21910 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
21911 {
21912 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
21913 return createResultValue( result, "vk::CommandBuffer::begin" );
21914 }
21915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21916
21917#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21918 VULKAN_HPP_INLINE Result CommandBuffer::end() const
21919 {
21920 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21921 }
21922#else
21923 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
21924 {
21925 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
21926 return createResultValue( result, "vk::CommandBuffer::end" );
21927 }
21928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21929
21930#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
21931 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
21932 {
21933 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21934 }
21935#else
21936 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
21937 {
21938 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
21939 return createResultValue( result, "vk::CommandBuffer::reset" );
21940 }
21941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21942
21943 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
21944 {
21945 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
21946 }
21947
21948 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
21949 {
21950 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
21951 }
21952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21953 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
21954 {
21955 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
21956 }
21957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21958
21959 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
21960 {
21961 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
21962 }
21963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21964 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
21965 {
21966 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
21967 }
21968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21969
21970 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
21971 {
21972 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
21973 }
21974
21975 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
21976 {
21977 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
21978 }
21979
21980 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
21981 {
21982 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
21983 }
21984
21985 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
21986 {
21987 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
21988 }
21989
21990 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
21991 {
21992 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
21993 }
21994
21995 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
21996 {
21997 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
21998 }
21999
22000 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22001 {
22002 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22003 }
22004
22005 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
22006 {
22007 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22008 }
22009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22010 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22011 {
22012 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22013 }
22014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22015
22016 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22017 {
22018 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22019 }
22020
22021 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22022 {
22023 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22024 }
22025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22026 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22027 {
22028#ifdef VULKAN_HPP_NO_EXCEPTIONS
22029 assert( buffers.size() == offsets.size() );
22030#else
22031 if ( buffers.size() != offsets.size() )
22032 {
22033 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22034 }
22035#endif // VULKAN_HPP_NO_EXCEPTIONS
22036 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22037 }
22038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22039
22040 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22041 {
22042 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22043 }
22044
22045 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22046 {
22047 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22048 }
22049
22050 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22051 {
22052 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22053 }
22054
22055 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22056 {
22057 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22058 }
22059
Mark Young0f183a82017-02-28 09:58:04 -070022060 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022061 {
Mark Young0f183a82017-02-28 09:58:04 -070022062 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022063 }
22064
22065 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22066 {
22067 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22068 }
22069
22070 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22071 {
22072 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22073 }
22074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22075 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22076 {
22077 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22078 }
22079#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22080
22081 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22082 {
22083 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 ) );
22084 }
22085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22086 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22087 {
22088 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() ) );
22089 }
22090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22091
22092 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22093 {
22094 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 ) );
22095 }
22096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22097 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22098 {
22099 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 ) );
22100 }
22101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22102
22103 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22104 {
22105 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22106 }
22107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22108 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22109 {
22110 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22111 }
22112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22113
22114 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22115 {
22116 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22117 }
22118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22119 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22120 {
22121 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22122 }
22123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22124
22125 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22126 {
22127 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22128 }
22129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22130 template <typename T>
22131 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22132 {
22133 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22134 }
22135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22136
22137 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22138 {
22139 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22140 }
22141
22142 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22143 {
22144 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22145 }
22146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22147 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22148 {
22149 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22150 }
22151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22152
22153 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22154 {
22155 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22156 }
22157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22158 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22159 {
22160 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22161 }
22162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22163
22164 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22165 {
22166 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22167 }
22168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22169 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22170 {
22171 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22172 }
22173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22174
22175 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22176 {
22177 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 ) );
22178 }
22179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22180 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22181 {
22182 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() ) );
22183 }
22184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22185
22186 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22187 {
22188 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22189 }
22190
22191 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22192 {
22193 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22194 }
22195
22196 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
22197 {
22198 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 ) );
22199 }
22200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22201 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
22202 {
22203 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() ) );
22204 }
22205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22206
22207 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
22208 {
22209 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 ) );
22210 }
22211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22212 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
22213 {
22214 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() ) );
22215 }
22216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22217
22218 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22219 {
22220 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22221 }
22222
22223 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22224 {
22225 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22226 }
22227
22228 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22229 {
22230 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22231 }
22232
22233 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22234 {
22235 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22236 }
22237
22238 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22239 {
22240 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22241 }
22242
22243 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22244 {
22245 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22246 }
22247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22248 template <typename T>
22249 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22250 {
22251 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22252 }
22253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22254
22255 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22256 {
22257 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22258 }
22259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22260 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22261 {
22262 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22263 }
22264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22265
22266 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22267 {
22268 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22269 }
22270
22271 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22272 {
22273 vkCmdEndRenderPass( m_commandBuffer );
22274 }
22275
22276 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22277 {
22278 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22279 }
22280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22281 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22282 {
22283 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22284 }
22285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22286
22287 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22288 {
22289 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22290 }
22291#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22292 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22293 {
22294 DebugMarkerMarkerInfoEXT markerInfo;
22295 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22296 return markerInfo;
22297 }
22298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22299
22300 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22301 {
22302 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22303 }
22304
22305 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22306 {
22307 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22308 }
22309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22310 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22311 {
22312 DebugMarkerMarkerInfoEXT markerInfo;
22313 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22314 return markerInfo;
22315 }
22316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22317
22318 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22319 {
22320 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22321 }
22322
22323 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22324 {
22325 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22326 }
22327
22328 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22329 {
22330 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22331 }
22332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22333 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22334 {
22335 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22336 }
22337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22338
22339 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22340 {
22341 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22342 }
22343#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22344 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22345 {
22346 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22347 }
22348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022349
22350 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22351 {
22352 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22353 }
22354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22355 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22356 {
22357 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22358 }
22359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22360
22361 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22362 {
22363 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22364 }
22365
22366 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
22367 {
22368 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22369 }
22370
22371 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22372 {
22373 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22374 }
22375
22376 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22377 {
22378 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22379 }
22380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22381 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22382 {
22383 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22384 }
22385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22386
22387 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22388 {
22389 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22390 }
22391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22392 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22393 {
22394 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22395 }
22396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022397
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022398 struct SubmitInfo
22399 {
22400 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 )
22401 : sType( StructureType::eSubmitInfo )
22402 , pNext( nullptr )
22403 , waitSemaphoreCount( waitSemaphoreCount_ )
22404 , pWaitSemaphores( pWaitSemaphores_ )
22405 , pWaitDstStageMask( pWaitDstStageMask_ )
22406 , commandBufferCount( commandBufferCount_ )
22407 , pCommandBuffers( pCommandBuffers_ )
22408 , signalSemaphoreCount( signalSemaphoreCount_ )
22409 , pSignalSemaphores( pSignalSemaphores_ )
22410 {
22411 }
22412
22413 SubmitInfo( VkSubmitInfo const & rhs )
22414 {
22415 memcpy( this, &rhs, sizeof(SubmitInfo) );
22416 }
22417
22418 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22419 {
22420 memcpy( this, &rhs, sizeof(SubmitInfo) );
22421 return *this;
22422 }
22423
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022424 SubmitInfo& setPNext( const void* pNext_ )
22425 {
22426 pNext = pNext_;
22427 return *this;
22428 }
22429
22430 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22431 {
22432 waitSemaphoreCount = waitSemaphoreCount_;
22433 return *this;
22434 }
22435
22436 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22437 {
22438 pWaitSemaphores = pWaitSemaphores_;
22439 return *this;
22440 }
22441
22442 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22443 {
22444 pWaitDstStageMask = pWaitDstStageMask_;
22445 return *this;
22446 }
22447
22448 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22449 {
22450 commandBufferCount = commandBufferCount_;
22451 return *this;
22452 }
22453
22454 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22455 {
22456 pCommandBuffers = pCommandBuffers_;
22457 return *this;
22458 }
22459
22460 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22461 {
22462 signalSemaphoreCount = signalSemaphoreCount_;
22463 return *this;
22464 }
22465
22466 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22467 {
22468 pSignalSemaphores = pSignalSemaphores_;
22469 return *this;
22470 }
22471
22472 operator const VkSubmitInfo&() const
22473 {
22474 return *reinterpret_cast<const VkSubmitInfo*>(this);
22475 }
22476
22477 bool operator==( SubmitInfo const& rhs ) const
22478 {
22479 return ( sType == rhs.sType )
22480 && ( pNext == rhs.pNext )
22481 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22482 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22483 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22484 && ( commandBufferCount == rhs.commandBufferCount )
22485 && ( pCommandBuffers == rhs.pCommandBuffers )
22486 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22487 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22488 }
22489
22490 bool operator!=( SubmitInfo const& rhs ) const
22491 {
22492 return !operator==( rhs );
22493 }
22494
22495 private:
22496 StructureType sType;
22497
22498 public:
22499 const void* pNext;
22500 uint32_t waitSemaphoreCount;
22501 const Semaphore* pWaitSemaphores;
22502 const PipelineStageFlags* pWaitDstStageMask;
22503 uint32_t commandBufferCount;
22504 const CommandBuffer* pCommandBuffers;
22505 uint32_t signalSemaphoreCount;
22506 const Semaphore* pSignalSemaphores;
22507 };
22508 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22509
22510 class Queue
22511 {
22512 public:
22513 Queue()
22514 : m_queue(VK_NULL_HANDLE)
22515 {}
22516
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022517 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022518 : m_queue(VK_NULL_HANDLE)
22519 {}
22520
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022521 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022522 : m_queue(queue)
22523 {}
22524
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022525#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022526 Queue& operator=(VkQueue queue)
22527 {
22528 m_queue = queue;
22529 return *this;
22530 }
22531#endif
22532
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022533 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022534 {
22535 m_queue = VK_NULL_HANDLE;
22536 return *this;
22537 }
22538
Lenny Komowebf33162016-08-26 14:10:08 -060022539 bool operator==(Queue const &rhs) const
22540 {
22541 return m_queue == rhs.m_queue;
22542 }
22543
22544 bool operator!=(Queue const &rhs) const
22545 {
22546 return m_queue != rhs.m_queue;
22547 }
22548
22549 bool operator<(Queue const &rhs) const
22550 {
22551 return m_queue < rhs.m_queue;
22552 }
22553
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022554 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022556 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22558
22559#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022560 Result waitIdle() const;
22561#else
22562 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22564
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022565 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022566#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022567 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022568#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22569
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022570 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022572 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22574
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022575 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022576 {
22577 return m_queue;
22578 }
22579
22580 explicit operator bool() const
22581 {
22582 return m_queue != VK_NULL_HANDLE;
22583 }
22584
22585 bool operator!() const
22586 {
22587 return m_queue == VK_NULL_HANDLE;
22588 }
22589
22590 private:
22591 VkQueue m_queue;
22592 };
22593 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22594
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022595 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22596 {
22597 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22598 }
22599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22600 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22601 {
22602 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22603 return createResultValue( result, "vk::Queue::submit" );
22604 }
22605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22606
22607#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22608 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22609 {
22610 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22611 }
22612#else
22613 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22614 {
22615 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22616 return createResultValue( result, "vk::Queue::waitIdle" );
22617 }
22618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22619
22620 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22621 {
22622 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22623 }
22624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22625 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22626 {
22627 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22628 return createResultValue( result, "vk::Queue::bindSparse" );
22629 }
22630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22631
22632 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22633 {
22634 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22635 }
22636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22637 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22638 {
22639 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22640 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22641 }
22642#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022643
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022644#ifndef VULKAN_HPP_NO_SMART_HANDLE
22645 class BufferDeleter;
22646 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22647 class BufferViewDeleter;
22648 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22649 class CommandBufferDeleter;
22650 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22651 class CommandPoolDeleter;
22652 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22653 class DescriptorPoolDeleter;
22654 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22655 class DescriptorSetDeleter;
22656 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22657 class DescriptorSetLayoutDeleter;
22658 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022659 class DescriptorUpdateTemplateKHRDeleter;
22660 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022661 class DeviceMemoryDeleter;
22662 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
22663 class EventDeleter;
22664 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
22665 class FenceDeleter;
22666 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
22667 class FramebufferDeleter;
22668 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
22669 class ImageDeleter;
22670 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
22671 class ImageViewDeleter;
22672 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
22673 class IndirectCommandsLayoutNVXDeleter;
22674 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
22675 class ObjectTableNVXDeleter;
22676 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
22677 class PipelineDeleter;
22678 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
22679 class PipelineCacheDeleter;
22680 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
22681 class PipelineLayoutDeleter;
22682 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
22683 class QueryPoolDeleter;
22684 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
22685 class RenderPassDeleter;
22686 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
22687 class SamplerDeleter;
22688 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
22689 class SemaphoreDeleter;
22690 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
22691 class ShaderModuleDeleter;
22692 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
22693 class SwapchainKHRDeleter;
22694 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
22695#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22696
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022697 class Device
22698 {
22699 public:
22700 Device()
22701 : m_device(VK_NULL_HANDLE)
22702 {}
22703
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022704 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022705 : m_device(VK_NULL_HANDLE)
22706 {}
22707
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022708 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022709 : m_device(device)
22710 {}
22711
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022712#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022713 Device& operator=(VkDevice device)
22714 {
22715 m_device = device;
22716 return *this;
22717 }
22718#endif
22719
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022720 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022721 {
22722 m_device = VK_NULL_HANDLE;
22723 return *this;
22724 }
22725
Lenny Komowebf33162016-08-26 14:10:08 -060022726 bool operator==(Device const &rhs) const
22727 {
22728 return m_device == rhs.m_device;
22729 }
22730
22731 bool operator!=(Device const &rhs) const
22732 {
22733 return m_device != rhs.m_device;
22734 }
22735
22736 bool operator<(Device const &rhs) const
22737 {
22738 return m_device < rhs.m_device;
22739 }
22740
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022741 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022743 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22745
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022746 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022748 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22750
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022751 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022752#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022753 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022754#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22755
22756#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022757 Result waitIdle() const;
22758#else
22759 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22761
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022762 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022764 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22765#ifndef VULKAN_HPP_NO_SMART_HANDLE
22766 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22767#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22769
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022770 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022772 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22774
22775 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
22776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22777 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
22778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22779
22780 void unmapMemory( DeviceMemory memory ) const;
22781
22782 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22783#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22784 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22786
22787 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22789 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22791
22792 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
22793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22794 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
22795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22796
22797 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
22798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22799 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022800#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22801
22802#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022803 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22804#else
22805 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022807
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022808 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022810 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22812
22813#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022814 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
22815#else
22816 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22818
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022819 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022821 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
22822 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22824
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022825 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022826#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022827 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22828#ifndef VULKAN_HPP_NO_SMART_HANDLE
22829 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22830#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022831#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22832
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022833 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022834#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022835 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22837
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022838 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022839#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022840 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22842
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022843 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022844
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022845 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022847 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
22848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22849
22850 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
22851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22852 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22853#ifndef VULKAN_HPP_NO_SMART_HANDLE
22854 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22855#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22857
22858 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
22859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22860 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22862
22863 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
22864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22865 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22866#ifndef VULKAN_HPP_NO_SMART_HANDLE
22867 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22868#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22870
22871 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
22872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22873 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22875
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022876 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022877
22878#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022879 Result setEvent( Event event ) const;
22880#else
22881 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22883
22884#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022885 Result resetEvent( Event event ) const;
22886#else
22887 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22889
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022890 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022892 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22893#ifndef VULKAN_HPP_NO_SMART_HANDLE
22894 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22895#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22897
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022898 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022900 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022901#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22902
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022903 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 -060022904#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22905 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022906 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 -060022907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22908
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022909 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022911 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22912#ifndef VULKAN_HPP_NO_SMART_HANDLE
22913 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22914#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22916
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022917 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022918#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022919 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22921
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022922 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022924 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22925#ifndef VULKAN_HPP_NO_SMART_HANDLE
22926 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22927#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22929
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022930 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022931#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022932 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22934
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022935 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022937 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22938#ifndef VULKAN_HPP_NO_SMART_HANDLE
22939 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22940#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22942
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022943 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022945 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22947
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022948 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022950 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022953 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022955 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22956#ifndef VULKAN_HPP_NO_SMART_HANDLE
22957 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22958#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22960
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022961 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022963 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022966 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022968 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22969#ifndef VULKAN_HPP_NO_SMART_HANDLE
22970 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22971#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022974 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022976 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022979 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022981 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22982#ifndef VULKAN_HPP_NO_SMART_HANDLE
22983 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22984#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022987 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022989 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22991
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022992 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022994 template <typename Allocator = std::allocator<uint8_t>>
22995 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022998 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023000 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023003 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023005 template <typename Allocator = std::allocator<Pipeline>>
23006 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23007 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23008#ifndef VULKAN_HPP_NO_SMART_HANDLE
23009 template <typename Allocator = std::allocator<Pipeline>>
23010 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23011 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23012#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23014
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023015 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023017 template <typename Allocator = std::allocator<Pipeline>>
23018 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23019 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23020#ifndef VULKAN_HPP_NO_SMART_HANDLE
23021 template <typename Allocator = std::allocator<Pipeline>>
23022 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23023 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23024#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23026
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023027 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023028#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023029 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023030#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23031
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023032 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023034 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23035#ifndef VULKAN_HPP_NO_SMART_HANDLE
23036 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23037#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023040 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023042 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23044
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023045 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023047 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23048#ifndef VULKAN_HPP_NO_SMART_HANDLE
23049 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23050#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23052
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023053 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023055 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023058 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023060 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23061#ifndef VULKAN_HPP_NO_SMART_HANDLE
23062 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23063#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023066 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023068 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23070
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023071 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023073 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23074#ifndef VULKAN_HPP_NO_SMART_HANDLE
23075 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23076#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23078
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023079 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023081 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23083
23084#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023085 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23086#else
23087 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23089
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023090 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023092 template <typename Allocator = std::allocator<DescriptorSet>>
23093 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23094#ifndef VULKAN_HPP_NO_SMART_HANDLE
23095 template <typename Allocator = std::allocator<DescriptorSet>>
23096 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23097#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023098#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23099
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023100 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023102 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23104
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023105 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023107 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023110 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023112 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23113#ifndef VULKAN_HPP_NO_SMART_HANDLE
23114 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23115#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23117
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023118 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023120 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23122
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023123 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023125 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23126#ifndef VULKAN_HPP_NO_SMART_HANDLE
23127 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23130
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023131 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023133 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023136 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023138 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23140
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023141 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023143 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23144#ifndef VULKAN_HPP_NO_SMART_HANDLE
23145 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23146#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023149 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023151 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23153
23154#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023155 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23156#else
23157 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023158#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23159
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023160 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023162 template <typename Allocator = std::allocator<CommandBuffer>>
23163 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23164#ifndef VULKAN_HPP_NO_SMART_HANDLE
23165 template <typename Allocator = std::allocator<CommandBuffer>>
23166 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23167#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23169
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023170 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023172 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023175 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023177 template <typename Allocator = std::allocator<SwapchainKHR>>
23178 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23179 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23180#ifndef VULKAN_HPP_NO_SMART_HANDLE
23181 template <typename Allocator = std::allocator<SwapchainKHR>>
23182 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23183 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23184#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023187 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023189 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23190#ifndef VULKAN_HPP_NO_SMART_HANDLE
23191 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23192#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23194
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023195 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023197 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23199
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023200 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023202 template <typename Allocator = std::allocator<Image>>
23203 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23205
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023206 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023207#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023208 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23210
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023211 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023213 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23215
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023216 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023218 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023219#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23220
Lenny Komow6501c122016-08-31 15:03:49 -060023221#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023222 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23224 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023226#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23227
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023228 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023230 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23231#ifndef VULKAN_HPP_NO_SMART_HANDLE
23232 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23233#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23235
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023236 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023238 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023239#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23240
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023241 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023243 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23244#ifndef VULKAN_HPP_NO_SMART_HANDLE
23245 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23246#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23248
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023249 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023251 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023252#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23253
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023254 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023256 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23258
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023259 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023261 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23263
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023264#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023265 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023266#else
23267 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023269
Mark Young0f183a82017-02-28 09:58:04 -070023270#ifdef VK_USE_PLATFORM_WIN32_KHR
23271 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23273 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23275#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23276
23277#ifdef VK_USE_PLATFORM_WIN32_KHR
23278 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23279#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23280 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23282#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23283
23284 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23286 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23288
23289 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23291 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23293
23294#ifdef VK_USE_PLATFORM_WIN32_KHX
23295 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23297 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23299#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23300
23301#ifdef VK_USE_PLATFORM_WIN32_KHX
23302 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23304 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23306#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23307
23308 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23310 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23312
23313 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23315 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23317
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023318 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023320 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023321#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23322
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023323 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023325 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23327
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023328 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023330 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23332
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023333 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023335 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23337
Mark Young0f183a82017-02-28 09:58:04 -070023338 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23340 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23342
23343 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23345 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23347
23348 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23349#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23350 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23352
23353 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23355 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23356#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23357
23358 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23359#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23360 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23362
23363 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23365 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23367
23368 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23369#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23370 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23371#ifndef VULKAN_HPP_NO_SMART_HANDLE
23372 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23373#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23374#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23375
23376 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23378 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23380
23381 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23382
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023383 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23385 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23387
23388 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23390 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23392
23393 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23395 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23396 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23398
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023399 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023400 {
23401 return m_device;
23402 }
23403
23404 explicit operator bool() const
23405 {
23406 return m_device != VK_NULL_HANDLE;
23407 }
23408
23409 bool operator!() const
23410 {
23411 return m_device == VK_NULL_HANDLE;
23412 }
23413
23414 private:
23415 VkDevice m_device;
23416 };
23417 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23418
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023419#ifndef VULKAN_HPP_NO_SMART_HANDLE
23420 class BufferDeleter
23421 {
23422 public:
23423 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23424 : m_device( device )
23425 , m_allocator( allocator )
23426 {}
23427
23428 void operator()( Buffer buffer )
23429 {
23430 m_device.destroyBuffer( buffer, m_allocator );
23431 }
23432
23433 private:
23434 Device m_device;
23435 Optional<const AllocationCallbacks> m_allocator;
23436 };
23437
23438 class BufferViewDeleter
23439 {
23440 public:
23441 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23442 : m_device( device )
23443 , m_allocator( allocator )
23444 {}
23445
23446 void operator()( BufferView bufferView )
23447 {
23448 m_device.destroyBufferView( bufferView, m_allocator );
23449 }
23450
23451 private:
23452 Device m_device;
23453 Optional<const AllocationCallbacks> m_allocator;
23454 };
23455
23456 class CommandBufferDeleter
23457 {
23458 public:
23459 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23460 : m_device( device )
23461 , m_commandPool( commandPool )
23462 {}
23463
23464 void operator()( CommandBuffer commandBuffer )
23465 {
23466 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23467 }
23468
23469 private:
23470 Device m_device;
23471 CommandPool m_commandPool;
23472 };
23473
23474 class CommandPoolDeleter
23475 {
23476 public:
23477 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23478 : m_device( device )
23479 , m_allocator( allocator )
23480 {}
23481
23482 void operator()( CommandPool commandPool )
23483 {
23484 m_device.destroyCommandPool( commandPool, m_allocator );
23485 }
23486
23487 private:
23488 Device m_device;
23489 Optional<const AllocationCallbacks> m_allocator;
23490 };
23491
23492 class DescriptorPoolDeleter
23493 {
23494 public:
23495 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23496 : m_device( device )
23497 , m_allocator( allocator )
23498 {}
23499
23500 void operator()( DescriptorPool descriptorPool )
23501 {
23502 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23503 }
23504
23505 private:
23506 Device m_device;
23507 Optional<const AllocationCallbacks> m_allocator;
23508 };
23509
23510 class DescriptorSetDeleter
23511 {
23512 public:
23513 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23514 : m_device( device )
23515 , m_descriptorPool( descriptorPool )
23516 {}
23517
23518 void operator()( DescriptorSet descriptorSet )
23519 {
23520 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23521 }
23522
23523 private:
23524 Device m_device;
23525 DescriptorPool m_descriptorPool;
23526 };
23527
23528 class DescriptorSetLayoutDeleter
23529 {
23530 public:
23531 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23532 : m_device( device )
23533 , m_allocator( allocator )
23534 {}
23535
23536 void operator()( DescriptorSetLayout descriptorSetLayout )
23537 {
23538 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23539 }
23540
23541 private:
23542 Device m_device;
23543 Optional<const AllocationCallbacks> m_allocator;
23544 };
23545
Mark Young0f183a82017-02-28 09:58:04 -070023546 class DescriptorUpdateTemplateKHRDeleter
23547 {
23548 public:
23549 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23550 : m_device( device )
23551 , m_allocator( allocator )
23552 {}
23553
23554 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23555 {
23556 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23557 }
23558
23559 private:
23560 Device m_device;
23561 Optional<const AllocationCallbacks> m_allocator;
23562 };
23563
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023564 class DeviceMemoryDeleter
23565 {
23566 public:
23567 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23568 : m_device( device )
23569 , m_allocator( allocator )
23570 {}
23571
23572 void operator()( DeviceMemory deviceMemory )
23573 {
23574 m_device.freeMemory( deviceMemory, m_allocator );
23575 }
23576
23577 private:
23578 Device m_device;
23579 Optional<const AllocationCallbacks> m_allocator;
23580 };
23581
23582 class EventDeleter
23583 {
23584 public:
23585 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23586 : m_device( device )
23587 , m_allocator( allocator )
23588 {}
23589
23590 void operator()( Event event )
23591 {
23592 m_device.destroyEvent( event, m_allocator );
23593 }
23594
23595 private:
23596 Device m_device;
23597 Optional<const AllocationCallbacks> m_allocator;
23598 };
23599
23600 class FenceDeleter
23601 {
23602 public:
23603 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23604 : m_device( device )
23605 , m_allocator( allocator )
23606 {}
23607
23608 void operator()( Fence fence )
23609 {
23610 m_device.destroyFence( fence, m_allocator );
23611 }
23612
23613 private:
23614 Device m_device;
23615 Optional<const AllocationCallbacks> m_allocator;
23616 };
23617
23618 class FramebufferDeleter
23619 {
23620 public:
23621 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23622 : m_device( device )
23623 , m_allocator( allocator )
23624 {}
23625
23626 void operator()( Framebuffer framebuffer )
23627 {
23628 m_device.destroyFramebuffer( framebuffer, m_allocator );
23629 }
23630
23631 private:
23632 Device m_device;
23633 Optional<const AllocationCallbacks> m_allocator;
23634 };
23635
23636 class ImageDeleter
23637 {
23638 public:
23639 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23640 : m_device( device )
23641 , m_allocator( allocator )
23642 {}
23643
23644 void operator()( Image image )
23645 {
23646 m_device.destroyImage( image, m_allocator );
23647 }
23648
23649 private:
23650 Device m_device;
23651 Optional<const AllocationCallbacks> m_allocator;
23652 };
23653
23654 class ImageViewDeleter
23655 {
23656 public:
23657 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23658 : m_device( device )
23659 , m_allocator( allocator )
23660 {}
23661
23662 void operator()( ImageView imageView )
23663 {
23664 m_device.destroyImageView( imageView, m_allocator );
23665 }
23666
23667 private:
23668 Device m_device;
23669 Optional<const AllocationCallbacks> m_allocator;
23670 };
23671
23672 class IndirectCommandsLayoutNVXDeleter
23673 {
23674 public:
23675 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23676 : m_device( device )
23677 , m_allocator( allocator )
23678 {}
23679
23680 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
23681 {
23682 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
23683 }
23684
23685 private:
23686 Device m_device;
23687 Optional<const AllocationCallbacks> m_allocator;
23688 };
23689
23690 class ObjectTableNVXDeleter
23691 {
23692 public:
23693 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23694 : m_device( device )
23695 , m_allocator( allocator )
23696 {}
23697
23698 void operator()( ObjectTableNVX objectTableNVX )
23699 {
23700 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
23701 }
23702
23703 private:
23704 Device m_device;
23705 Optional<const AllocationCallbacks> m_allocator;
23706 };
23707
23708 class PipelineDeleter
23709 {
23710 public:
23711 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23712 : m_device( device )
23713 , m_allocator( allocator )
23714 {}
23715
23716 void operator()( Pipeline pipeline )
23717 {
23718 m_device.destroyPipeline( pipeline, m_allocator );
23719 }
23720
23721 private:
23722 Device m_device;
23723 Optional<const AllocationCallbacks> m_allocator;
23724 };
23725
23726 class PipelineCacheDeleter
23727 {
23728 public:
23729 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23730 : m_device( device )
23731 , m_allocator( allocator )
23732 {}
23733
23734 void operator()( PipelineCache pipelineCache )
23735 {
23736 m_device.destroyPipelineCache( pipelineCache, m_allocator );
23737 }
23738
23739 private:
23740 Device m_device;
23741 Optional<const AllocationCallbacks> m_allocator;
23742 };
23743
23744 class PipelineLayoutDeleter
23745 {
23746 public:
23747 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23748 : m_device( device )
23749 , m_allocator( allocator )
23750 {}
23751
23752 void operator()( PipelineLayout pipelineLayout )
23753 {
23754 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
23755 }
23756
23757 private:
23758 Device m_device;
23759 Optional<const AllocationCallbacks> m_allocator;
23760 };
23761
23762 class QueryPoolDeleter
23763 {
23764 public:
23765 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23766 : m_device( device )
23767 , m_allocator( allocator )
23768 {}
23769
23770 void operator()( QueryPool queryPool )
23771 {
23772 m_device.destroyQueryPool( queryPool, m_allocator );
23773 }
23774
23775 private:
23776 Device m_device;
23777 Optional<const AllocationCallbacks> m_allocator;
23778 };
23779
23780 class RenderPassDeleter
23781 {
23782 public:
23783 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23784 : m_device( device )
23785 , m_allocator( allocator )
23786 {}
23787
23788 void operator()( RenderPass renderPass )
23789 {
23790 m_device.destroyRenderPass( renderPass, m_allocator );
23791 }
23792
23793 private:
23794 Device m_device;
23795 Optional<const AllocationCallbacks> m_allocator;
23796 };
23797
23798 class SamplerDeleter
23799 {
23800 public:
23801 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23802 : m_device( device )
23803 , m_allocator( allocator )
23804 {}
23805
23806 void operator()( Sampler sampler )
23807 {
23808 m_device.destroySampler( sampler, m_allocator );
23809 }
23810
23811 private:
23812 Device m_device;
23813 Optional<const AllocationCallbacks> m_allocator;
23814 };
23815
23816 class SemaphoreDeleter
23817 {
23818 public:
23819 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23820 : m_device( device )
23821 , m_allocator( allocator )
23822 {}
23823
23824 void operator()( Semaphore semaphore )
23825 {
23826 m_device.destroySemaphore( semaphore, m_allocator );
23827 }
23828
23829 private:
23830 Device m_device;
23831 Optional<const AllocationCallbacks> m_allocator;
23832 };
23833
23834 class ShaderModuleDeleter
23835 {
23836 public:
23837 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23838 : m_device( device )
23839 , m_allocator( allocator )
23840 {}
23841
23842 void operator()( ShaderModule shaderModule )
23843 {
23844 m_device.destroyShaderModule( shaderModule, m_allocator );
23845 }
23846
23847 private:
23848 Device m_device;
23849 Optional<const AllocationCallbacks> m_allocator;
23850 };
23851
23852 class SwapchainKHRDeleter
23853 {
23854 public:
23855 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23856 : m_device( device )
23857 , m_allocator( allocator )
23858 {}
23859
23860 void operator()( SwapchainKHR swapchainKHR )
23861 {
23862 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
23863 }
23864
23865 private:
23866 Device m_device;
23867 Optional<const AllocationCallbacks> m_allocator;
23868 };
23869#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23870
23871 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
23872 {
23873 return vkGetDeviceProcAddr( m_device, pName );
23874 }
23875#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23876 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
23877 {
23878 return vkGetDeviceProcAddr( m_device, name.c_str() );
23879 }
23880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23881
23882 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
23883 {
23884 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23885 }
23886#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23887 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
23888 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023889 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023890 }
23891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23892
23893 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
23894 {
23895 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
23896 }
23897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23898 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
23899 {
23900 Queue queue;
23901 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
23902 return queue;
23903 }
23904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23905
23906#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
23907 VULKAN_HPP_INLINE Result Device::waitIdle() const
23908 {
23909 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23910 }
23911#else
23912 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
23913 {
23914 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
23915 return createResultValue( result, "vk::Device::waitIdle" );
23916 }
23917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23918
23919 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
23920 {
23921 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
23922 }
23923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23924 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23925 {
23926 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023927 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 -070023928 return createResultValue( result, memory, "vk::Device::allocateMemory" );
23929 }
23930#ifndef VULKAN_HPP_NO_SMART_HANDLE
23931 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
23932 {
23933 DeviceMemoryDeleter deleter( *this, allocator );
23934 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
23935 }
23936#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23938
23939 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
23940 {
23941 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
23942 }
23943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23944 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
23945 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023946 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023947 }
23948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23949
23950 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
23951 {
23952 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
23953 }
23954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23955 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
23956 {
23957 void* pData;
23958 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
23959 return createResultValue( result, pData, "vk::Device::mapMemory" );
23960 }
23961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23962
23963 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
23964 {
23965 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
23966 }
23967
23968 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23969 {
23970 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23971 }
23972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23973 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23974 {
23975 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
23976 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
23977 }
23978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23979
23980 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
23981 {
23982 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
23983 }
23984#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23985 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
23986 {
23987 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
23988 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
23989 }
23990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23991
23992 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
23993 {
23994 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
23995 }
23996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23997 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
23998 {
23999 DeviceSize committedMemoryInBytes;
24000 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24001 return committedMemoryInBytes;
24002 }
24003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24004
24005 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24006 {
24007 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24008 }
24009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24010 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24011 {
24012 MemoryRequirements memoryRequirements;
24013 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24014 return memoryRequirements;
24015 }
24016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24017
24018#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24019 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24020 {
24021 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24022 }
24023#else
24024 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24025 {
24026 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24027 return createResultValue( result, "vk::Device::bindBufferMemory" );
24028 }
24029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24030
24031 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24032 {
24033 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24034 }
24035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24036 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24037 {
24038 MemoryRequirements memoryRequirements;
24039 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24040 return memoryRequirements;
24041 }
24042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24043
24044#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24045 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24046 {
24047 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24048 }
24049#else
24050 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24051 {
24052 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24053 return createResultValue( result, "vk::Device::bindImageMemory" );
24054 }
24055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24056
24057 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24058 {
24059 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24060 }
24061#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24062 template <typename Allocator>
24063 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24064 {
24065 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24066 uint32_t sparseMemoryRequirementCount;
24067 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24068 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24069 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24070 return sparseMemoryRequirements;
24071 }
24072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24073
24074 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24075 {
24076 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24077 }
24078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24079 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24080 {
24081 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024082 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 -070024083 return createResultValue( result, fence, "vk::Device::createFence" );
24084 }
24085#ifndef VULKAN_HPP_NO_SMART_HANDLE
24086 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24087 {
24088 FenceDeleter deleter( *this, allocator );
24089 return UniqueFence( createFence( createInfo, allocator ), deleter );
24090 }
24091#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24093
24094 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24095 {
24096 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24097 }
24098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24099 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24100 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024101 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024102 }
24103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24104
24105 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24106 {
24107 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24108 }
24109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24110 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24111 {
24112 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24113 return createResultValue( result, "vk::Device::resetFences" );
24114 }
24115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24116
24117#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24118 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24119 {
24120 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24121 }
24122#else
24123 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24124 {
24125 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24126 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24127 }
24128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24129
24130 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24131 {
24132 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24133 }
24134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24135 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24136 {
24137 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24138 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24139 }
24140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24141
24142 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24143 {
24144 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24145 }
24146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24147 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24148 {
24149 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024150 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 -070024151 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24152 }
24153#ifndef VULKAN_HPP_NO_SMART_HANDLE
24154 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24155 {
24156 SemaphoreDeleter deleter( *this, allocator );
24157 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24158 }
24159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24161
24162 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24163 {
24164 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24165 }
24166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24167 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24168 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024169 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024170 }
24171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24172
24173 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24174 {
24175 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24176 }
24177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24178 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24179 {
24180 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024181 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 -070024182 return createResultValue( result, event, "vk::Device::createEvent" );
24183 }
24184#ifndef VULKAN_HPP_NO_SMART_HANDLE
24185 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24186 {
24187 EventDeleter deleter( *this, allocator );
24188 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24189 }
24190#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24192
24193 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24194 {
24195 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24196 }
24197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24198 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24199 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024200 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024201 }
24202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24203
24204#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24205 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24206 {
24207 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24208 }
24209#else
24210 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24211 {
24212 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24213 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24214 }
24215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24216
24217#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24218 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24219 {
24220 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24221 }
24222#else
24223 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24224 {
24225 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24226 return createResultValue( result, "vk::Device::setEvent" );
24227 }
24228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24229
24230#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24231 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24232 {
24233 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24234 }
24235#else
24236 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24237 {
24238 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24239 return createResultValue( result, "vk::Device::resetEvent" );
24240 }
24241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24242
24243 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24244 {
24245 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24246 }
24247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24248 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24249 {
24250 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024251 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 -070024252 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24253 }
24254#ifndef VULKAN_HPP_NO_SMART_HANDLE
24255 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24256 {
24257 QueryPoolDeleter deleter( *this, allocator );
24258 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24259 }
24260#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24262
24263 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24264 {
24265 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24266 }
24267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24268 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24269 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024270 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024271 }
24272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24273
24274 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24275 {
24276 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24277 }
24278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24279 template <typename T>
24280 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24281 {
24282 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 ) ) );
24283 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24284 }
24285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24286
24287 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24288 {
24289 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24290 }
24291#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24292 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24293 {
24294 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024295 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 -070024296 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24297 }
24298#ifndef VULKAN_HPP_NO_SMART_HANDLE
24299 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24300 {
24301 BufferDeleter deleter( *this, allocator );
24302 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24303 }
24304#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24306
24307 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24308 {
24309 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24310 }
24311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24312 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24313 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024314 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024315 }
24316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24317
24318 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24319 {
24320 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24321 }
24322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24323 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24324 {
24325 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024326 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 -070024327 return createResultValue( result, view, "vk::Device::createBufferView" );
24328 }
24329#ifndef VULKAN_HPP_NO_SMART_HANDLE
24330 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24331 {
24332 BufferViewDeleter deleter( *this, allocator );
24333 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24334 }
24335#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24337
24338 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24339 {
24340 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24341 }
24342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24343 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24344 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024345 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024346 }
24347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24348
24349 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24350 {
24351 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24352 }
24353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24354 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24355 {
24356 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024357 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 -070024358 return createResultValue( result, image, "vk::Device::createImage" );
24359 }
24360#ifndef VULKAN_HPP_NO_SMART_HANDLE
24361 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24362 {
24363 ImageDeleter deleter( *this, allocator );
24364 return UniqueImage( createImage( createInfo, allocator ), deleter );
24365 }
24366#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24368
24369 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24370 {
24371 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24372 }
24373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24374 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24375 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024376 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024377 }
24378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24379
24380 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24381 {
24382 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24383 }
24384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24385 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24386 {
24387 SubresourceLayout layout;
24388 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24389 return layout;
24390 }
24391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24392
24393 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24394 {
24395 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24396 }
24397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24398 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24399 {
24400 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024401 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 -070024402 return createResultValue( result, view, "vk::Device::createImageView" );
24403 }
24404#ifndef VULKAN_HPP_NO_SMART_HANDLE
24405 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24406 {
24407 ImageViewDeleter deleter( *this, allocator );
24408 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24409 }
24410#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24412
24413 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24414 {
24415 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24416 }
24417#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24418 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24419 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024420 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024421 }
24422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24423
24424 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24425 {
24426 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24427 }
24428#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24429 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24430 {
24431 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024432 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 -070024433 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24434 }
24435#ifndef VULKAN_HPP_NO_SMART_HANDLE
24436 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24437 {
24438 ShaderModuleDeleter deleter( *this, allocator );
24439 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24440 }
24441#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24443
24444 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24445 {
24446 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24447 }
24448#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24449 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24450 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024451 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024452 }
24453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24454
24455 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24456 {
24457 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24458 }
24459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24460 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24461 {
24462 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024463 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 -070024464 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24465 }
24466#ifndef VULKAN_HPP_NO_SMART_HANDLE
24467 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24468 {
24469 PipelineCacheDeleter deleter( *this, allocator );
24470 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24471 }
24472#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24474
24475 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24476 {
24477 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24478 }
24479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24480 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24481 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024482 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024483 }
24484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24485
24486 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24487 {
24488 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24489 }
24490#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24491 template <typename Allocator>
24492 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24493 {
24494 std::vector<uint8_t,Allocator> data;
24495 size_t dataSize;
24496 Result result;
24497 do
24498 {
24499 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24500 if ( ( result == Result::eSuccess ) && dataSize )
24501 {
24502 data.resize( dataSize );
24503 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24504 }
24505 } while ( result == Result::eIncomplete );
24506 assert( dataSize <= data.size() );
24507 data.resize( dataSize );
24508 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24509 }
24510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24511
24512 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24513 {
24514 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24515 }
24516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24517 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24518 {
24519 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24520 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24521 }
24522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24523
24524 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24525 {
24526 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 ) ) );
24527 }
24528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24529 template <typename Allocator>
24530 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24531 {
24532 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024533 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 -070024534 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24535 }
24536 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24537 {
24538 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024539 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 -070024540 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24541 }
24542#ifndef VULKAN_HPP_NO_SMART_HANDLE
24543 template <typename Allocator>
24544 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24545 {
24546 PipelineDeleter deleter( *this, allocator );
24547 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24548 std::vector<UniquePipeline> uniquePipelines;
24549 uniquePipelines.reserve( pipelines.size() );
24550 for ( auto pipeline : pipelines )
24551 {
24552 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24553 }
24554 return uniquePipelines;
24555 }
24556 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24557 {
24558 PipelineDeleter deleter( *this, allocator );
24559 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24560 }
24561#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24563
24564 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24565 {
24566 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 ) ) );
24567 }
24568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24569 template <typename Allocator>
24570 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24571 {
24572 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024573 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 -070024574 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24575 }
24576 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24577 {
24578 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024579 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 -070024580 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24581 }
24582#ifndef VULKAN_HPP_NO_SMART_HANDLE
24583 template <typename Allocator>
24584 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24585 {
24586 PipelineDeleter deleter( *this, allocator );
24587 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24588 std::vector<UniquePipeline> uniquePipelines;
24589 uniquePipelines.reserve( pipelines.size() );
24590 for ( auto pipeline : pipelines )
24591 {
24592 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24593 }
24594 return uniquePipelines;
24595 }
24596 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24597 {
24598 PipelineDeleter deleter( *this, allocator );
24599 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24600 }
24601#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24603
24604 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24605 {
24606 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24607 }
24608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24609 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24610 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024611 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024612 }
24613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24614
24615 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24616 {
24617 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24618 }
24619#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24620 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24621 {
24622 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024623 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 -070024624 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24625 }
24626#ifndef VULKAN_HPP_NO_SMART_HANDLE
24627 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24628 {
24629 PipelineLayoutDeleter deleter( *this, allocator );
24630 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24631 }
24632#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24633#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24634
24635 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24636 {
24637 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24638 }
24639#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24640 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24641 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024642 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024643 }
24644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24645
24646 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24647 {
24648 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24649 }
24650#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24651 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24652 {
24653 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024654 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 -070024655 return createResultValue( result, sampler, "vk::Device::createSampler" );
24656 }
24657#ifndef VULKAN_HPP_NO_SMART_HANDLE
24658 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24659 {
24660 SamplerDeleter deleter( *this, allocator );
24661 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
24662 }
24663#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24664#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24665
24666 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
24667 {
24668 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24669 }
24670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24671 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
24672 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024673 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024674 }
24675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24676
24677 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
24678 {
24679 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
24680 }
24681#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24682 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24683 {
24684 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024685 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 -070024686 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
24687 }
24688#ifndef VULKAN_HPP_NO_SMART_HANDLE
24689 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24690 {
24691 DescriptorSetLayoutDeleter deleter( *this, allocator );
24692 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
24693 }
24694#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24696
24697 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
24698 {
24699 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24700 }
24701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24702 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
24703 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024704 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024705 }
24706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24707
24708 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
24709 {
24710 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
24711 }
24712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24713 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24714 {
24715 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024716 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 -070024717 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
24718 }
24719#ifndef VULKAN_HPP_NO_SMART_HANDLE
24720 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24721 {
24722 DescriptorPoolDeleter deleter( *this, allocator );
24723 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
24724 }
24725#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24727
24728 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
24729 {
24730 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24731 }
24732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24733 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
24734 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024735 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024736 }
24737#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24738
24739#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24740 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24741 {
24742 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24743 }
24744#else
24745 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24746 {
24747 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24748 return createResultValue( result, "vk::Device::resetDescriptorPool" );
24749 }
24750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24751
24752 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
24753 {
24754 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
24755 }
24756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24757 template <typename Allocator>
24758 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
24759 {
24760 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
24761 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
24762 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
24763 }
24764#ifndef VULKAN_HPP_NO_SMART_HANDLE
24765 template <typename Allocator>
24766 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
24767 {
24768 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
24769 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
24770 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
24771 uniqueDescriptorSets.reserve( descriptorSets.size() );
24772 for ( auto descriptorSet : descriptorSets )
24773 {
24774 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
24775 }
24776 return uniqueDescriptorSets;
24777 }
24778#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24780
24781 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
24782 {
24783 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
24784 }
24785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24786 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
24787 {
24788 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
24789 return createResultValue( result, "vk::Device::freeDescriptorSets" );
24790 }
24791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24792
24793 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
24794 {
24795 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
24796 }
24797#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24798 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
24799 {
24800 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
24801 }
24802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24803
24804 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
24805 {
24806 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
24807 }
24808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24809 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24810 {
24811 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024812 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 -070024813 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
24814 }
24815#ifndef VULKAN_HPP_NO_SMART_HANDLE
24816 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24817 {
24818 FramebufferDeleter deleter( *this, allocator );
24819 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
24820 }
24821#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24823
24824 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
24825 {
24826 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24827 }
24828#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24829 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
24830 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024831 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024832 }
24833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24834
24835 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
24836 {
24837 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
24838 }
24839#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24840 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24841 {
24842 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024843 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 -070024844 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
24845 }
24846#ifndef VULKAN_HPP_NO_SMART_HANDLE
24847 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24848 {
24849 RenderPassDeleter deleter( *this, allocator );
24850 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
24851 }
24852#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24854
24855 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
24856 {
24857 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24858 }
24859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24860 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
24861 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024862 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024863 }
24864#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24865
24866 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
24867 {
24868 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
24869 }
24870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24871 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
24872 {
24873 Extent2D granularity;
24874 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
24875 return granularity;
24876 }
24877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24878
24879 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
24880 {
24881 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
24882 }
24883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24884 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24885 {
24886 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024887 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 -070024888 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
24889 }
24890#ifndef VULKAN_HPP_NO_SMART_HANDLE
24891 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24892 {
24893 CommandPoolDeleter deleter( *this, allocator );
24894 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
24895 }
24896#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24897#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24898
24899 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
24900 {
24901 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24902 }
24903#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24904 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
24905 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024906 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024907 }
24908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24909
24910#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24911 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24912 {
24913 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24914 }
24915#else
24916 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
24917 {
24918 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
24919 return createResultValue( result, "vk::Device::resetCommandPool" );
24920 }
24921#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24922
24923 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
24924 {
24925 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
24926 }
24927#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24928 template <typename Allocator>
24929 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
24930 {
24931 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
24932 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
24933 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
24934 }
24935#ifndef VULKAN_HPP_NO_SMART_HANDLE
24936 template <typename Allocator>
24937 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
24938 {
24939 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
24940 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
24941 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
24942 uniqueCommandBuffers.reserve( commandBuffers.size() );
24943 for ( auto commandBuffer : commandBuffers )
24944 {
24945 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
24946 }
24947 return uniqueCommandBuffers;
24948 }
24949#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24951
24952 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
24953 {
24954 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
24955 }
24956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24957 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
24958 {
24959 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
24960 }
24961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24962
24963 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
24964 {
24965 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
24966 }
24967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24968 template <typename Allocator>
24969 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24970 {
24971 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024972 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 -070024973 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
24974 }
24975 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
24976 {
24977 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024978 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 -070024979 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
24980 }
24981#ifndef VULKAN_HPP_NO_SMART_HANDLE
24982 template <typename Allocator>
24983 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
24984 {
24985 SwapchainKHRDeleter deleter( *this, allocator );
24986 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
24987 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
24988 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
24989 for ( auto swapchainKHR : swapchainKHRs )
24990 {
24991 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
24992 }
24993 return uniqueSwapchainKHRs;
24994 }
24995 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
24996 {
24997 SwapchainKHRDeleter deleter( *this, allocator );
24998 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
24999 }
25000#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25002
25003 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25004 {
25005 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25006 }
25007#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25008 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25009 {
25010 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025011 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 -070025012 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25013 }
25014#ifndef VULKAN_HPP_NO_SMART_HANDLE
25015 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25016 {
25017 SwapchainKHRDeleter deleter( *this, allocator );
25018 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25019 }
25020#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25022
25023 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25024 {
25025 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25026 }
25027#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25028 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25029 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025030 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025031 }
25032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25033
25034 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25035 {
25036 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25037 }
25038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25039 template <typename Allocator>
25040 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25041 {
25042 std::vector<Image,Allocator> swapchainImages;
25043 uint32_t swapchainImageCount;
25044 Result result;
25045 do
25046 {
25047 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25048 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25049 {
25050 swapchainImages.resize( swapchainImageCount );
25051 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25052 }
25053 } while ( result == Result::eIncomplete );
25054 assert( swapchainImageCount <= swapchainImages.size() );
25055 swapchainImages.resize( swapchainImageCount );
25056 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25057 }
25058#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25059
25060 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25061 {
25062 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25063 }
25064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25065 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25066 {
25067 uint32_t imageIndex;
25068 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25069 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25070 }
25071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25072
25073 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25074 {
25075 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25076 }
25077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25078 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25079 {
25080 DebugMarkerObjectNameInfoEXT nameInfo;
25081 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25082 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25083 }
25084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25085
25086 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25087 {
25088 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25089 }
25090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25091 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25092 {
25093 DebugMarkerObjectTagInfoEXT tagInfo;
25094 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25095 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25096 }
25097#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25098
25099#ifdef VK_USE_PLATFORM_WIN32_KHR
25100 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25101 {
25102 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25103 }
25104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25105 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25106 {
25107 HANDLE handle;
25108 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25109 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25110 }
25111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25112#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25113
25114 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25115 {
25116 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25117 }
25118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25119 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25120 {
25121 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025122 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 -070025123 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25124 }
25125#ifndef VULKAN_HPP_NO_SMART_HANDLE
25126 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25127 {
25128 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25129 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25130 }
25131#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25133
25134 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25135 {
25136 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25137 }
25138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25139 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25140 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025141 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025142 }
25143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25144
25145 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25146 {
25147 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25148 }
25149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25150 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25151 {
25152 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025153 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 -070025154 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25155 }
25156#ifndef VULKAN_HPP_NO_SMART_HANDLE
25157 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25158 {
25159 ObjectTableNVXDeleter deleter( *this, allocator );
25160 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25161 }
25162#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25164
25165 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25166 {
25167 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25168 }
25169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25170 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25171 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025172 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025173 }
25174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25175
25176 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25177 {
25178 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25179 }
25180#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25181 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25182 {
25183#ifdef VULKAN_HPP_NO_EXCEPTIONS
25184 assert( pObjectTableEntries.size() == objectIndices.size() );
25185#else
25186 if ( pObjectTableEntries.size() != objectIndices.size() )
25187 {
25188 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25189 }
25190#endif // VULKAN_HPP_NO_EXCEPTIONS
25191 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25192 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25193 }
25194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25195
25196 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25197 {
25198 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25199 }
25200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25201 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25202 {
25203#ifdef VULKAN_HPP_NO_EXCEPTIONS
25204 assert( objectEntryTypes.size() == objectIndices.size() );
25205#else
25206 if ( objectEntryTypes.size() != objectIndices.size() )
25207 {
25208 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25209 }
25210#endif // VULKAN_HPP_NO_EXCEPTIONS
25211 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25212 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25213 }
25214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25215
25216 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25217 {
25218 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25219 }
25220
Mark Young0f183a82017-02-28 09:58:04 -070025221#ifdef VK_USE_PLATFORM_WIN32_KHR
25222 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25223 {
25224 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25225 }
25226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25227 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25228 {
25229 HANDLE handle;
25230 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25231 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25232 }
25233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25234#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25235
25236#ifdef VK_USE_PLATFORM_WIN32_KHR
25237 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25238 {
25239 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25240 }
25241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25242 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25243 {
25244 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25245 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25246 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25247 }
25248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25249#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25250
25251 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25252 {
25253 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25254 }
25255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25256 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25257 {
25258 int fd;
25259 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25260 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25261 }
25262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25263
25264 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25265 {
25266 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25267 }
25268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25269 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25270 {
25271 MemoryFdPropertiesKHX memoryFdProperties;
25272 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25273 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25274 }
25275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25276
25277#ifdef VK_USE_PLATFORM_WIN32_KHX
25278 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25279 {
25280 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25281 }
25282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25283 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25284 {
25285 HANDLE handle;
25286 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25287 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25288 }
25289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25290#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25291
25292#ifdef VK_USE_PLATFORM_WIN32_KHX
25293 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25294 {
25295 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25296 }
25297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25298 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25299 {
25300 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25301 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25302 }
25303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25304#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25305
25306 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25307 {
25308 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25309 }
25310#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25311 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25312 {
25313 int fd;
25314 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25315 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25316 }
25317#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25318
25319 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25320 {
25321 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25322 }
25323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25324 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25325 {
25326 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25327 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25328 }
25329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25330
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025331 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25332 {
25333 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25334 }
25335#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25336 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25337 {
25338 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25339 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25340 }
25341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25342
25343 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25344 {
25345 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25346 }
25347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25348 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25349 {
25350 Fence fence;
25351 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25352 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25353 }
25354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25355
25356 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25357 {
25358 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 ) ) );
25359 }
25360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25361 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25362 {
25363 Fence fence;
25364 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 ) ) );
25365 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25366 }
25367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25368
25369 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25370 {
25371 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25372 }
25373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25374 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25375 {
25376 uint64_t counterValue;
25377 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25378 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25379 }
25380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025381
25382 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25383 {
25384 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25385 }
25386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25387 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25388 {
25389 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25390 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25391 return peerMemoryFeatures;
25392 }
25393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25394
25395 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25396 {
25397 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25398 }
25399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25400 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25401 {
25402 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25403 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25404 }
25405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25406
25407 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25408 {
25409 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25410 }
25411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25412 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25413 {
25414 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25415 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25416 }
25417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25418
25419 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25420 {
25421 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25422 }
25423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25424 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25425 {
25426 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25427 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25428 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25429 }
25430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25431
25432 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25433 {
25434 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25435 }
25436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25437 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25438 {
25439 DeviceGroupPresentModeFlagsKHX modes;
25440 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25441 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25442 }
25443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25444
25445 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25446 {
25447 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25448 }
25449#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25450 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25451 {
25452 uint32_t imageIndex;
25453 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25454 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25455 }
25456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25457
25458 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25459 {
25460 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25461 }
25462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25463 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25464 {
25465 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025466 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 -070025467 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25468 }
25469#ifndef VULKAN_HPP_NO_SMART_HANDLE
25470 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25471 {
25472 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25473 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25474 }
25475#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25477
25478 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25479 {
25480 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25481 }
25482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25483 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25484 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025485 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025486 }
25487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25488
25489 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25490 {
25491 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25492 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025493
25494 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25495 {
25496 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25497 }
25498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25499 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25500 {
25501#ifdef VULKAN_HPP_NO_EXCEPTIONS
25502 assert( swapchains.size() == metadata.size() );
25503#else
25504 if ( swapchains.size() != metadata.size() )
25505 {
25506 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25507 }
25508#endif // VULKAN_HPP_NO_EXCEPTIONS
25509 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25510 }
25511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25512
25513 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25514 {
25515 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25516 }
25517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25518 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25519 {
25520 RefreshCycleDurationGOOGLE displayTimingProperties;
25521 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25522 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25523 }
25524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25525
25526 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25527 {
25528 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25529 }
25530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25531 template <typename Allocator>
25532 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25533 {
25534 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25535 uint32_t presentationTimingCount;
25536 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25537 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25538 {
25539 presentationTimings.resize( presentationTimingCount );
25540 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25541 }
25542 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25543 }
25544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25545
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025546#ifndef VULKAN_HPP_NO_SMART_HANDLE
25547 class DeviceDeleter;
25548 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25549#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25550
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025551 class PhysicalDevice
25552 {
25553 public:
25554 PhysicalDevice()
25555 : m_physicalDevice(VK_NULL_HANDLE)
25556 {}
25557
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025558 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025559 : m_physicalDevice(VK_NULL_HANDLE)
25560 {}
25561
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025562 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025563 : m_physicalDevice(physicalDevice)
25564 {}
25565
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025566#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025567 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25568 {
25569 m_physicalDevice = physicalDevice;
25570 return *this;
25571 }
25572#endif
25573
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025574 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025575 {
25576 m_physicalDevice = VK_NULL_HANDLE;
25577 return *this;
25578 }
25579
Lenny Komowebf33162016-08-26 14:10:08 -060025580 bool operator==(PhysicalDevice const &rhs) const
25581 {
25582 return m_physicalDevice == rhs.m_physicalDevice;
25583 }
25584
25585 bool operator!=(PhysicalDevice const &rhs) const
25586 {
25587 return m_physicalDevice != rhs.m_physicalDevice;
25588 }
25589
25590 bool operator<(PhysicalDevice const &rhs) const
25591 {
25592 return m_physicalDevice < rhs.m_physicalDevice;
25593 }
25594
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025595 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025597 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25599
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025600 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025602 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25603 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25605
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025606 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025608 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25610
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025611 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025613 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25615
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025616 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025617#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025618 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025619#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25620
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025621 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025622#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025623 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25625
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025626 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025628 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25629#ifndef VULKAN_HPP_NO_SMART_HANDLE
25630 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25631#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25633
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025634 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025635#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025636 template <typename Allocator = std::allocator<LayerProperties>>
25637 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25639
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025640 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025642 template <typename Allocator = std::allocator<ExtensionProperties>>
25643 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025644#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25645
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025646 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 -060025647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025648 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
25649 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25651
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025652 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025653#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025654 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
25655 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025656#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25657
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025658 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025660 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
25661 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25663
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025664 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025666 template <typename Allocator = std::allocator<DisplayKHR>>
25667 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25669
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025670 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025671#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025672 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
25673 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025674#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25675
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025676 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025677#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025678 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25680
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025681 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025683 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25685
25686#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025687 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
25688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25689 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
25690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025691#endif /*VK_USE_PLATFORM_MIR_KHR*/
25692
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025693 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025695 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25697
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025698 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025700 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25702
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025703 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025705 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
25706 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025707#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25708
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025709 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025711 template <typename Allocator = std::allocator<PresentModeKHR>>
25712 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25714
25715#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025716 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
25717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25718 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
25719#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025720#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
25721
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025722#ifdef VK_USE_PLATFORM_WIN32_KHR
25723 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
25724#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25725
25726#ifdef VK_USE_PLATFORM_XLIB_KHR
25727 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025729 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
25730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25731#endif /*VK_USE_PLATFORM_XLIB_KHR*/
25732
25733#ifdef VK_USE_PLATFORM_XCB_KHR
25734 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
25735#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25736 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
25737#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25738#endif /*VK_USE_PLATFORM_XCB_KHR*/
25739
25740 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
25741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25742 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
25743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25744
25745 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
25746#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25747 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
25748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25749
25750 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
25751#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25752 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
25753#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25754
25755 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
25756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25757 PhysicalDeviceProperties2KHR getProperties2KHR() const;
25758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25759
25760 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
25761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25762 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
25763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25764
25765 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
25766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25767 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
25768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25769
25770 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
25771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25772 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
25773 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
25774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25775
25776 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
25777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25778 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
25779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25780
25781 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
25782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25783 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
25784 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25786
Mark Young0f183a82017-02-28 09:58:04 -070025787 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
25788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25789 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
25790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25791
25792 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
25793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25794 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
25795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25796
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025797#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025798 Result releaseDisplayEXT( DisplayKHR display ) const;
25799#else
25800 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25802
25803#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025804 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025806 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070025808#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
25809
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025810#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
25811 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070025812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025813 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070025814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025815#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070025816
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025817 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070025818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025819 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070025820#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25821
Mark Young0f183a82017-02-28 09:58:04 -070025822 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
25823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25824 template <typename Allocator = std::allocator<Rect2D>>
25825 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
25826#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25827
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025828 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025829 {
25830 return m_physicalDevice;
25831 }
25832
25833 explicit operator bool() const
25834 {
25835 return m_physicalDevice != VK_NULL_HANDLE;
25836 }
25837
25838 bool operator!() const
25839 {
25840 return m_physicalDevice == VK_NULL_HANDLE;
25841 }
25842
25843 private:
25844 VkPhysicalDevice m_physicalDevice;
25845 };
25846 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
25847
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025848#ifndef VULKAN_HPP_NO_SMART_HANDLE
25849 class DeviceDeleter
25850 {
25851 public:
25852 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
25853 : m_allocator( allocator )
25854 {}
25855
25856 void operator()( Device device )
25857 {
25858 device.destroy( m_allocator );
25859 }
25860
25861 private:
25862 Optional<const AllocationCallbacks> m_allocator;
25863 };
25864#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25865
25866 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
25867 {
25868 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
25869 }
25870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25871 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
25872 {
25873 PhysicalDeviceProperties properties;
25874 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
25875 return properties;
25876 }
25877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25878
25879 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
25880 {
25881 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
25882 }
25883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25884 template <typename Allocator>
25885 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
25886 {
25887 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
25888 uint32_t queueFamilyPropertyCount;
25889 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
25890 queueFamilyProperties.resize( queueFamilyPropertyCount );
25891 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
25892 return queueFamilyProperties;
25893 }
25894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25895
25896 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
25897 {
25898 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
25899 }
25900#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25901 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
25902 {
25903 PhysicalDeviceMemoryProperties memoryProperties;
25904 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
25905 return memoryProperties;
25906 }
25907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25908
25909 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
25910 {
25911 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
25912 }
25913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25914 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
25915 {
25916 PhysicalDeviceFeatures features;
25917 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
25918 return features;
25919 }
25920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25921
25922 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
25923 {
25924 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
25925 }
25926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25927 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
25928 {
25929 FormatProperties formatProperties;
25930 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
25931 return formatProperties;
25932 }
25933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25934
25935 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
25936 {
25937 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 ) ) );
25938 }
25939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25940 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
25941 {
25942 ImageFormatProperties imageFormatProperties;
25943 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 ) ) );
25944 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
25945 }
25946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25947
25948 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
25949 {
25950 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
25951 }
25952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25953 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25954 {
25955 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025956 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 -070025957 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
25958 }
25959#ifndef VULKAN_HPP_NO_SMART_HANDLE
25960 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25961 {
25962 DeviceDeleter deleter( allocator );
25963 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
25964 }
25965#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25967
25968 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
25969 {
25970 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25971 }
25972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25973 template <typename Allocator>
25974 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
25975 {
25976 std::vector<LayerProperties,Allocator> properties;
25977 uint32_t propertyCount;
25978 Result result;
25979 do
25980 {
25981 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
25982 if ( ( result == Result::eSuccess ) && propertyCount )
25983 {
25984 properties.resize( propertyCount );
25985 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25986 }
25987 } while ( result == Result::eIncomplete );
25988 assert( propertyCount <= properties.size() );
25989 properties.resize( propertyCount );
25990 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
25991 }
25992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25993
25994 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
25995 {
25996 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25997 }
25998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25999 template <typename Allocator>
26000 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26001 {
26002 std::vector<ExtensionProperties,Allocator> properties;
26003 uint32_t propertyCount;
26004 Result result;
26005 do
26006 {
26007 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26008 if ( ( result == Result::eSuccess ) && propertyCount )
26009 {
26010 properties.resize( propertyCount );
26011 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26012 }
26013 } while ( result == Result::eIncomplete );
26014 assert( propertyCount <= properties.size() );
26015 properties.resize( propertyCount );
26016 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26017 }
26018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26019
26020 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26021 {
26022 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 ) );
26023 }
26024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26025 template <typename Allocator>
26026 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26027 {
26028 std::vector<SparseImageFormatProperties,Allocator> properties;
26029 uint32_t propertyCount;
26030 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 );
26031 properties.resize( propertyCount );
26032 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() ) );
26033 return properties;
26034 }
26035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26036
26037 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26038 {
26039 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26040 }
26041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26042 template <typename Allocator>
26043 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26044 {
26045 std::vector<DisplayPropertiesKHR,Allocator> properties;
26046 uint32_t propertyCount;
26047 Result result;
26048 do
26049 {
26050 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26051 if ( ( result == Result::eSuccess ) && propertyCount )
26052 {
26053 properties.resize( propertyCount );
26054 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26055 }
26056 } while ( result == Result::eIncomplete );
26057 assert( propertyCount <= properties.size() );
26058 properties.resize( propertyCount );
26059 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26060 }
26061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26062
26063 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26064 {
26065 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26066 }
26067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26068 template <typename Allocator>
26069 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26070 {
26071 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26072 uint32_t propertyCount;
26073 Result result;
26074 do
26075 {
26076 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26077 if ( ( result == Result::eSuccess ) && propertyCount )
26078 {
26079 properties.resize( propertyCount );
26080 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26081 }
26082 } while ( result == Result::eIncomplete );
26083 assert( propertyCount <= properties.size() );
26084 properties.resize( propertyCount );
26085 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26086 }
26087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26088
26089 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26090 {
26091 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26092 }
26093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26094 template <typename Allocator>
26095 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26096 {
26097 std::vector<DisplayKHR,Allocator> displays;
26098 uint32_t displayCount;
26099 Result result;
26100 do
26101 {
26102 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26103 if ( ( result == Result::eSuccess ) && displayCount )
26104 {
26105 displays.resize( displayCount );
26106 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26107 }
26108 } while ( result == Result::eIncomplete );
26109 assert( displayCount <= displays.size() );
26110 displays.resize( displayCount );
26111 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26112 }
26113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26114
26115 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26116 {
26117 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26118 }
26119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26120 template <typename Allocator>
26121 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26122 {
26123 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26124 uint32_t propertyCount;
26125 Result result;
26126 do
26127 {
26128 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26129 if ( ( result == Result::eSuccess ) && propertyCount )
26130 {
26131 properties.resize( propertyCount );
26132 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26133 }
26134 } while ( result == Result::eIncomplete );
26135 assert( propertyCount <= properties.size() );
26136 properties.resize( propertyCount );
26137 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26138 }
26139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26140
26141 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26142 {
26143 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 ) ) );
26144 }
26145#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26146 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26147 {
26148 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026149 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 -070026150 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26151 }
26152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26153
26154 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26155 {
26156 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26157 }
26158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26159 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26160 {
26161 DisplayPlaneCapabilitiesKHR capabilities;
26162 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26163 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26164 }
26165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26166
26167#ifdef VK_USE_PLATFORM_MIR_KHR
26168 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26169 {
26170 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26171 }
26172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26173 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26174 {
26175 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26176 }
26177#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26178#endif /*VK_USE_PLATFORM_MIR_KHR*/
26179
26180 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26181 {
26182 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26183 }
26184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26185 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26186 {
26187 Bool32 supported;
26188 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26189 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26190 }
26191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26192
26193 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26194 {
26195 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26196 }
26197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26198 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26199 {
26200 SurfaceCapabilitiesKHR surfaceCapabilities;
26201 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26202 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26203 }
26204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26205
26206 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26207 {
26208 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26209 }
26210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26211 template <typename Allocator>
26212 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26213 {
26214 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26215 uint32_t surfaceFormatCount;
26216 Result result;
26217 do
26218 {
26219 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26220 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26221 {
26222 surfaceFormats.resize( surfaceFormatCount );
26223 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26224 }
26225 } while ( result == Result::eIncomplete );
26226 assert( surfaceFormatCount <= surfaceFormats.size() );
26227 surfaceFormats.resize( surfaceFormatCount );
26228 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26229 }
26230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26231
26232 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26233 {
26234 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26235 }
26236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26237 template <typename Allocator>
26238 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26239 {
26240 std::vector<PresentModeKHR,Allocator> presentModes;
26241 uint32_t presentModeCount;
26242 Result result;
26243 do
26244 {
26245 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26246 if ( ( result == Result::eSuccess ) && presentModeCount )
26247 {
26248 presentModes.resize( presentModeCount );
26249 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26250 }
26251 } while ( result == Result::eIncomplete );
26252 assert( presentModeCount <= presentModes.size() );
26253 presentModes.resize( presentModeCount );
26254 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26255 }
26256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26257
26258#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26259 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26260 {
26261 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26262 }
26263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26264 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26265 {
26266 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26267 }
26268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26269#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26270
26271#ifdef VK_USE_PLATFORM_WIN32_KHR
26272 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26273 {
26274 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26275 }
26276#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26277
26278#ifdef VK_USE_PLATFORM_XLIB_KHR
26279 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26280 {
26281 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26282 }
26283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26284 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26285 {
26286 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26287 }
26288#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26289#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26290
26291#ifdef VK_USE_PLATFORM_XCB_KHR
26292 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26293 {
26294 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26295 }
26296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26297 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26298 {
26299 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26300 }
26301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26302#endif /*VK_USE_PLATFORM_XCB_KHR*/
26303
26304 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26305 {
26306 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 ) ) );
26307 }
26308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26309 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26310 {
26311 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26312 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 ) ) );
26313 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26314 }
26315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26316
26317 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26318 {
26319 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26320 }
26321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26322 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26323 {
26324 DeviceGeneratedCommandsLimitsNVX limits;
26325 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26326 return limits;
26327 }
26328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26329
26330 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26331 {
26332 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26333 }
26334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26335 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26336 {
26337 PhysicalDeviceFeatures2KHR features;
26338 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26339 return features;
26340 }
26341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26342
26343 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26344 {
26345 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26346 }
26347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26348 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26349 {
26350 PhysicalDeviceProperties2KHR properties;
26351 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26352 return properties;
26353 }
26354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26355
26356 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26357 {
26358 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26359 }
26360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26361 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26362 {
26363 FormatProperties2KHR formatProperties;
26364 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26365 return formatProperties;
26366 }
26367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26368
26369 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26370 {
26371 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26372 }
26373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26374 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26375 {
26376 ImageFormatProperties2KHR imageFormatProperties;
26377 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26378 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26379 }
26380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26381
26382 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26383 {
26384 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26385 }
26386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26387 template <typename Allocator>
26388 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26389 {
26390 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26391 uint32_t queueFamilyPropertyCount;
26392 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26393 queueFamilyProperties.resize( queueFamilyPropertyCount );
26394 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26395 return queueFamilyProperties;
26396 }
26397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26398
26399 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26400 {
26401 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26402 }
26403#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26404 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26405 {
26406 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26407 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26408 return memoryProperties;
26409 }
26410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26411
26412 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26413 {
26414 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26415 }
26416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26417 template <typename Allocator>
26418 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26419 {
26420 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26421 uint32_t propertyCount;
26422 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26423 properties.resize( propertyCount );
26424 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26425 return properties;
26426 }
26427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26428
Mark Young0f183a82017-02-28 09:58:04 -070026429 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26430 {
26431 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26432 }
26433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26434 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26435 {
26436 ExternalBufferPropertiesKHX externalBufferProperties;
26437 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26438 return externalBufferProperties;
26439 }
26440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26441
26442 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26443 {
26444 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26445 }
26446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26447 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26448 {
26449 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26450 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26451 return externalSemaphoreProperties;
26452 }
26453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26454
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026455#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26456 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26457 {
26458 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26459 }
26460#else
26461 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26462 {
26463 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26464 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26465 }
26466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26467
26468#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26469 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26470 {
26471 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26472 }
26473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26474 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26475 {
26476 Display dpy;
26477 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26478 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26479 }
26480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26481#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26482
26483#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26484 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26485 {
26486 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26487 }
26488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26489 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26490 {
26491 DisplayKHR display;
26492 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26493 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26494 }
26495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26496#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26497
26498 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26499 {
26500 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26501 }
26502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26503 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26504 {
26505 SurfaceCapabilities2EXT surfaceCapabilities;
26506 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26507 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26508 }
26509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026510
26511 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26512 {
26513 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26514 }
26515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26516 template <typename Allocator>
26517 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26518 {
26519 std::vector<Rect2D,Allocator> rects;
26520 uint32_t rectCount;
26521 Result result;
26522 do
26523 {
26524 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26525 if ( ( result == Result::eSuccess ) && rectCount )
26526 {
26527 rects.resize( rectCount );
26528 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26529 }
26530 } while ( result == Result::eIncomplete );
26531 assert( rectCount <= rects.size() );
26532 rects.resize( rectCount );
26533 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26534 }
26535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026536
Mark Young0f183a82017-02-28 09:58:04 -070026537 struct CmdProcessCommandsInfoNVX
26538 {
26539 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 )
26540 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26541 , pNext( nullptr )
26542 , objectTable( objectTable_ )
26543 , indirectCommandsLayout( indirectCommandsLayout_ )
26544 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26545 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26546 , maxSequencesCount( maxSequencesCount_ )
26547 , targetCommandBuffer( targetCommandBuffer_ )
26548 , sequencesCountBuffer( sequencesCountBuffer_ )
26549 , sequencesCountOffset( sequencesCountOffset_ )
26550 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26551 , sequencesIndexOffset( sequencesIndexOffset_ )
26552 {
26553 }
26554
26555 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26556 {
26557 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26558 }
26559
26560 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26561 {
26562 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26563 return *this;
26564 }
26565
26566 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26567 {
26568 pNext = pNext_;
26569 return *this;
26570 }
26571
26572 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26573 {
26574 objectTable = objectTable_;
26575 return *this;
26576 }
26577
26578 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26579 {
26580 indirectCommandsLayout = indirectCommandsLayout_;
26581 return *this;
26582 }
26583
26584 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26585 {
26586 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26587 return *this;
26588 }
26589
26590 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
26591 {
26592 pIndirectCommandsTokens = pIndirectCommandsTokens_;
26593 return *this;
26594 }
26595
26596 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
26597 {
26598 maxSequencesCount = maxSequencesCount_;
26599 return *this;
26600 }
26601
26602 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
26603 {
26604 targetCommandBuffer = targetCommandBuffer_;
26605 return *this;
26606 }
26607
26608 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
26609 {
26610 sequencesCountBuffer = sequencesCountBuffer_;
26611 return *this;
26612 }
26613
26614 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
26615 {
26616 sequencesCountOffset = sequencesCountOffset_;
26617 return *this;
26618 }
26619
26620 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
26621 {
26622 sequencesIndexBuffer = sequencesIndexBuffer_;
26623 return *this;
26624 }
26625
26626 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
26627 {
26628 sequencesIndexOffset = sequencesIndexOffset_;
26629 return *this;
26630 }
26631
26632 operator const VkCmdProcessCommandsInfoNVX&() const
26633 {
26634 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
26635 }
26636
26637 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
26638 {
26639 return ( sType == rhs.sType )
26640 && ( pNext == rhs.pNext )
26641 && ( objectTable == rhs.objectTable )
26642 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
26643 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
26644 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
26645 && ( maxSequencesCount == rhs.maxSequencesCount )
26646 && ( targetCommandBuffer == rhs.targetCommandBuffer )
26647 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
26648 && ( sequencesCountOffset == rhs.sequencesCountOffset )
26649 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
26650 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
26651 }
26652
26653 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
26654 {
26655 return !operator==( rhs );
26656 }
26657
26658 private:
26659 StructureType sType;
26660
26661 public:
26662 const void* pNext;
26663 ObjectTableNVX objectTable;
26664 IndirectCommandsLayoutNVX indirectCommandsLayout;
26665 uint32_t indirectCommandsTokenCount;
26666 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
26667 uint32_t maxSequencesCount;
26668 CommandBuffer targetCommandBuffer;
26669 Buffer sequencesCountBuffer;
26670 DeviceSize sequencesCountOffset;
26671 Buffer sequencesIndexBuffer;
26672 DeviceSize sequencesIndexOffset;
26673 };
26674 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
26675
26676 struct PhysicalDeviceGroupPropertiesKHX
26677 {
26678 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
26679 {
26680 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
26681 }
26682
26683 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26684 {
26685 return ( sType == rhs.sType )
26686 && ( pNext == rhs.pNext )
26687 && ( physicalDeviceCount == rhs.physicalDeviceCount )
26688 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
26689 && ( subsetAllocation == rhs.subsetAllocation );
26690 }
26691
26692 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26693 {
26694 return !operator==( rhs );
26695 }
26696
26697 private:
26698 StructureType sType;
26699
26700 public:
26701 const void* pNext;
26702 uint32_t physicalDeviceCount;
26703 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
26704 Bool32 subsetAllocation;
26705 };
26706 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
26707
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026708#ifndef VULKAN_HPP_NO_SMART_HANDLE
26709 class DebugReportCallbackEXTDeleter;
26710 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
26711 class SurfaceKHRDeleter;
26712 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
26713#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26714
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026715 class Instance
26716 {
26717 public:
26718 Instance()
26719 : m_instance(VK_NULL_HANDLE)
26720 {}
26721
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026722 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026723 : m_instance(VK_NULL_HANDLE)
26724 {}
26725
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026726 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026727 : m_instance(instance)
26728 {}
26729
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026730#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026731 Instance& operator=(VkInstance instance)
26732 {
26733 m_instance = instance;
26734 return *this;
26735 }
26736#endif
26737
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026738 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026739 {
26740 m_instance = VK_NULL_HANDLE;
26741 return *this;
26742 }
26743
Lenny Komowebf33162016-08-26 14:10:08 -060026744 bool operator==(Instance const &rhs) const
26745 {
26746 return m_instance == rhs.m_instance;
26747 }
26748
26749 bool operator!=(Instance const &rhs) const
26750 {
26751 return m_instance != rhs.m_instance;
26752 }
26753
26754 bool operator<(Instance const &rhs) const
26755 {
26756 return m_instance < rhs.m_instance;
26757 }
26758
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026759 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026761 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26763
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026764 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026766 template <typename Allocator = std::allocator<PhysicalDevice>>
26767 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26769
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026770 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026772 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26774
26775#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026776 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026778 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26779#ifndef VULKAN_HPP_NO_SMART_HANDLE
26780 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26781#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026783#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026784
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026785 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026787 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26788#ifndef VULKAN_HPP_NO_SMART_HANDLE
26789 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26790#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26792
26793#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026794 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026796 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26797#ifndef VULKAN_HPP_NO_SMART_HANDLE
26798 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26799#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026800#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026801#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026802
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026803 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026805 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26807
Mark Young39389872017-01-19 21:10:49 -070026808#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026809 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26811 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26812#ifndef VULKAN_HPP_NO_SMART_HANDLE
26813 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26814#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26815#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026816#endif /*VK_USE_PLATFORM_VI_NN*/
26817
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026818#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026819 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26821 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26822#ifndef VULKAN_HPP_NO_SMART_HANDLE
26823 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26824#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026826#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26827
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026828#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026829 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26831 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26832#ifndef VULKAN_HPP_NO_SMART_HANDLE
26833 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26834#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026836#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26837
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026838#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026839 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26841 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26842#ifndef VULKAN_HPP_NO_SMART_HANDLE
26843 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26844#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026846#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26847
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026848#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026849 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26850#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26851 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26852#ifndef VULKAN_HPP_NO_SMART_HANDLE
26853 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26854#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026856#endif /*VK_USE_PLATFORM_XCB_KHR*/
26857
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026858 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026860 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26861#ifndef VULKAN_HPP_NO_SMART_HANDLE
26862 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26863#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026864#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26865
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026866 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026868 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26870
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026871 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 -060026872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026873 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 -060026874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26875
Mark Young0f183a82017-02-28 09:58:04 -070026876 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
26877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26878 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
26879 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
26880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26881
26882#ifdef VK_USE_PLATFORM_IOS_MVK
26883 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26884#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26885 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26886#ifndef VULKAN_HPP_NO_SMART_HANDLE
26887 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26888#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26889#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26890#endif /*VK_USE_PLATFORM_IOS_MVK*/
26891
26892#ifdef VK_USE_PLATFORM_MACOS_MVK
26893 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
26894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26895 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26896#ifndef VULKAN_HPP_NO_SMART_HANDLE
26897 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26898#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26900#endif /*VK_USE_PLATFORM_MACOS_MVK*/
26901
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026902 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026903 {
26904 return m_instance;
26905 }
26906
26907 explicit operator bool() const
26908 {
26909 return m_instance != VK_NULL_HANDLE;
26910 }
26911
26912 bool operator!() const
26913 {
26914 return m_instance == VK_NULL_HANDLE;
26915 }
26916
26917 private:
26918 VkInstance m_instance;
26919 };
26920 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
26921
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026922#ifndef VULKAN_HPP_NO_SMART_HANDLE
26923 class DebugReportCallbackEXTDeleter
26924 {
26925 public:
26926 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26927 : m_instance( instance )
26928 , m_allocator( allocator )
26929 {}
26930
26931 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
26932 {
26933 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
26934 }
26935
26936 private:
26937 Instance m_instance;
26938 Optional<const AllocationCallbacks> m_allocator;
26939 };
26940
26941 class SurfaceKHRDeleter
26942 {
26943 public:
26944 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
26945 : m_instance( instance )
26946 , m_allocator( allocator )
26947 {}
26948
26949 void operator()( SurfaceKHR surfaceKHR )
26950 {
26951 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
26952 }
26953
26954 private:
26955 Instance m_instance;
26956 Optional<const AllocationCallbacks> m_allocator;
26957 };
26958#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26959
26960 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
26961 {
26962 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
26963 }
26964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26965 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
26966 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026967 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026968 }
26969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26970
26971 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
26972 {
26973 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
26974 }
26975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26976 template <typename Allocator>
26977 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
26978 {
26979 std::vector<PhysicalDevice,Allocator> physicalDevices;
26980 uint32_t physicalDeviceCount;
26981 Result result;
26982 do
26983 {
26984 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
26985 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
26986 {
26987 physicalDevices.resize( physicalDeviceCount );
26988 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
26989 }
26990 } while ( result == Result::eIncomplete );
26991 assert( physicalDeviceCount <= physicalDevices.size() );
26992 physicalDevices.resize( physicalDeviceCount );
26993 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
26994 }
26995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26996
26997 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
26998 {
26999 return vkGetInstanceProcAddr( m_instance, pName );
27000 }
27001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27002 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27003 {
27004 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27005 }
27006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27007
27008#ifdef VK_USE_PLATFORM_ANDROID_KHR
27009 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27010 {
27011 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27012 }
27013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27014 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27015 {
27016 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027017 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 -070027018 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27019 }
27020#ifndef VULKAN_HPP_NO_SMART_HANDLE
27021 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27022 {
27023 SurfaceKHRDeleter deleter( *this, allocator );
27024 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27025 }
27026#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27028#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27029
27030 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27031 {
27032 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27033 }
27034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27035 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27036 {
27037 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027038 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 -070027039 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27040 }
27041#ifndef VULKAN_HPP_NO_SMART_HANDLE
27042 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27043 {
27044 SurfaceKHRDeleter deleter( *this, allocator );
27045 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27046 }
27047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27049
27050#ifdef VK_USE_PLATFORM_MIR_KHR
27051 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27052 {
27053 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27054 }
27055#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27056 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27057 {
27058 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027059 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 -070027060 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27061 }
27062#ifndef VULKAN_HPP_NO_SMART_HANDLE
27063 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27064 {
27065 SurfaceKHRDeleter deleter( *this, allocator );
27066 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27067 }
27068#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27070#endif /*VK_USE_PLATFORM_MIR_KHR*/
27071
27072 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27073 {
27074 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27075 }
27076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27077 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27078 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027079 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027080 }
27081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27082
27083#ifdef VK_USE_PLATFORM_VI_NN
27084 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27085 {
27086 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27087 }
27088#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27089 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27090 {
27091 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027092 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 -070027093 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27094 }
27095#ifndef VULKAN_HPP_NO_SMART_HANDLE
27096 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27097 {
27098 SurfaceKHRDeleter deleter( *this, allocator );
27099 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27100 }
27101#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27103#endif /*VK_USE_PLATFORM_VI_NN*/
27104
27105#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27106 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27107 {
27108 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27109 }
27110#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27111 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27112 {
27113 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027114 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 -070027115 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27116 }
27117#ifndef VULKAN_HPP_NO_SMART_HANDLE
27118 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27119 {
27120 SurfaceKHRDeleter deleter( *this, allocator );
27121 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27122 }
27123#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27125#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27126
27127#ifdef VK_USE_PLATFORM_WIN32_KHR
27128 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27129 {
27130 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27131 }
27132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27133 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27134 {
27135 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027136 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 -070027137 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27138 }
27139#ifndef VULKAN_HPP_NO_SMART_HANDLE
27140 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27141 {
27142 SurfaceKHRDeleter deleter( *this, allocator );
27143 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27144 }
27145#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27147#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27148
27149#ifdef VK_USE_PLATFORM_XLIB_KHR
27150 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27151 {
27152 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27153 }
27154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27155 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27156 {
27157 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027158 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 -070027159 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27160 }
27161#ifndef VULKAN_HPP_NO_SMART_HANDLE
27162 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27163 {
27164 SurfaceKHRDeleter deleter( *this, allocator );
27165 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27166 }
27167#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
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 Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27173 {
27174 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27175 }
27176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27177 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27178 {
27179 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027180 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 -070027181 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27182 }
27183#ifndef VULKAN_HPP_NO_SMART_HANDLE
27184 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27185 {
27186 SurfaceKHRDeleter deleter( *this, allocator );
27187 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27188 }
27189#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27191#endif /*VK_USE_PLATFORM_XCB_KHR*/
27192
27193 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27194 {
27195 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27196 }
27197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27198 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27199 {
27200 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027201 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 -070027202 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27203 }
27204#ifndef VULKAN_HPP_NO_SMART_HANDLE
27205 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27206 {
27207 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27208 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27209 }
27210#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27212
27213 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27214 {
27215 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27216 }
27217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27218 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27219 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027220 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027221 }
27222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27223
27224 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
27225 {
27226 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27227 }
27228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27229 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
27230 {
27231#ifdef VULKAN_HPP_NO_EXCEPTIONS
27232 assert( layerPrefix.size() == message.size() );
27233#else
27234 if ( layerPrefix.size() != message.size() )
27235 {
27236 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27237 }
27238#endif // VULKAN_HPP_NO_EXCEPTIONS
27239 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27240 }
27241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027242
27243 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027244 {
Mark Young0f183a82017-02-28 09:58:04 -070027245 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27246 }
27247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27248 template <typename Allocator>
27249 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27250 {
27251 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27252 uint32_t physicalDeviceGroupCount;
27253 Result result;
27254 do
27255 {
27256 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27257 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27258 {
27259 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27260 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27261 }
27262 } while ( result == Result::eIncomplete );
27263 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27264 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27265 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27266 }
27267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27268
27269#ifdef VK_USE_PLATFORM_IOS_MVK
27270 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27271 {
27272 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27273 }
27274#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27275 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27276 {
27277 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027278 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 -070027279 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27280 }
27281#ifndef VULKAN_HPP_NO_SMART_HANDLE
27282 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27283 {
27284 SurfaceKHRDeleter deleter( *this, allocator );
27285 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27286 }
27287#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27288#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27289#endif /*VK_USE_PLATFORM_IOS_MVK*/
27290
27291#ifdef VK_USE_PLATFORM_MACOS_MVK
27292 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27293 {
27294 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27295 }
27296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27297 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27298 {
27299 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027300 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 -070027301 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27302 }
27303#ifndef VULKAN_HPP_NO_SMART_HANDLE
27304 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27305 {
27306 SurfaceKHRDeleter deleter( *this, allocator );
27307 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27308 }
27309#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27311#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027312
Mark Young0f183a82017-02-28 09:58:04 -070027313 struct DeviceGroupDeviceCreateInfoKHX
27314 {
27315 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27316 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027317 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027318 , physicalDeviceCount( physicalDeviceCount_ )
27319 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027320 {
27321 }
27322
Mark Young0f183a82017-02-28 09:58:04 -070027323 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027324 {
Mark Young0f183a82017-02-28 09:58:04 -070027325 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027326 }
27327
Mark Young0f183a82017-02-28 09:58:04 -070027328 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027329 {
Mark Young0f183a82017-02-28 09:58:04 -070027330 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027331 return *this;
27332 }
27333
Mark Young0f183a82017-02-28 09:58:04 -070027334 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027335 {
27336 pNext = pNext_;
27337 return *this;
27338 }
27339
Mark Young0f183a82017-02-28 09:58:04 -070027340 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027341 {
Mark Young0f183a82017-02-28 09:58:04 -070027342 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027343 return *this;
27344 }
27345
Mark Young0f183a82017-02-28 09:58:04 -070027346 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027347 {
Mark Young0f183a82017-02-28 09:58:04 -070027348 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027349 return *this;
27350 }
27351
Mark Young0f183a82017-02-28 09:58:04 -070027352 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027353 {
Mark Young0f183a82017-02-28 09:58:04 -070027354 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027355 }
27356
Mark Young0f183a82017-02-28 09:58:04 -070027357 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027358 {
27359 return ( sType == rhs.sType )
27360 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027361 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27362 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027363 }
27364
Mark Young0f183a82017-02-28 09:58:04 -070027365 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027366 {
27367 return !operator==( rhs );
27368 }
27369
27370 private:
27371 StructureType sType;
27372
27373 public:
27374 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027375 uint32_t physicalDeviceCount;
27376 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027377 };
Mark Young0f183a82017-02-28 09:58:04 -070027378 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027379
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027380#ifndef VULKAN_HPP_NO_SMART_HANDLE
27381 class InstanceDeleter;
27382 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27383#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27384
27385 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27387 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27388#ifndef VULKAN_HPP_NO_SMART_HANDLE
27389 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27390#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27392
27393#ifndef VULKAN_HPP_NO_SMART_HANDLE
27394 class InstanceDeleter
27395 {
27396 public:
27397 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27398 : m_allocator( allocator )
27399 {}
27400
27401 void operator()( Instance instance )
27402 {
27403 instance.destroy( m_allocator );
27404 }
27405
27406 private:
27407 Optional<const AllocationCallbacks> m_allocator;
27408 };
27409#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27410
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027411 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027412 {
27413 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27414 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027416 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027417 {
27418 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027419 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 -060027420 return createResultValue( result, instance, "vk::createInstance" );
27421 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027422#ifndef VULKAN_HPP_NO_SMART_HANDLE
27423 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27424 {
27425 InstanceDeleter deleter( allocator );
27426 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27427 }
27428#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27430
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027431
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027432 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027433 {
27434 return "(void)";
27435 }
27436
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027437 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027438 {
27439 return "{}";
27440 }
27441
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027442 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027443 {
27444 return "(void)";
27445 }
27446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027447 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027448 {
27449 return "{}";
27450 }
27451
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027452 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027453 {
27454 return "(void)";
27455 }
27456
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027457 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027458 {
27459 return "{}";
27460 }
27461
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027462 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027463 {
27464 return "(void)";
27465 }
27466
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027467 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027468 {
27469 return "{}";
27470 }
27471
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027472 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027473 {
27474 return "(void)";
27475 }
27476
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027477 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027478 {
27479 return "{}";
27480 }
27481
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027482 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027483 {
27484 return "(void)";
27485 }
27486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027487 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027488 {
27489 return "{}";
27490 }
27491
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027492 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027493 {
27494 return "(void)";
27495 }
27496
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027497 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027498 {
27499 return "{}";
27500 }
27501
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027502 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027503 {
27504 return "(void)";
27505 }
27506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027507 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027508 {
27509 return "{}";
27510 }
27511
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027512 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027513 {
27514 return "(void)";
27515 }
27516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027517 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027518 {
27519 return "{}";
27520 }
27521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027522 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027523 {
27524 return "(void)";
27525 }
27526
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027527 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027528 {
27529 return "{}";
27530 }
27531
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027532 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027533 {
27534 return "(void)";
27535 }
27536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027537 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027538 {
27539 return "{}";
27540 }
27541
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027542 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027543 {
27544 return "(void)";
27545 }
27546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027547 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027548 {
27549 return "{}";
27550 }
27551
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027552 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027553 {
27554 return "(void)";
27555 }
27556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027557 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027558 {
27559 return "{}";
27560 }
27561
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027562 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027563 {
27564 return "(void)";
27565 }
27566
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027567 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027568 {
27569 return "{}";
27570 }
27571
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027572 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027573 {
27574 return "(void)";
27575 }
27576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027577 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027578 {
27579 return "{}";
27580 }
27581
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027582 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027583 {
27584 return "(void)";
27585 }
27586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027587 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027588 {
27589 return "{}";
27590 }
27591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027592 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027593 {
27594 return "(void)";
27595 }
27596
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027597 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027598 {
27599 return "{}";
27600 }
27601
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027602 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027603 {
27604 return "(void)";
27605 }
27606
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027607 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027608 {
27609 return "{}";
27610 }
27611
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027612 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027613 {
27614 return "(void)";
27615 }
27616
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027617 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027618 {
27619 return "{}";
27620 }
27621
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027622 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027623 {
27624 return "(void)";
27625 }
27626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027627 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027628 {
27629 return "{}";
27630 }
27631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027632 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027633 {
27634 return "(void)";
27635 }
27636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027637 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027638 {
27639 return "{}";
27640 }
27641
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027642 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027643 {
27644 return "(void)";
27645 }
27646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027647 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027648 {
27649 return "{}";
27650 }
27651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027652 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027653 {
27654 return "(void)";
27655 }
27656
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027657 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027658 {
27659 return "{}";
27660 }
27661
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027662 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027663 {
27664 return "(void)";
27665 }
27666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027667 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027668 {
27669 return "{}";
27670 }
27671
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027672 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027673 {
27674 return "(void)";
27675 }
27676
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027677 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027678 {
27679 return "{}";
27680 }
27681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027682 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027683 {
27684 return "(void)";
27685 }
27686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027687 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027688 {
27689 return "{}";
27690 }
27691
Mark Young0f183a82017-02-28 09:58:04 -070027692 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027693 {
27694 return "(void)";
27695 }
27696
Mark Young0f183a82017-02-28 09:58:04 -070027697 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027698 {
27699 return "{}";
27700 }
27701
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027702 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027703 {
27704 return "(void)";
27705 }
27706
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027707 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027708 {
27709 return "{}";
27710 }
27711
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027712 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027713 {
27714 return "(void)";
27715 }
27716
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027717 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027718 {
27719 return "{}";
27720 }
27721
27722#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027723 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027724 {
27725 return "(void)";
27726 }
27727#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27728
27729#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027730 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027731 {
27732 return "{}";
27733 }
27734#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27735
27736#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027737 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027738 {
27739 return "(void)";
27740 }
27741#endif /*VK_USE_PLATFORM_MIR_KHR*/
27742
27743#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027744 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027745 {
27746 return "{}";
27747 }
27748#endif /*VK_USE_PLATFORM_MIR_KHR*/
27749
Mark Young39389872017-01-19 21:10:49 -070027750#ifdef VK_USE_PLATFORM_VI_NN
27751 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
27752 {
27753 return "(void)";
27754 }
27755#endif /*VK_USE_PLATFORM_VI_NN*/
27756
27757#ifdef VK_USE_PLATFORM_VI_NN
27758 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
27759 {
27760 return "{}";
27761 }
27762#endif /*VK_USE_PLATFORM_VI_NN*/
27763
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027764#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027765 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027766 {
27767 return "(void)";
27768 }
27769#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27770
27771#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027772 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027773 {
27774 return "{}";
27775 }
27776#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27777
27778#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027779 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027780 {
27781 return "(void)";
27782 }
27783#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27784
27785#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027786 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027787 {
27788 return "{}";
27789 }
27790#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27791
27792#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027793 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027794 {
27795 return "(void)";
27796 }
27797#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27798
27799#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027800 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027801 {
27802 return "{}";
27803 }
27804#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27805
27806#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027807 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027808 {
27809 return "(void)";
27810 }
27811#endif /*VK_USE_PLATFORM_XCB_KHR*/
27812
27813#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027814 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027815 {
27816 return "{}";
27817 }
27818#endif /*VK_USE_PLATFORM_XCB_KHR*/
27819
Mark Young0f183a82017-02-28 09:58:04 -070027820#ifdef VK_USE_PLATFORM_IOS_MVK
27821 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
27822 {
27823 return "(void)";
27824 }
27825#endif /*VK_USE_PLATFORM_IOS_MVK*/
27826
27827#ifdef VK_USE_PLATFORM_IOS_MVK
27828 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
27829 {
27830 return "{}";
27831 }
27832#endif /*VK_USE_PLATFORM_IOS_MVK*/
27833
27834#ifdef VK_USE_PLATFORM_MACOS_MVK
27835 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
27836 {
27837 return "(void)";
27838 }
27839#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27840
27841#ifdef VK_USE_PLATFORM_MACOS_MVK
27842 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
27843 {
27844 return "{}";
27845 }
27846#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27847
Mark Young39389872017-01-19 21:10:49 -070027848 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
27849 {
27850 return "(void)";
27851 }
27852
27853 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
27854 {
27855 return "{}";
27856 }
27857
Mark Young0f183a82017-02-28 09:58:04 -070027858 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
27859 {
27860 return "(void)";
27861 }
27862
27863 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
27864 {
27865 return "{}";
27866 }
27867
27868 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
27869 {
27870 return "(void)";
27871 }
27872
27873 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
27874 {
27875 return "{}";
27876 }
27877
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027878 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027879 {
27880 switch (value)
27881 {
27882 case ImageLayout::eUndefined: return "Undefined";
27883 case ImageLayout::eGeneral: return "General";
27884 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
27885 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
27886 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
27887 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
27888 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
27889 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
27890 case ImageLayout::ePreinitialized: return "Preinitialized";
27891 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
27892 default: return "invalid";
27893 }
27894 }
27895
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027896 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027897 {
27898 switch (value)
27899 {
27900 case AttachmentLoadOp::eLoad: return "Load";
27901 case AttachmentLoadOp::eClear: return "Clear";
27902 case AttachmentLoadOp::eDontCare: return "DontCare";
27903 default: return "invalid";
27904 }
27905 }
27906
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027907 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027908 {
27909 switch (value)
27910 {
27911 case AttachmentStoreOp::eStore: return "Store";
27912 case AttachmentStoreOp::eDontCare: return "DontCare";
27913 default: return "invalid";
27914 }
27915 }
27916
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027917 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027918 {
27919 switch (value)
27920 {
27921 case ImageType::e1D: return "1D";
27922 case ImageType::e2D: return "2D";
27923 case ImageType::e3D: return "3D";
27924 default: return "invalid";
27925 }
27926 }
27927
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027928 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027929 {
27930 switch (value)
27931 {
27932 case ImageTiling::eOptimal: return "Optimal";
27933 case ImageTiling::eLinear: return "Linear";
27934 default: return "invalid";
27935 }
27936 }
27937
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027938 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027939 {
27940 switch (value)
27941 {
27942 case ImageViewType::e1D: return "1D";
27943 case ImageViewType::e2D: return "2D";
27944 case ImageViewType::e3D: return "3D";
27945 case ImageViewType::eCube: return "Cube";
27946 case ImageViewType::e1DArray: return "1DArray";
27947 case ImageViewType::e2DArray: return "2DArray";
27948 case ImageViewType::eCubeArray: return "CubeArray";
27949 default: return "invalid";
27950 }
27951 }
27952
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027953 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027954 {
27955 switch (value)
27956 {
27957 case CommandBufferLevel::ePrimary: return "Primary";
27958 case CommandBufferLevel::eSecondary: return "Secondary";
27959 default: return "invalid";
27960 }
27961 }
27962
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027963 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027964 {
27965 switch (value)
27966 {
27967 case ComponentSwizzle::eIdentity: return "Identity";
27968 case ComponentSwizzle::eZero: return "Zero";
27969 case ComponentSwizzle::eOne: return "One";
27970 case ComponentSwizzle::eR: return "R";
27971 case ComponentSwizzle::eG: return "G";
27972 case ComponentSwizzle::eB: return "B";
27973 case ComponentSwizzle::eA: return "A";
27974 default: return "invalid";
27975 }
27976 }
27977
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027978 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027979 {
27980 switch (value)
27981 {
27982 case DescriptorType::eSampler: return "Sampler";
27983 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
27984 case DescriptorType::eSampledImage: return "SampledImage";
27985 case DescriptorType::eStorageImage: return "StorageImage";
27986 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
27987 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
27988 case DescriptorType::eUniformBuffer: return "UniformBuffer";
27989 case DescriptorType::eStorageBuffer: return "StorageBuffer";
27990 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
27991 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
27992 case DescriptorType::eInputAttachment: return "InputAttachment";
27993 default: return "invalid";
27994 }
27995 }
27996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027997 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027998 {
27999 switch (value)
28000 {
28001 case QueryType::eOcclusion: return "Occlusion";
28002 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28003 case QueryType::eTimestamp: return "Timestamp";
28004 default: return "invalid";
28005 }
28006 }
28007
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028008 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028009 {
28010 switch (value)
28011 {
28012 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28013 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28014 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28015 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28016 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28017 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28018 default: return "invalid";
28019 }
28020 }
28021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028022 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028023 {
28024 switch (value)
28025 {
28026 case PipelineBindPoint::eGraphics: return "Graphics";
28027 case PipelineBindPoint::eCompute: return "Compute";
28028 default: return "invalid";
28029 }
28030 }
28031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028032 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028033 {
28034 switch (value)
28035 {
28036 case PipelineCacheHeaderVersion::eOne: return "One";
28037 default: return "invalid";
28038 }
28039 }
28040
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028041 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028042 {
28043 switch (value)
28044 {
28045 case PrimitiveTopology::ePointList: return "PointList";
28046 case PrimitiveTopology::eLineList: return "LineList";
28047 case PrimitiveTopology::eLineStrip: return "LineStrip";
28048 case PrimitiveTopology::eTriangleList: return "TriangleList";
28049 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28050 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28051 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28052 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28053 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28054 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28055 case PrimitiveTopology::ePatchList: return "PatchList";
28056 default: return "invalid";
28057 }
28058 }
28059
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028060 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028061 {
28062 switch (value)
28063 {
28064 case SharingMode::eExclusive: return "Exclusive";
28065 case SharingMode::eConcurrent: return "Concurrent";
28066 default: return "invalid";
28067 }
28068 }
28069
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028070 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028071 {
28072 switch (value)
28073 {
28074 case IndexType::eUint16: return "Uint16";
28075 case IndexType::eUint32: return "Uint32";
28076 default: return "invalid";
28077 }
28078 }
28079
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028080 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028081 {
28082 switch (value)
28083 {
28084 case Filter::eNearest: return "Nearest";
28085 case Filter::eLinear: return "Linear";
28086 case Filter::eCubicIMG: return "CubicIMG";
28087 default: return "invalid";
28088 }
28089 }
28090
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028091 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028092 {
28093 switch (value)
28094 {
28095 case SamplerMipmapMode::eNearest: return "Nearest";
28096 case SamplerMipmapMode::eLinear: return "Linear";
28097 default: return "invalid";
28098 }
28099 }
28100
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028101 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028102 {
28103 switch (value)
28104 {
28105 case SamplerAddressMode::eRepeat: return "Repeat";
28106 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28107 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28108 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28109 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28110 default: return "invalid";
28111 }
28112 }
28113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028114 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028115 {
28116 switch (value)
28117 {
28118 case CompareOp::eNever: return "Never";
28119 case CompareOp::eLess: return "Less";
28120 case CompareOp::eEqual: return "Equal";
28121 case CompareOp::eLessOrEqual: return "LessOrEqual";
28122 case CompareOp::eGreater: return "Greater";
28123 case CompareOp::eNotEqual: return "NotEqual";
28124 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28125 case CompareOp::eAlways: return "Always";
28126 default: return "invalid";
28127 }
28128 }
28129
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028130 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028131 {
28132 switch (value)
28133 {
28134 case PolygonMode::eFill: return "Fill";
28135 case PolygonMode::eLine: return "Line";
28136 case PolygonMode::ePoint: return "Point";
28137 default: return "invalid";
28138 }
28139 }
28140
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028141 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028142 {
28143 switch (value)
28144 {
28145 case CullModeFlagBits::eNone: return "None";
28146 case CullModeFlagBits::eFront: return "Front";
28147 case CullModeFlagBits::eBack: return "Back";
28148 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28149 default: return "invalid";
28150 }
28151 }
28152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028153 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028154 {
28155 if (!value) return "{}";
28156 std::string result;
28157 if (value & CullModeFlagBits::eNone) result += "None | ";
28158 if (value & CullModeFlagBits::eFront) result += "Front | ";
28159 if (value & CullModeFlagBits::eBack) result += "Back | ";
28160 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28161 return "{" + result.substr(0, result.size() - 3) + "}";
28162 }
28163
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028164 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028165 {
28166 switch (value)
28167 {
28168 case FrontFace::eCounterClockwise: return "CounterClockwise";
28169 case FrontFace::eClockwise: return "Clockwise";
28170 default: return "invalid";
28171 }
28172 }
28173
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028174 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028175 {
28176 switch (value)
28177 {
28178 case BlendFactor::eZero: return "Zero";
28179 case BlendFactor::eOne: return "One";
28180 case BlendFactor::eSrcColor: return "SrcColor";
28181 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28182 case BlendFactor::eDstColor: return "DstColor";
28183 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28184 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28185 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28186 case BlendFactor::eDstAlpha: return "DstAlpha";
28187 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28188 case BlendFactor::eConstantColor: return "ConstantColor";
28189 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28190 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28191 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28192 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28193 case BlendFactor::eSrc1Color: return "Src1Color";
28194 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28195 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28196 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28197 default: return "invalid";
28198 }
28199 }
28200
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028201 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028202 {
28203 switch (value)
28204 {
28205 case BlendOp::eAdd: return "Add";
28206 case BlendOp::eSubtract: return "Subtract";
28207 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28208 case BlendOp::eMin: return "Min";
28209 case BlendOp::eMax: return "Max";
28210 default: return "invalid";
28211 }
28212 }
28213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028214 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028215 {
28216 switch (value)
28217 {
28218 case StencilOp::eKeep: return "Keep";
28219 case StencilOp::eZero: return "Zero";
28220 case StencilOp::eReplace: return "Replace";
28221 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28222 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28223 case StencilOp::eInvert: return "Invert";
28224 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28225 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28226 default: return "invalid";
28227 }
28228 }
28229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028230 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028231 {
28232 switch (value)
28233 {
28234 case LogicOp::eClear: return "Clear";
28235 case LogicOp::eAnd: return "And";
28236 case LogicOp::eAndReverse: return "AndReverse";
28237 case LogicOp::eCopy: return "Copy";
28238 case LogicOp::eAndInverted: return "AndInverted";
28239 case LogicOp::eNoOp: return "NoOp";
28240 case LogicOp::eXor: return "Xor";
28241 case LogicOp::eOr: return "Or";
28242 case LogicOp::eNor: return "Nor";
28243 case LogicOp::eEquivalent: return "Equivalent";
28244 case LogicOp::eInvert: return "Invert";
28245 case LogicOp::eOrReverse: return "OrReverse";
28246 case LogicOp::eCopyInverted: return "CopyInverted";
28247 case LogicOp::eOrInverted: return "OrInverted";
28248 case LogicOp::eNand: return "Nand";
28249 case LogicOp::eSet: return "Set";
28250 default: return "invalid";
28251 }
28252 }
28253
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028254 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028255 {
28256 switch (value)
28257 {
28258 case InternalAllocationType::eExecutable: return "Executable";
28259 default: return "invalid";
28260 }
28261 }
28262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028263 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028264 {
28265 switch (value)
28266 {
28267 case SystemAllocationScope::eCommand: return "Command";
28268 case SystemAllocationScope::eObject: return "Object";
28269 case SystemAllocationScope::eCache: return "Cache";
28270 case SystemAllocationScope::eDevice: return "Device";
28271 case SystemAllocationScope::eInstance: return "Instance";
28272 default: return "invalid";
28273 }
28274 }
28275
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028276 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028277 {
28278 switch (value)
28279 {
28280 case PhysicalDeviceType::eOther: return "Other";
28281 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28282 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28283 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28284 case PhysicalDeviceType::eCpu: return "Cpu";
28285 default: return "invalid";
28286 }
28287 }
28288
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028289 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028290 {
28291 switch (value)
28292 {
28293 case VertexInputRate::eVertex: return "Vertex";
28294 case VertexInputRate::eInstance: return "Instance";
28295 default: return "invalid";
28296 }
28297 }
28298
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028299 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028300 {
28301 switch (value)
28302 {
28303 case Format::eUndefined: return "Undefined";
28304 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28305 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28306 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28307 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28308 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28309 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28310 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28311 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28312 case Format::eR8Unorm: return "R8Unorm";
28313 case Format::eR8Snorm: return "R8Snorm";
28314 case Format::eR8Uscaled: return "R8Uscaled";
28315 case Format::eR8Sscaled: return "R8Sscaled";
28316 case Format::eR8Uint: return "R8Uint";
28317 case Format::eR8Sint: return "R8Sint";
28318 case Format::eR8Srgb: return "R8Srgb";
28319 case Format::eR8G8Unorm: return "R8G8Unorm";
28320 case Format::eR8G8Snorm: return "R8G8Snorm";
28321 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28322 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28323 case Format::eR8G8Uint: return "R8G8Uint";
28324 case Format::eR8G8Sint: return "R8G8Sint";
28325 case Format::eR8G8Srgb: return "R8G8Srgb";
28326 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28327 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28328 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28329 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28330 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28331 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28332 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28333 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28334 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28335 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28336 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28337 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28338 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28339 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28340 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28341 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28342 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28343 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28344 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28345 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28346 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28347 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28348 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28349 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28350 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28351 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28352 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28353 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28354 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28355 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28356 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28357 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28358 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28359 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28360 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28361 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28362 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28363 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28364 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28365 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28366 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28367 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28368 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28369 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28370 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28371 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28372 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28373 case Format::eR16Unorm: return "R16Unorm";
28374 case Format::eR16Snorm: return "R16Snorm";
28375 case Format::eR16Uscaled: return "R16Uscaled";
28376 case Format::eR16Sscaled: return "R16Sscaled";
28377 case Format::eR16Uint: return "R16Uint";
28378 case Format::eR16Sint: return "R16Sint";
28379 case Format::eR16Sfloat: return "R16Sfloat";
28380 case Format::eR16G16Unorm: return "R16G16Unorm";
28381 case Format::eR16G16Snorm: return "R16G16Snorm";
28382 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28383 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28384 case Format::eR16G16Uint: return "R16G16Uint";
28385 case Format::eR16G16Sint: return "R16G16Sint";
28386 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28387 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28388 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28389 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28390 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28391 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28392 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28393 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28394 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28395 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28396 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28397 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28398 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28399 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28400 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28401 case Format::eR32Uint: return "R32Uint";
28402 case Format::eR32Sint: return "R32Sint";
28403 case Format::eR32Sfloat: return "R32Sfloat";
28404 case Format::eR32G32Uint: return "R32G32Uint";
28405 case Format::eR32G32Sint: return "R32G32Sint";
28406 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28407 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28408 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28409 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28410 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28411 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28412 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28413 case Format::eR64Uint: return "R64Uint";
28414 case Format::eR64Sint: return "R64Sint";
28415 case Format::eR64Sfloat: return "R64Sfloat";
28416 case Format::eR64G64Uint: return "R64G64Uint";
28417 case Format::eR64G64Sint: return "R64G64Sint";
28418 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28419 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28420 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28421 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28422 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28423 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28424 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28425 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28426 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28427 case Format::eD16Unorm: return "D16Unorm";
28428 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28429 case Format::eD32Sfloat: return "D32Sfloat";
28430 case Format::eS8Uint: return "S8Uint";
28431 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28432 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28433 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28434 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28435 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28436 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28437 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28438 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28439 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28440 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28441 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28442 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28443 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28444 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28445 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28446 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28447 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28448 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28449 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28450 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28451 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28452 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28453 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28454 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28455 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28456 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28457 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28458 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28459 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28460 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28461 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28462 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28463 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28464 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28465 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28466 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28467 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28468 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28469 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28470 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28471 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28472 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28473 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28474 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28475 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28476 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28477 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28478 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28479 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28480 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28481 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28482 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28483 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28484 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28485 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28486 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28487 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028488 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28489 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28490 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28491 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28492 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28493 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28494 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28495 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028496 default: return "invalid";
28497 }
28498 }
28499
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028500 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028501 {
28502 switch (value)
28503 {
28504 case StructureType::eApplicationInfo: return "ApplicationInfo";
28505 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28506 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28507 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28508 case StructureType::eSubmitInfo: return "SubmitInfo";
28509 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28510 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28511 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28512 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28513 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28514 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28515 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28516 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28517 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28518 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28519 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28520 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28521 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28522 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28523 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28524 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28525 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28526 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28527 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28528 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28529 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28530 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28531 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28532 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28533 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28534 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28535 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28536 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28537 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28538 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28539 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28540 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28541 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28542 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28543 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28544 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28545 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28546 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28547 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28548 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28549 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28550 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28551 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28552 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28553 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28554 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28555 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28556 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28557 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28558 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28559 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28560 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28561 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28562 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28563 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28564 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28565 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28566 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28567 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28568 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28569 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28570 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28571 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070028572 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28573 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28574 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028575 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28576 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28577 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28578 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28579 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028580 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28581 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28582 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28583 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28584 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28585 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
28586 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
28587 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
28588 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070028589 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
28590 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
28591 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
28592 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
28593 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
28594 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
28595 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
28596 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
28597 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
28598 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
28599 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
28600 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
28601 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060028602 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070028603 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070028604 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
28605 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
28606 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
28607 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
28608 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
28609 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
28610 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
28611 case StructureType::ePhysicalDeviceProperties2KHX: return "PhysicalDeviceProperties2KHX";
28612 case StructureType::eImageFormatProperties2KHX: return "ImageFormatProperties2KHX";
28613 case StructureType::ePhysicalDeviceImageFormatInfo2KHX: return "PhysicalDeviceImageFormatInfo2KHX";
28614 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
28615 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
28616 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
28617 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
28618 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
28619 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
28620 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
28621 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
28622 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
28623 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
28624 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
28625 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
28626 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
28627 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
28628 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
28629 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
28630 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
28631 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028632 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
28633 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
28634 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
28635 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
28636 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
28637 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070028638 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028639 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
28640 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
28641 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
28642 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
28643 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028644 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070028645 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
28646 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
28647 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
28648 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028649 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Young0f183a82017-02-28 09:58:04 -070028650 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
28651 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028652 default: return "invalid";
28653 }
28654 }
28655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028656 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028657 {
28658 switch (value)
28659 {
28660 case SubpassContents::eInline: return "Inline";
28661 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
28662 default: return "invalid";
28663 }
28664 }
28665
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028666 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028667 {
28668 switch (value)
28669 {
28670 case DynamicState::eViewport: return "Viewport";
28671 case DynamicState::eScissor: return "Scissor";
28672 case DynamicState::eLineWidth: return "LineWidth";
28673 case DynamicState::eDepthBias: return "DepthBias";
28674 case DynamicState::eBlendConstants: return "BlendConstants";
28675 case DynamicState::eDepthBounds: return "DepthBounds";
28676 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
28677 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
28678 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070028679 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
28680 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
28681 default: return "invalid";
28682 }
28683 }
28684
28685 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
28686 {
28687 switch (value)
28688 {
28689 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
28690 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028691 default: return "invalid";
28692 }
28693 }
28694
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028695 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028696 {
28697 switch (value)
28698 {
28699 case QueueFlagBits::eGraphics: return "Graphics";
28700 case QueueFlagBits::eCompute: return "Compute";
28701 case QueueFlagBits::eTransfer: return "Transfer";
28702 case QueueFlagBits::eSparseBinding: return "SparseBinding";
28703 default: return "invalid";
28704 }
28705 }
28706
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028707 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028708 {
28709 if (!value) return "{}";
28710 std::string result;
28711 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
28712 if (value & QueueFlagBits::eCompute) result += "Compute | ";
28713 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
28714 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
28715 return "{" + result.substr(0, result.size() - 3) + "}";
28716 }
28717
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028718 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028719 {
28720 switch (value)
28721 {
28722 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
28723 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
28724 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
28725 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
28726 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
28727 default: return "invalid";
28728 }
28729 }
28730
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028731 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028732 {
28733 if (!value) return "{}";
28734 std::string result;
28735 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
28736 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
28737 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
28738 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
28739 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
28740 return "{" + result.substr(0, result.size() - 3) + "}";
28741 }
28742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028743 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028744 {
28745 switch (value)
28746 {
28747 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070028748 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028749 default: return "invalid";
28750 }
28751 }
28752
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028753 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028754 {
28755 if (!value) return "{}";
28756 std::string result;
28757 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070028758 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028759 return "{" + result.substr(0, result.size() - 3) + "}";
28760 }
28761
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028762 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028763 {
28764 switch (value)
28765 {
28766 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
28767 case AccessFlagBits::eIndexRead: return "IndexRead";
28768 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
28769 case AccessFlagBits::eUniformRead: return "UniformRead";
28770 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
28771 case AccessFlagBits::eShaderRead: return "ShaderRead";
28772 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
28773 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
28774 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
28775 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
28776 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
28777 case AccessFlagBits::eTransferRead: return "TransferRead";
28778 case AccessFlagBits::eTransferWrite: return "TransferWrite";
28779 case AccessFlagBits::eHostRead: return "HostRead";
28780 case AccessFlagBits::eHostWrite: return "HostWrite";
28781 case AccessFlagBits::eMemoryRead: return "MemoryRead";
28782 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028783 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
28784 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028785 default: return "invalid";
28786 }
28787 }
28788
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028789 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028790 {
28791 if (!value) return "{}";
28792 std::string result;
28793 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
28794 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
28795 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
28796 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
28797 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
28798 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
28799 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
28800 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
28801 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
28802 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
28803 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
28804 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
28805 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
28806 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
28807 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
28808 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
28809 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028810 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
28811 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028812 return "{" + result.substr(0, result.size() - 3) + "}";
28813 }
28814
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028815 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028816 {
28817 switch (value)
28818 {
28819 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
28820 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
28821 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
28822 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
28823 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
28824 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
28825 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
28826 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
28827 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
28828 default: return "invalid";
28829 }
28830 }
28831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028832 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028833 {
28834 if (!value) return "{}";
28835 std::string result;
28836 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28837 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
28838 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
28839 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
28840 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
28841 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
28842 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
28843 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
28844 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
28845 return "{" + result.substr(0, result.size() - 3) + "}";
28846 }
28847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028848 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028849 {
28850 switch (value)
28851 {
28852 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
28853 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
28854 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
28855 default: return "invalid";
28856 }
28857 }
28858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028859 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028860 {
28861 if (!value) return "{}";
28862 std::string result;
28863 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28864 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28865 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28866 return "{" + result.substr(0, result.size() - 3) + "}";
28867 }
28868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028869 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028870 {
28871 switch (value)
28872 {
28873 case ShaderStageFlagBits::eVertex: return "Vertex";
28874 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
28875 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
28876 case ShaderStageFlagBits::eGeometry: return "Geometry";
28877 case ShaderStageFlagBits::eFragment: return "Fragment";
28878 case ShaderStageFlagBits::eCompute: return "Compute";
28879 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
28880 case ShaderStageFlagBits::eAll: return "All";
28881 default: return "invalid";
28882 }
28883 }
28884
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028885 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028886 {
28887 if (!value) return "{}";
28888 std::string result;
28889 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
28890 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
28891 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
28892 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
28893 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
28894 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
28895 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
28896 if (value & ShaderStageFlagBits::eAll) result += "All | ";
28897 return "{" + result.substr(0, result.size() - 3) + "}";
28898 }
28899
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028900 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028901 {
28902 switch (value)
28903 {
28904 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
28905 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
28906 case ImageUsageFlagBits::eSampled: return "Sampled";
28907 case ImageUsageFlagBits::eStorage: return "Storage";
28908 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
28909 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
28910 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
28911 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
28912 default: return "invalid";
28913 }
28914 }
28915
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028916 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028917 {
28918 if (!value) return "{}";
28919 std::string result;
28920 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
28921 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
28922 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
28923 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
28924 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
28925 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
28926 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
28927 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
28928 return "{" + result.substr(0, result.size() - 3) + "}";
28929 }
28930
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028931 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028932 {
28933 switch (value)
28934 {
28935 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
28936 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
28937 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
28938 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
28939 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070028940 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070028941 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028942 default: return "invalid";
28943 }
28944 }
28945
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028946 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028947 {
28948 if (!value) return "{}";
28949 std::string result;
28950 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
28951 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
28952 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
28953 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
28954 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070028955 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070028956 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028957 return "{" + result.substr(0, result.size() - 3) + "}";
28958 }
28959
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028960 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028961 {
28962 switch (value)
28963 {
28964 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
28965 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
28966 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070028967 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
28968 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028969 default: return "invalid";
28970 }
28971 }
28972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028973 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028974 {
28975 if (!value) return "{}";
28976 std::string result;
28977 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
28978 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
28979 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070028980 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
28981 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028982 return "{" + result.substr(0, result.size() - 3) + "}";
28983 }
28984
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028985 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028986 {
28987 switch (value)
28988 {
28989 case ColorComponentFlagBits::eR: return "R";
28990 case ColorComponentFlagBits::eG: return "G";
28991 case ColorComponentFlagBits::eB: return "B";
28992 case ColorComponentFlagBits::eA: return "A";
28993 default: return "invalid";
28994 }
28995 }
28996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028997 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028998 {
28999 if (!value) return "{}";
29000 std::string result;
29001 if (value & ColorComponentFlagBits::eR) result += "R | ";
29002 if (value & ColorComponentFlagBits::eG) result += "G | ";
29003 if (value & ColorComponentFlagBits::eB) result += "B | ";
29004 if (value & ColorComponentFlagBits::eA) result += "A | ";
29005 return "{" + result.substr(0, result.size() - 3) + "}";
29006 }
29007
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029008 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029009 {
29010 switch (value)
29011 {
29012 case FenceCreateFlagBits::eSignaled: return "Signaled";
29013 default: return "invalid";
29014 }
29015 }
29016
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029017 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029018 {
29019 if (!value) return "{}";
29020 std::string result;
29021 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29022 return "{" + result.substr(0, result.size() - 3) + "}";
29023 }
29024
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029025 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029026 {
29027 switch (value)
29028 {
29029 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29030 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29031 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29032 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29033 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29034 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29035 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29036 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29037 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29038 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29039 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29040 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29041 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29042 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029043 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29044 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029045 default: return "invalid";
29046 }
29047 }
29048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029049 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029050 {
29051 if (!value) return "{}";
29052 std::string result;
29053 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29054 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29055 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29056 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29057 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29058 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29059 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29060 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29061 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29062 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29063 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29064 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29065 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29066 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029067 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29068 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029069 return "{" + result.substr(0, result.size() - 3) + "}";
29070 }
29071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029072 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029073 {
29074 switch (value)
29075 {
29076 case QueryControlFlagBits::ePrecise: return "Precise";
29077 default: return "invalid";
29078 }
29079 }
29080
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029081 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029082 {
29083 if (!value) return "{}";
29084 std::string result;
29085 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29086 return "{" + result.substr(0, result.size() - 3) + "}";
29087 }
29088
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029089 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029090 {
29091 switch (value)
29092 {
29093 case QueryResultFlagBits::e64: return "64";
29094 case QueryResultFlagBits::eWait: return "Wait";
29095 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29096 case QueryResultFlagBits::ePartial: return "Partial";
29097 default: return "invalid";
29098 }
29099 }
29100
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029101 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029102 {
29103 if (!value) return "{}";
29104 std::string result;
29105 if (value & QueryResultFlagBits::e64) result += "64 | ";
29106 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29107 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29108 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29109 return "{" + result.substr(0, result.size() - 3) + "}";
29110 }
29111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029112 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029113 {
29114 switch (value)
29115 {
29116 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29117 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29118 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29119 default: return "invalid";
29120 }
29121 }
29122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029123 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029124 {
29125 if (!value) return "{}";
29126 std::string result;
29127 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29128 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29129 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29130 return "{" + result.substr(0, result.size() - 3) + "}";
29131 }
29132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029133 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029134 {
29135 switch (value)
29136 {
29137 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29138 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29139 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29140 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29141 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29142 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29143 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29144 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29145 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29146 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29147 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29148 default: return "invalid";
29149 }
29150 }
29151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029152 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029153 {
29154 if (!value) return "{}";
29155 std::string result;
29156 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29157 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29158 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29159 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29160 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29161 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29162 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29163 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29164 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29165 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29166 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29167 return "{" + result.substr(0, result.size() - 3) + "}";
29168 }
29169
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029170 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029171 {
29172 switch (value)
29173 {
29174 case ImageAspectFlagBits::eColor: return "Color";
29175 case ImageAspectFlagBits::eDepth: return "Depth";
29176 case ImageAspectFlagBits::eStencil: return "Stencil";
29177 case ImageAspectFlagBits::eMetadata: return "Metadata";
29178 default: return "invalid";
29179 }
29180 }
29181
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029182 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029183 {
29184 if (!value) return "{}";
29185 std::string result;
29186 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29187 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29188 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29189 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29190 return "{" + result.substr(0, result.size() - 3) + "}";
29191 }
29192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029193 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029194 {
29195 switch (value)
29196 {
29197 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29198 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29199 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29200 default: return "invalid";
29201 }
29202 }
29203
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029204 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029205 {
29206 if (!value) return "{}";
29207 std::string result;
29208 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29209 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29210 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29211 return "{" + result.substr(0, result.size() - 3) + "}";
29212 }
29213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029214 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029215 {
29216 switch (value)
29217 {
29218 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29219 default: return "invalid";
29220 }
29221 }
29222
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029223 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029224 {
29225 if (!value) return "{}";
29226 std::string result;
29227 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29228 return "{" + result.substr(0, result.size() - 3) + "}";
29229 }
29230
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029231 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029232 {
29233 switch (value)
29234 {
29235 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29236 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29237 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29238 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29239 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29240 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29241 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29242 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29243 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29244 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29245 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29246 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29247 case PipelineStageFlagBits::eTransfer: return "Transfer";
29248 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29249 case PipelineStageFlagBits::eHost: return "Host";
29250 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29251 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029252 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029253 default: return "invalid";
29254 }
29255 }
29256
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029257 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029258 {
29259 if (!value) return "{}";
29260 std::string result;
29261 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29262 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29263 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29264 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29265 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29266 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29267 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29268 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29269 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29270 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29271 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29272 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29273 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29274 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29275 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29276 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29277 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029278 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029279 return "{" + result.substr(0, result.size() - 3) + "}";
29280 }
29281
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029282 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029283 {
29284 switch (value)
29285 {
29286 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29287 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29288 default: return "invalid";
29289 }
29290 }
29291
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029292 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029293 {
29294 if (!value) return "{}";
29295 std::string result;
29296 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29297 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29298 return "{" + result.substr(0, result.size() - 3) + "}";
29299 }
29300
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029301 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029302 {
29303 switch (value)
29304 {
29305 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29306 default: return "invalid";
29307 }
29308 }
29309
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029310 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029311 {
29312 if (!value) return "{}";
29313 std::string result;
29314 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29315 return "{" + result.substr(0, result.size() - 3) + "}";
29316 }
29317
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029318 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029319 {
29320 switch (value)
29321 {
29322 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29323 default: return "invalid";
29324 }
29325 }
29326
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029327 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029328 {
29329 if (!value) return "{}";
29330 std::string result;
29331 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29332 return "{" + result.substr(0, result.size() - 3) + "}";
29333 }
29334
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029335 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029336 {
29337 switch (value)
29338 {
29339 case SampleCountFlagBits::e1: return "1";
29340 case SampleCountFlagBits::e2: return "2";
29341 case SampleCountFlagBits::e4: return "4";
29342 case SampleCountFlagBits::e8: return "8";
29343 case SampleCountFlagBits::e16: return "16";
29344 case SampleCountFlagBits::e32: return "32";
29345 case SampleCountFlagBits::e64: return "64";
29346 default: return "invalid";
29347 }
29348 }
29349
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029350 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029351 {
29352 if (!value) return "{}";
29353 std::string result;
29354 if (value & SampleCountFlagBits::e1) result += "1 | ";
29355 if (value & SampleCountFlagBits::e2) result += "2 | ";
29356 if (value & SampleCountFlagBits::e4) result += "4 | ";
29357 if (value & SampleCountFlagBits::e8) result += "8 | ";
29358 if (value & SampleCountFlagBits::e16) result += "16 | ";
29359 if (value & SampleCountFlagBits::e32) result += "32 | ";
29360 if (value & SampleCountFlagBits::e64) result += "64 | ";
29361 return "{" + result.substr(0, result.size() - 3) + "}";
29362 }
29363
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029364 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029365 {
29366 switch (value)
29367 {
29368 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29369 default: return "invalid";
29370 }
29371 }
29372
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029373 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029374 {
29375 if (!value) return "{}";
29376 std::string result;
29377 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29378 return "{" + result.substr(0, result.size() - 3) + "}";
29379 }
29380
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029381 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029382 {
29383 switch (value)
29384 {
29385 case StencilFaceFlagBits::eFront: return "Front";
29386 case StencilFaceFlagBits::eBack: return "Back";
29387 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29388 default: return "invalid";
29389 }
29390 }
29391
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029392 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029393 {
29394 if (!value) return "{}";
29395 std::string result;
29396 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29397 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29398 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29399 return "{" + result.substr(0, result.size() - 3) + "}";
29400 }
29401
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029402 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029403 {
29404 switch (value)
29405 {
29406 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29407 default: return "invalid";
29408 }
29409 }
29410
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029411 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029412 {
29413 if (!value) return "{}";
29414 std::string result;
29415 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29416 return "{" + result.substr(0, result.size() - 3) + "}";
29417 }
29418
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029419 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029420 {
29421 switch (value)
29422 {
29423 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029424 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29425 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029426 default: return "invalid";
29427 }
29428 }
29429
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029430 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029431 {
29432 if (!value) return "{}";
29433 std::string result;
29434 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029435 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29436 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029437 return "{" + result.substr(0, result.size() - 3) + "}";
29438 }
29439
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029440 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029441 {
29442 switch (value)
29443 {
29444 case PresentModeKHR::eImmediate: return "Immediate";
29445 case PresentModeKHR::eMailbox: return "Mailbox";
29446 case PresentModeKHR::eFifo: return "Fifo";
29447 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
29448 default: return "invalid";
29449 }
29450 }
29451
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029452 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029453 {
29454 switch (value)
29455 {
29456 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
29457 default: return "invalid";
29458 }
29459 }
29460
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029461 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029462 {
29463 switch (value)
29464 {
29465 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29466 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29467 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29468 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29469 default: return "invalid";
29470 }
29471 }
29472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029473 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029474 {
29475 if (!value) return "{}";
29476 std::string result;
29477 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29478 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29479 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29480 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29481 return "{" + result.substr(0, result.size() - 3) + "}";
29482 }
29483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029484 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029485 {
29486 switch (value)
29487 {
29488 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29489 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29490 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29491 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29492 default: return "invalid";
29493 }
29494 }
29495
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029496 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029497 {
29498 if (!value) return "{}";
29499 std::string result;
29500 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29501 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29502 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29503 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29504 return "{" + result.substr(0, result.size() - 3) + "}";
29505 }
29506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029507 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029508 {
29509 switch (value)
29510 {
29511 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29512 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29513 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29514 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29515 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29516 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29517 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29518 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29519 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29520 default: return "invalid";
29521 }
29522 }
29523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029524 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029525 {
29526 if (!value) return "{}";
29527 std::string result;
29528 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
29529 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
29530 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
29531 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
29532 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
29533 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
29534 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
29535 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
29536 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
29537 return "{" + result.substr(0, result.size() - 3) + "}";
29538 }
29539
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029540 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029541 {
29542 switch (value)
29543 {
29544 case DebugReportFlagBitsEXT::eInformation: return "Information";
29545 case DebugReportFlagBitsEXT::eWarning: return "Warning";
29546 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
29547 case DebugReportFlagBitsEXT::eError: return "Error";
29548 case DebugReportFlagBitsEXT::eDebug: return "Debug";
29549 default: return "invalid";
29550 }
29551 }
29552
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029553 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029554 {
29555 if (!value) return "{}";
29556 std::string result;
29557 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
29558 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
29559 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
29560 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
29561 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
29562 return "{" + result.substr(0, result.size() - 3) + "}";
29563 }
29564
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029565 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029566 {
29567 switch (value)
29568 {
29569 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
29570 case DebugReportObjectTypeEXT::eInstance: return "Instance";
29571 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
29572 case DebugReportObjectTypeEXT::eDevice: return "Device";
29573 case DebugReportObjectTypeEXT::eQueue: return "Queue";
29574 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
29575 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
29576 case DebugReportObjectTypeEXT::eFence: return "Fence";
29577 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
29578 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
29579 case DebugReportObjectTypeEXT::eImage: return "Image";
29580 case DebugReportObjectTypeEXT::eEvent: return "Event";
29581 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
29582 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
29583 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
29584 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
29585 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
29586 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
29587 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
29588 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
29589 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
29590 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
29591 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
29592 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
29593 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
29594 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
29595 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
29596 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
29597 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029598 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
29599 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
29600 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
29601 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029602 default: return "invalid";
29603 }
29604 }
29605
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029606 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029607 {
29608 switch (value)
29609 {
29610 case DebugReportErrorEXT::eNone: return "None";
29611 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
29612 default: return "invalid";
29613 }
29614 }
29615
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029616 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029617 {
29618 switch (value)
29619 {
29620 case RasterizationOrderAMD::eStrict: return "Strict";
29621 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
29622 default: return "invalid";
29623 }
29624 }
29625
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029626 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029627 {
29628 switch (value)
29629 {
29630 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
29631 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29632 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
29633 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
29634 default: return "invalid";
29635 }
29636 }
29637
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029638 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029639 {
29640 if (!value) return "{}";
29641 std::string result;
29642 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
29643 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29644 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
29645 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
29646 return "{" + result.substr(0, result.size() - 3) + "}";
29647 }
29648
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029649 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029650 {
29651 switch (value)
29652 {
29653 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
29654 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
29655 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
29656 default: return "invalid";
29657 }
29658 }
29659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029660 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029661 {
29662 if (!value) return "{}";
29663 std::string result;
29664 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
29665 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
29666 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
29667 return "{" + result.substr(0, result.size() - 3) + "}";
29668 }
29669
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029670 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060029671 {
29672 switch (value)
29673 {
29674 case ValidationCheckEXT::eAll: return "All";
29675 default: return "invalid";
29676 }
29677 }
29678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029679 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
29680 {
29681 switch (value)
29682 {
29683 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
29684 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
29685 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
29686 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
29687 default: return "invalid";
29688 }
29689 }
29690
29691 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
29692 {
29693 if (!value) return "{}";
29694 std::string result;
29695 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
29696 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
29697 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
29698 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
29699 return "{" + result.substr(0, result.size() - 3) + "}";
29700 }
29701
29702 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
29703 {
29704 switch (value)
29705 {
29706 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
29707 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
29708 default: return "invalid";
29709 }
29710 }
29711
29712 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
29713 {
29714 if (!value) return "{}";
29715 std::string result;
29716 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
29717 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
29718 return "{" + result.substr(0, result.size() - 3) + "}";
29719 }
29720
29721 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
29722 {
29723 switch (value)
29724 {
29725 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
29726 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
29727 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
29728 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
29729 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
29730 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
29731 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
29732 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
29733 default: return "invalid";
29734 }
29735 }
29736
29737 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
29738 {
29739 switch (value)
29740 {
29741 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
29742 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
29743 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
29744 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
29745 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
29746 default: return "invalid";
29747 }
29748 }
29749
Mark Young0f183a82017-02-28 09:58:04 -070029750 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
29751 {
29752 switch (value)
29753 {
29754 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
29755 default: return "invalid";
29756 }
29757 }
29758
29759 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
29760 {
29761 if (!value) return "{}";
29762 std::string result;
29763 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
29764 return "{" + result.substr(0, result.size() - 3) + "}";
29765 }
29766
29767 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
29768 {
29769 switch (value)
29770 {
29771 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29772 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29773 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29774 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
29775 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
29776 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
29777 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
29778 default: return "invalid";
29779 }
29780 }
29781
29782 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
29783 {
29784 if (!value) return "{}";
29785 std::string result;
29786 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29787 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29788 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29789 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
29790 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
29791 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
29792 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
29793 return "{" + result.substr(0, result.size() - 3) + "}";
29794 }
29795
29796 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
29797 {
29798 switch (value)
29799 {
29800 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
29801 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
29802 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
29803 default: return "invalid";
29804 }
29805 }
29806
29807 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
29808 {
29809 if (!value) return "{}";
29810 std::string result;
29811 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
29812 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29813 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29814 return "{" + result.substr(0, result.size() - 3) + "}";
29815 }
29816
29817 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
29818 {
29819 switch (value)
29820 {
29821 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29822 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29823 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29824 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
29825 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
29826 default: return "invalid";
29827 }
29828 }
29829
29830 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
29831 {
29832 if (!value) return "{}";
29833 std::string result;
29834 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29835 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29836 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29837 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
29838 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
29839 return "{" + result.substr(0, result.size() - 3) + "}";
29840 }
29841
29842 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
29843 {
29844 switch (value)
29845 {
29846 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
29847 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
29848 default: return "invalid";
29849 }
29850 }
29851
29852 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
29853 {
29854 if (!value) return "{}";
29855 std::string result;
29856 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
29857 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
29858 return "{" + result.substr(0, result.size() - 3) + "}";
29859 }
29860
Mark Young39389872017-01-19 21:10:49 -070029861 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
29862 {
29863 switch (value)
29864 {
29865 case SurfaceCounterFlagBitsEXT::eVblankExt: return "VblankExt";
29866 default: return "invalid";
29867 }
29868 }
29869
29870 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
29871 {
29872 if (!value) return "{}";
29873 std::string result;
29874 if (value & SurfaceCounterFlagBitsEXT::eVblankExt) result += "VblankExt | ";
29875 return "{" + result.substr(0, result.size() - 3) + "}";
29876 }
29877
29878 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
29879 {
29880 switch (value)
29881 {
29882 case DisplayPowerStateEXT::eOff: return "Off";
29883 case DisplayPowerStateEXT::eSuspend: return "Suspend";
29884 case DisplayPowerStateEXT::eOn: return "On";
29885 default: return "invalid";
29886 }
29887 }
29888
29889 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
29890 {
29891 switch (value)
29892 {
29893 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
29894 default: return "invalid";
29895 }
29896 }
29897
29898 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
29899 {
29900 switch (value)
29901 {
29902 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
29903 default: return "invalid";
29904 }
29905 }
29906
Mark Young0f183a82017-02-28 09:58:04 -070029907 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
29908 {
29909 switch (value)
29910 {
29911 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
29912 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
29913 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
29914 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
29915 default: return "invalid";
29916 }
29917 }
29918
29919 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
29920 {
29921 if (!value) return "{}";
29922 std::string result;
29923 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
29924 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
29925 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
29926 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
29927 return "{" + result.substr(0, result.size() - 3) + "}";
29928 }
29929
29930 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
29931 {
29932 switch (value)
29933 {
29934 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
29935 default: return "invalid";
29936 }
29937 }
29938
29939 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
29940 {
29941 if (!value) return "{}";
29942 std::string result;
29943 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
29944 return "{" + result.substr(0, result.size() - 3) + "}";
29945 }
29946
29947 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
29948 {
29949 switch (value)
29950 {
29951 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
29952 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
29953 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
29954 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
29955 default: return "invalid";
29956 }
29957 }
29958
29959 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
29960 {
29961 if (!value) return "{}";
29962 std::string result;
29963 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
29964 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
29965 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
29966 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
29967 return "{" + result.substr(0, result.size() - 3) + "}";
29968 }
29969
29970 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
29971 {
29972 switch (value)
29973 {
29974 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
29975 default: return "invalid";
29976 }
29977 }
29978
29979 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
29980 {
29981 if (!value) return "{}";
29982 std::string result;
29983 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
29984 return "{" + result.substr(0, result.size() - 3) + "}";
29985 }
29986
29987 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
29988 {
29989 switch (value)
29990 {
29991 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
29992 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
29993 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
29994 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
29995 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
29996 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
29997 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
29998 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
29999 default: return "invalid";
30000 }
30001 }
30002
30003 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30004 {
30005 switch (value)
30006 {
30007 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30008 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30009 default: return "invalid";
30010 }
30011 }
30012
30013 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30014 {
30015 switch (value)
30016 {
30017 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30018 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30019 default: return "invalid";
30020 }
30021 }
30022
30023 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30024 {
30025 if (!value) return "{}";
30026 std::string result;
30027 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30028 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30029 return "{" + result.substr(0, result.size() - 3) + "}";
30030 }
30031
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030032} // namespace vk
30033
30034#endif